'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 |
