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 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);
        }