public void TestPushStateTransition() { this.Test(async(IActorRuntime runtime) => { var op = new EventGroupList(); runtime.CreateActor(typeof(M1), null, op); await this.GetResultAsync(op.Task); var actual = op.ToString(); Assert.Equal("InitOnEntry, CurrentState=Final, OnFinal", actual); }); }
public void TestReceiveEventStatementWithMultipleTypes() { this.Test(async(IActorRuntime runtime) => { var op = new EventGroupList(); var id = runtime.CreateActor(typeof(M3), null, op); runtime.SendEvent(id, new E2()); await this.GetResultAsync(op.Task); var actual = op.ToString(); Assert.Equal("Receiving, Received:E2", actual); }); }
public void TestGotoStateTransitionAfterSend() { this.Test(async(IActorRuntime runtime) => { var op = new EventGroupList(); var id = runtime.CreateActor(typeof(M2), null, op); runtime.SendEvent(id, new Message()); await this.GetResultAsync(op.Task); var actual = op.ToString(); Assert.Equal("InitOnEntry, CurrentState=Final, FinalOnEntry", actual); }); }
public void TestClassEventHandlerWildcardOverride() { this.Test(async(IActorRuntime runtime) => { var op = new EventGroupList(); var id = runtime.CreateActor(typeof(M4), null, op); runtime.SendEvent(id, new E1()); await this.GetResultAsync(op.Task); var actual = op.ToString(); Assert.Equal("HandleWildCard", actual); }); }
public void TestClassEventHandlerDeferOverride() { this.Test(async(IActorRuntime runtime) => { var op = new EventGroupList(); var id = runtime.CreateActor(typeof(M3), null, op); runtime.SendEvent(id, new E1()); await this.GetResultAsync(op.Task); var actual = op.ToString(); Assert.Equal("OnInitEntry, CurrentState=Active, HandleActiveE1", actual); }); }
public void TestHandleEventInStateMachine() { this.Test(async(IActorRuntime runtime) => { var op = new EventGroupList(); var id = runtime.CreateActor(typeof(M1), null, op); runtime.SendEvent(id, new E1()); await this.GetResultAsync(op.Task); var actual = op.ToString(); Assert.Equal("InitOnEntry, HandleE1", actual); }); }
public void TestInheritedDuplicateDeferHandler() { this.Test(async(IActorRuntime runtime) => { var op = new EventGroupList(); var id = runtime.CreateActor(typeof(M9), null, op); runtime.SendEvent(id, new E1()); // should be deferred runtime.SendEvent(id, new E2()); // should be ignored runtime.SendEvent(id, new E3()); // should trigger goto, where deferred E1 can be handled. await this.GetResultAsync(op.Task); var actual = op.ToString(); Assert.Equal("CurrentState=Final, HandleEvent:E1", actual); }); }
public void TestPushStateInheritance() { this.Test(async(IActorRuntime runtime) => { var op = new EventGroupList(); var id = runtime.CreateActor(typeof(M5), null, op); runtime.SendEvent(id, new E2()); // should be deferred runtime.SendEvent(id, new E1()); // push runtime.SendEvent(id, new E3()); // ignored runtime.SendEvent(id, new E4()); // inherited handler await this.GetResultAsync(op.Task); var actual = op.ToString(); Assert.Equal("CurrentState=Final, HandleEvent, FinalEvent", actual); }); }
public void TestPushPopTransition() { this.Test(async(IActorRuntime runtime) => { var op = new EventGroupList(); var id = runtime.CreateActor(typeof(M4), null, op); runtime.SendEvent(id, new E1()); runtime.SendEvent(id, new E2()); await this.GetResultAsync(op.Task); var actual = op.ToString(); // the CurrentState=Init that happens as a result of Pop is timing sensitive and // there is no state machine call back to tell us when this happens, so we just use // a Contains test here to deal with that non-determinism. Assert.Contains("InitOnEntry, CurrentState=Final, Pop", actual); }); }
public override void EventCtrl() { EventGroupList.ForEach(a => a.Update(this)); EventsExecutionList.ForEach(a => a.Update(this)); }
private void Start() { relationshipsController = FindObjectOfType <RelationshipsController>(); _eventGroupList = JsonUtility.FromJson <EventGroupList>(jsonEventList.text); }