public void FiniteStateMachineTest()
        {
            TestLauncherActor.Test(() =>
            {
                var behaviors = new List <FsmBehavior <string, int> >();
                behaviors.Add(new FsmBehavior <string, int>("StartState", "MidState", i => { }, i => i == 1));
                behaviors.Add(new FsmBehavior <string, int>("MidState", "EndState", i => { }, i => i == 2));
                var fsmActor = new FsmActor <string, int>("StartState", behaviors);

                var currentState1 = fsmActor.GetCurrentState();
                Assert.IsTrue(currentState1.Result() == "StartState");

                fsmActor.SendMessage("StartState", 1);

                var currentState2 = fsmActor.GetCurrentState();
                Assert.IsTrue(currentState2.Result() == "MidState");

                fsmActor.SendMessage("MidState", 2);

                var currentState3 = fsmActor.GetCurrentState();
                Assert.IsTrue(currentState3.Result() == "EndState");

                fsmActor.SendMessage("MidState", 3);

                // unchanged shoud be
                var currentState4 = fsmActor.GetCurrentState();
                Assert.IsTrue(currentState4.Result() == "EndState");
            });
        }
Example #2
0
 public void TestActionActor2()
 {
     TestLauncherActor.Test(
         () =>
     {
         ConcurrentDictionary <int, string> dico = new ConcurrentDictionary <int, string>();
         var future = new Future <int, string>();
         var act    = new ActionActor();
         act.SendAction(() =>
         {
             var tst = new ActionActor <int, string>();
             tst.SendAction((i, t) => dico[i] = t, 1, "test1");
             tst.SendAction((i, t) => dico[i] = t, 2, "test2");
             tst.SendAction((i, t) => dico[i] = t, 3, "test3");
             tst.SendAction(() =>
             {
                 var s = string.Concat(dico.Values);
                 future.SendMessage(dico.Count, s);
             });
         });
         var result = future.Result();
         Assert.AreEqual(3, result.Item1);
         Assert.AreEqual("test1test2test3", result.Item2);
     }
         );
 }
Example #3
0
 public void TestActionActor()
 {
     TestLauncherActor.Test(
         () =>
     {
         ConcurrentQueue <string> queue = new ConcurrentQueue <string>();
         var act    = new ActionActor();
         var future = new Future <int>();
         act.SendAction(() =>
         {
             var tst = new ActionActor <string>();
             tst.SendAction((t) =>
             {
                 queue.Enqueue(t);
             }, "test1");
             tst.SendAction((t) =>
             {
                 queue.Enqueue(t);
             }, "test2");
             tst.SendAction((t) =>
             {
                 queue.Enqueue(t);
             }, "test3");
             tst.SendAction(() =>
             {
                 future.SendMessage(queue.Count);
             });
         });
         Assert.AreEqual(3, future.Result());
     }
         );
 }
        public static void Test(TestContext testContext, Action action, int timeOutMS)
        {
            var launcher = new TestLauncherActor();

            launcher.SendAction(
                () =>
            {
                try
                {
                    action();
                    launcher.Finish();
                }
                catch (Exception e)
                {
                    launcher.fLauncherException = e;
                    launcher.Fail();
                    if (testContext != null)
                    {
                        testContext.WriteLine(e.Message);
                        testContext.WriteLine(e.StackTrace);
                    }
                    throw;
                }
            });

            Task <bool> testResult = launcher.Wait(timeOutMS);

            if (launcher.fLauncherException != null)
            {
                throw new TestLauncherException(launcher.fLauncherException.Message, launcher.fLauncherException);
            }
            Assert.IsTrue(testResult.Result, "Test Time Out");
        }
        public void Setup()
        {
            fLauncher = new TestLauncherActor();
            var act = new DirectoryActor();

            Assert.IsNotNull(act, "Can't create Directory Actor");
        }
        public void TestMessageTracer()
        {
            IMessageTracerService mts = new MemoryMessageTracerService();

            TestLauncherActor.Test(() =>
            {
                BaseActor actor1 = new BaseActor()
                {
                    MessageTracerService = mts
                };
                actor1.SendMessage("Test 1");
                actor1.SendMessage("Test 2");
                actor1.SendMessage("Test 3");
            });

            var    query = mts.CopyAllMessages().ToList();
            string s     = string.Empty;

            query.ForEach(item => s += item);
            Assert.AreEqual(3, query.Count, s);
            Assert.IsTrue(query.Contains("Test 2"));
            Assert.IsFalse(query.Contains("Test 4"));
            Assert.AreEqual("Test 1", query.First());
            Assert.AreEqual("Test 3", query.Last());
        }
 public void PeerNewNodeTest()
 {
     TestLauncherActor.Test(TestContext, () =>
     {
         var node1 = new PeerActor <int, string>();
         var node2 = new PeerActor <int, string>();
         var node3 = new PeerActor <int, string>();
         var node4 = new PeerActor <int, string>();
         node1.NewPeer(node2, node2.GetHashKey().Result());
         node1.NewPeer(node3, node3.GetHashKey().Result());
         node1.NewPeer(node4, node4.GetHashKey().Result());
         node1.StoreNode(10, "10");
         node2.StoreNode(20, "20");
         node3.StoreNode(30, "30");
         var future = new Future <IPeerActor <int, string> >();
         node1.FindPeer(30, future);
         var result = future.Result();
         Assert.IsNotNull(result);
         // Assert.AreEqual(node3.Tag.Key(), result.Tag.Key());
         future = new Future <IPeerActor <int, string> >();
         node1.FindPeer(40, future);
         result = future.Result();
         Assert.IsNotNull(result);
         // Assert.AreEqual(node1.Tag.Key(), result.Tag.Key());
     });
 }
        public void TestTextWriter()
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(TestContext.TestRunDirectory);
            sb.Append(@"\");
            sb.Append("testwritertestfile.txt");
            string fullPath = sb.ToString();

            TestLauncherActor.Test(() =>
            {
                using (var textWriter = new TextWriterActor(fullPath))
                {
                    textWriter.SendMessage("1st line");
                    textWriter.SendMessage("2nd line");
                    textWriter.SendMessage("3rd line");
                    textWriter.Flush();
                }
                using (var stream = new FileStream(fullPath, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    StreamReader reader = new StreamReader(stream);
                    try
                    {
                        Assert.AreEqual(reader.ReadLine(), "1st line");
                        Assert.AreEqual(reader.ReadLine(), "2nd line");
                        Assert.AreEqual(reader.ReadLine(), "3rd line");
                    }
                    finally
                    {
                        reader.Dispose();
                    }
                }
            });
        }
Example #9
0
        public void BehaviorGraphTest()
        {
            TestLauncherActor.Test(() =>
            {
                var graph = new BehaviorGraph <string, int>();
                var nodeA = new NodeActor <string, int>();
                var nodeB = new NodeActor <string, int>();
                graph.AddNode(nodeA);
                graph.AddNode(nodeB);
                nodeA.AddEdge(nodeB);
                var act = new Receiver <IMessageParam <IActor, bool> >();
                nodeA.Adjacent(nodeB, act);
                Assert.IsTrue(act.Call().Item2);

                var nodeC = new NodeActor <string, int>();
                graph.AddNode(nodeC);
                nodeA.AddEdge(nodeC);

                var act2 = new Receiver <IMessageParam <IActor, IEnumerable <NodeActor <string, int> > > >();
                nodeA.Neighbors(act2);
                var r = act2.Call().Item2;
                Assert.IsNotNull(r);
                Assert.IsFalse(r.Contains(nodeA));
                Assert.IsTrue(r.Contains(nodeB));
                Assert.IsTrue(r.Contains(nodeC));

                // test as future
                var future = nodeA.Neighbors();
                Assert.IsNotNull(future);
                Assert.IsTrue(future.Result().Item2.Count() == 2);
            });
        }
Example #10
0
 public void TestTextWriter()
 {
     TestLauncherActor.Test(() =>
     {
         using (var textWriter = new TextWriterActor("textwritertestfile.txt"))
         {
             textWriter.SendMessage("1st line");
             textWriter.SendMessage("2nd line");
             textWriter.SendMessage("3rd line");
             textWriter.Flush();
         }
         using (var stream = new FileStream("textwritertestfile.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
         {
             StreamReader reader = new StreamReader(stream);
             try
             {
                 Assert.AreEqual(reader.ReadLine(), "1st line");
                 Assert.AreEqual(reader.ReadLine(), "2nd line");
                 Assert.AreEqual(reader.ReadLine(), "3rd line");
             }
             finally
             {
                 reader.Dispose();
             }
         }
     }, 20000);
 }
Example #11
0
        public void FSMBehaviorsTest()
        {
            TestLauncherActor.Test(() =>
            {
                var behaviors = new FsmBehaviors <string, int>();
                behaviors
                .AddRule("StartState", i => i == 1, i => { }, "MidState")
                .AddRule("MidState", i => i == 2, i => { }, "EndState");

                var fsmActor = new BaseActor(behaviors);

                var currentState1 = new Future <string>();
                fsmActor.SendMessage(currentState1);
                Assert.IsTrue(currentState1.Result() == "StartState");

                fsmActor.SendMessage(1);

                var currentState2 = new Future <string>();
                fsmActor.SendMessage(currentState2);
                Assert.IsTrue(currentState2.Result() == "MidState");

                fsmActor.SendMessage(2);

                var currentState3 = new Future <string>();
                fsmActor.SendMessage(currentState3);
                Assert.IsTrue(currentState3.Result() == "EndState");

                fsmActor.SendMessage(3);

                // unchanged shoud be
                var currentState4 = new Future <string>();
                fsmActor.SendMessage(currentState4);
                Assert.IsTrue(currentState4.Result() == "EndState");
            });
        }
Example #12
0
 public void ChainTest()
 {
     TestLauncherActor.Test(() =>
     {
         var chain = new Chain();
         chain.SendMessage(4, 4, 4);
     });
 }
 public void AddElementTest()
 {
     TestLauncherActor.Test(() =>
     {
         var act = new EnumerableActor <string>();
         act.Add("test");
     });
 }
 public void EnumerableActorTest()
 {
     TestLauncherActor.Test(() =>
     {
         var act = new EnumerableActor <string>();
         Assert.IsNotNull(act);
     });
 }
Example #15
0
 public void TestNullBehavior()
 {
     TestLauncherActor.Test(() =>
     {
         var actor = new BaseActor(new NullBehavior());
         actor.SendMessage("delta");
     });
 }
 public void TestShardRun()
 {
     TestLauncherActor.Test(() =>
     {
         ActorServer.Start("localhost", 80, new HostRelayActor());
         new ShardDirectoryClientTest();
     });
 }
 public void FindTest()
 {
     TestLauncherActor.Test(() =>
     {
         var dirtest = new DirectoryTestActor();
         DirectoryActor.GetDirectory().Register(dirtest, dirtest.Tag.Key());
     });
 }
 public void DictionaryActorTest()
 {
     TestLauncherActor.Test(() =>
     {
         var act = new DictionaryActor <string, int>();
         Assert.IsNotNull(act);
     });
 }
 public void SubscribeTest()
 {
     TestLauncherActor.Test(() =>
     {
         var rx  = new RxObservable <string>();
         var dsp = rx.Subscribe(new Observer());
         Assert.IsTrue(dsp is IDisposable);
     });
 }
 public void RegisterTest()
 {
     TestLauncherActor.Test(() =>
     {
         var act = new DirectoryTestActor();
         DirectoryActor.GetDirectory().Register(act, act.Tag.Key());
         act.SendMessage(fLauncher, act, act.Tag.Key());
     });
 }
Example #21
0
 public void ReceiveWaitTimeOut1Test()
 {
     TestLauncherActor.Test(() =>
     {
         var actor     = new ReceiveActor <int, string>();
         var target    = new TargetActor();
         var resultOdd = actor.WaitAsync(target, 1, 10000);
         Assert.IsTrue(resultOdd.Result.Item2 == "odd");
     });
 }
Example #22
0
 public void ObservableActorTest()
 {
     TestLauncherActor.Test(() =>
     {
         ObservableActor <string> act = new ObservableActor <string>();
         Assert.IsNotNull(act);
         Assert.IsTrue(act is ObservableActor <string>);
         Assert.IsTrue(act is IActor);
     });
 }
 public void LinkedListActorTest()
 {
     TestLauncherActor.Test(
         () =>
     {
         var ll = new LinkedListActor <string>();
         Assert.IsNotNull(ll);
     }
         );
 }
 public void AddKVTest()
 {
     TestLauncherActor.Test(() =>
     {
         var act = new DictionaryActor <string, int>();
         Assert.IsNotNull(act);
         act.AddKeyValue("1", 1);
         act.AddKeyValue("2", 2);
     });
 }
 public void DiscoTest()
 {
     TestLauncherActor.Test(() =>
     {
         ActorServer.Start("localhost", 80, null);
         var act = new DiscoTestActor(fLauncher);
         DirectoryActor.GetDirectory().Disco(act);
     }
                            );
 }
Example #26
0
 public void SendReplyTest()
 {
     TestLauncherActor.Test(() =>
     {
         var actor  = new SimpleSendReplyActor();
         var future = new Future <IActor, string>();
         actor.SendMessage((IActor)future, "Test 1");
         Assert.AreEqual("Test 1", future.Result().Item2);
     });
 }
Example #27
0
 public void TestADecoratedActor()
 {
     TestLauncherActor.Test(() =>
     {
         var actor  = new TestActor();
         var future = actor.GetAnswer();
         actor.SendMessage("Test Decorated");
         Assert.AreEqual("Test Decorated", future.Result());
     });
 }
 public void DiscoTest()
 {
     TestLauncherActor.Test(() =>
     {
         ActorServer.Start(ActorConfigManager.CastForTest());
         var act = new DiscoTestActor(fLauncher);
         DirectoryActor.GetDirectory().Disco(act);
     }
                            );
 }
Example #29
0
 public void ReceiveWait4Test()
 {
     TestLauncherActor.Test(() =>
     {
         var actor      = new ReceiveActor <int>();
         var target     = new TargetActor2();
         var resultEven = actor.WaitAsync(target, 2);
         Assert.IsTrue(resultEven.Result.Item2 == 4);
     });
 }
Example #30
0
 public void ReceiveWaitTimeOut2Test()
 {
     TestLauncherActor.Test(() =>
     {
         var actor      = new ReceiveActor <int, string>();
         var target     = new TargetActor();
         var resultEven = actor.WaitAsync((IActor)target, 2, 2000);
         Assert.IsTrue(resultEven.Result.Item2 == "even");
     });
 }