Example #1
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);
            });
        }