'Setting state of a state machine for test reasons

for the implementation of a unit test I need to setup a specific state of an object. As the state is implemented with a state machine, MDriven rejects the direct assignment of the state value to the attribute.

I could maybe trigger through the complete state machine until I reach the needed state but I assume that there is an easier way to set the state to a specific value that is rather hidden as it normlaly isn't supposed to work that way.

Does anybody know how this could be done?



Solution 1:[1]

        public void StateMachineForceState(string NewState)
    { //use with caution
        string ForceMode = "self.stateMachineForceMode('TheStateAttribute')";
        string close = "self.TheStateAttribute :='close'";
        string open = "self.TheStateAttribute='open'";
        Eco.Handles.DefaultEcoSpace es = this.AsIObject().ServiceProvider().GetEcoService<IEcoSpaceService>() as Eco.Handles.DefaultEcoSpace;
        switch (NewState)
        {
            case "close":
                es.ActionLanguage.Execute(this, ForceMode);
                es.ActionLanguage.Execute(this, close);
                break;
            case "open":
                es.ActionLanguage.Execute(this, ForceMode);
                es.ActionLanguage.Execute(this, open);
                break;
            default:
                break;
        }
    }

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Steve.Au