public void resumeFromTaskTest() { SyncTriggerSystem system = createSystem(); int i = 0; var task1 = system.doTask( game => game.trigger.pauseTask(game.trigger.currentTask), game => { Assert.AreEqual(1, game.trigger.currentTask.id); Assert.AreEqual(0, game.trigger.getPausedTasks().Length); }, game => i++); Assert.AreEqual(1, task1.id); Assert.AreEqual(SyncTaskState.paused, task1.state); Assert.AreEqual(0, i); var task2 = system.doTask( game => game.trigger.resumeTask(task1), game => Assert.AreEqual(2, game.trigger.currentTask.id), game => i++); Assert.AreEqual(2, task2.id); Assert.AreEqual(2, i); }
public void pauseAndResumeFromTaskTreeTest() { SyncTriggerSystem system = createSystem(); SyncTask task = system.doTask("Use", useAction1,//在AskTask暂停了 useAction2); void useAction1(CardEngine g1) { g1.trigger.doTask("Ask", askAction1, askAction2); void askAction1(CardEngine g2) { g2.trigger.currentTask.parent.context["i"] = 1; } void askAction2(CardEngine g2) { g2.trigger.pauseTask(g2.trigger.currentTask); } } void useAction2(CardEngine g1) { g1.trigger.currentTask.context["i"] = 2; } Assert.AreEqual(1, task.context["i"]); Assert.AreEqual(1, system.getPausedTasks().Count()); system.resumeTask(system.getPausedTasks().First()); Assert.AreEqual(2, task.context["i"]); Assert.AreEqual(0, system.getPausedTasks().Count()); }
public void reponseTest() { SyncTriggerSystem system = createSystem(); SyncTask task = system.request(1, new EventContext("discover") { { "cards", new int[] { 1, 2, 3 } } }, 3, ALambda.doNothing, new FLambda <bool>(game => { EventContext context = game.trigger.currentTask.context; int[] cards = context.getVar <int[]>("cards"); int card = context.getVar <int>("card"); return(cards.Contains(card)); })); task = system.response(1, new EventContext("discover") { { "card", 4 } }); Assert.AreEqual(SyncTaskState.paused, task.state); task = system.response(2, new EventContext("discover") { { "card", 3 } }); Assert.AreEqual(SyncTaskState.paused, task.state); task = system.response(1, new EventContext("discover") { { "card", 3 } }); Assert.AreEqual(SyncTaskState.finished, task.state); }
public void doEventWithPriorTrigTest() { SyncTriggerSystem system = createSystem(); int i = 0; system.regTrigBfr("TestEvent", new SyncTrigger(game => { return(1); }, game => { if (i == 1) { i = 2; } })); system.regTrigBfr("TestEvent", new SyncTrigger(game => { return(2); }, game => { if (i == 0) { i = 1; } })); system.doEvent(new EventContext("TestEvent"), game => { if (i == 2) { i = 3; } }); Assert.AreEqual(3, i); }
public void doEventWithTriggerTest() { SyncTriggerSystem system = createSystem(); int a = 0, b = 0; system.regTrigBfr("TestEvent", new SyncTrigger(game => { return(game.trigger.currentTask.context.hasVar("b")); }, game => { b = game.trigger.currentTask.context.getVar <int>("b"); })); system.regTrigAft("TestEvent", new SyncTrigger(game => { return(game.trigger.currentTask.context.hasVar("a")); }, game => { a = game.trigger.currentTask.context.getVar <int>("a"); })); system.doEvent(new EventContext("TestEvent") { { "a", 1 }, { "b", 2 } }); Assert.AreEqual(2, b); Assert.AreEqual(1, a); }
public void pauseResumeFromOtherTaskTreeTest() { SyncTriggerSystem system = createSystem(); SyncTask taskUse = system.doTask("Use", useAction1, useAction2); void useAction1(CardEngine g1) { g1.trigger.doTask("Ask", askAction1, askAction2); void askAction1(CardEngine g2) { g2.trigger.currentTask.parent.context["i"] = 1; } void askAction2(CardEngine g2) { g2.trigger.pauseTask(g2.trigger.currentTask); } } void useAction2(CardEngine g1) { int i = g1.trigger.currentTask.context.getVar <int>(nameof(i)); g1.trigger.currentTask.context.setVar(nameof(i), i * 2); } Assert.AreEqual(1, taskUse.context["i"]); Assert.AreEqual(1, system.getPausedTasks().Count()); SyncTask taskSkill = system.doTask("Skill", skillAction1, skillAction2, skillAction3); void skillAction1(CardEngine g1) { g1.trigger.getPausedTasks()[0].parent.context["i"] = 2; } void skillAction2(CardEngine g1) { g1.trigger.resumeTask(g1.trigger.getPausedTasks()[0]); } void skillAction3(CardEngine g1) { g1.trigger.currentTask.context["j"] = 3; } Assert.AreEqual(4, taskUse.context["i"]); Assert.AreEqual(0, system.getPausedTasks().Count()); Assert.AreEqual(3, taskSkill.context["j"]); }
public void askAndGetRequestsTest() { SyncTriggerSystem system = createSystem(); SyncTask task = system.request(1, new EventContext("discover") { { "cards", new int[] { 1, 2, 3 } } }, float.MaxValue, null); Assert.AreEqual(SyncTaskState.paused, task.state); Assert.AreEqual(task, system.getAllRequestTasks()[0]); }
public void doTriggerTest() { SyncTriggerSystem system = createSystem(); float f = 0; SyncTrigger trigger = new SyncTrigger( g1 => f += 1, g1 => f += 1); system.doTrigger(trigger); Assert.AreEqual(2, f); }
public void stopTaskTest() { SyncTriggerSystem system = createSystem(); int i = 0; var task = system.doTask( game => i++, game => game.trigger.stopTask(game.trigger.currentTask), game => i++); Assert.AreEqual(SyncTaskState.finished, task.state); Assert.AreEqual(1, i); }
public void taskTreeTest() { SyncTriggerSystem system = createSystem(); int i = 0; var task = system.doTask( g1 => g1.trigger.doTask(g2 => i++), g1 => g1.trigger.doTask(g2 => i++), g1 => g1.trigger.doTask(g2 => Assert.NotNull(g2.trigger.currentTask.parent))); Assert.AreEqual(3, task.getChildren().Length); Assert.AreEqual(2, i); }
public void doEventTest() { SyncTriggerSystem system = createSystem(); int i = 0; system.doEvent(new EventContext("Test") { { "i", 1 } }, game => { i = game.trigger.currentTask.context.getVar <int>("i"); }); Assert.AreEqual(1, i); }
public IEnumerator timeoutTest() { SyncTriggerSystem system = createSystem(); bool flag = false; SyncTask task = system.request(1, new EventContext("discover") { { "cards", new int[] { 1, 2, 3 } } }, 3, new ALambda(game => flag = true)); yield return(new WaitForSeconds(3)); Assert.AreEqual(SyncTaskState.finished, task.state); Assert.AreEqual(0, system.getAllRequestTasks().Length); Assert.True(flag); }
public void doTaskTest() { SyncTriggerSystem system = createSystem(); int i = 0, j = 0, k = 0; var task = system.doTask( game => i = 1, game => j = 2, game => k = 3); Assert.NotNull(task); Assert.AreEqual(1, i); Assert.AreEqual(2, j); Assert.AreEqual(3, k); }
public IEnumerator getRemainedTimeTest() { SyncTriggerSystem system = createSystem(); SyncTask task = system.request(1, new EventContext("discover") { { "cards", new int[] { 1, 2, 3 } } }, 3, ALambda.doNothing); yield return(new WaitForSeconds(1)); Assert.True(1 < system.getRemainedTime(task) && system.getRemainedTime(task) <= 2); yield return(new WaitForSeconds(3)); Assert.AreEqual(0, system.getRemainedTime(task)); }
public IEnumerator timeoutResponseTest() { SyncTriggerSystem system = createSystem(); SyncTask task = system.request(0, new EventContext("discover") { { "cards", new int[] { 1, 2, 3 } } }, 3, ALambda.doNothing); Assert.AreEqual(task, system.getPausedTasks()[0]); yield return(new WaitForSeconds(3)); Assert.AreEqual(0, system.getPausedTasks().Length); system.response(0, new EventContext("discover") { { "card", 3 } }); Assert.AreEqual(0, system.getPausedTasks().Length); }
public IEnumerator delayedResponseTest() { SyncTriggerSystem system = createSystem(); SyncTask task = system.request(0, new EventContext("discover") { { "cards", new int[] { 1, 2, 3 } } }, 3, ALambda.doNothing); Assert.AreEqual(task, system.getPausedTasks()[0]); yield return(new WaitForSeconds(1)); system.response(0, new EventContext("discover") { { "card", 3 } }); Assert.False(system.getPausedTasks().Contains(task)); Assert.AreEqual(SyncTaskState.finished, task.state); }
public void regGetUnregTest() { SyncTriggerSystem system = createSystem(); Assert.AreEqual(0, system.getTrigBfr("Test").Count()); Assert.AreEqual(0, system.getTrigAft("Test").Count()); SyncTrigger t1 = new SyncTrigger(); SyncTrigger t2 = new SyncTrigger(); system.regTrigBfr("Test", t1); system.regTrigAft("Test", t2); Assert.AreEqual(1, system.getTrigBfr("Test").Count()); Assert.AreEqual(t1, system.getTrigBfr("Test").First()); Assert.AreEqual(1, system.getTrigAft("Test").Count()); Assert.AreEqual(t2, system.getTrigAft("Test").First()); system.unregTrigBfr("Test", t1); system.unregTrigAft("Test", t2); Assert.AreEqual(0, system.getTrigBfr("Test").Count()); Assert.AreEqual(0, system.getTrigAft("Test").Count()); }
public void pauseAndResumeTest() { SyncTriggerSystem system = createSystem(); int i = 0; var task = system.doTask( game => i++, game => i++, game => game.trigger.pauseTask(game.trigger.currentTask), game => i++); Assert.Null(system.currentTask); Assert.AreEqual(SyncTaskState.paused, task.state); Assert.AreEqual(task, system.getPausedTasks()[0]); Assert.AreEqual(2, i); system.resumeTask(task); Assert.AreEqual(SyncTaskState.finished, task.state); Assert.AreEqual(0, system.getPausedTasks().Length); Assert.AreEqual(3, i); }