Пример #1
0
        public void DesribesAndDispatchesProperly()
        {
            var a     = new AHandler();
            var ab    = new ABHandler();
            var actor = new CompositeActor(new IActor[] { a, ab }, new StructSizeCounter(),
                                           FakeMessageIdGenerator.GetMessageId);

            CollectionAssert.AreEquivalent(new[] { typeof(A), typeof(B) }, actor.Descriptor.HandledMessageTypes);
            var aid = FakeMessageIdGenerator.GetMessageId(typeof(A));
            var bid = FakeMessageIdGenerator.GetMessageId(typeof(B));

            // Ensure counters
            Assert.AreEqual(0, a.ACount);
            Assert.AreEqual(0, ab.ACount);
            Assert.AreEqual(0, ab.BCount);

            // A
            actor.MessageHandler(aid, ByteChunk.Empty);
            Assert.AreEqual(1, a.ACount);
            Assert.AreEqual(1, ab.ACount);
            Assert.AreEqual(0, ab.BCount);

            // B
            actor.MessageHandler(bid, ByteChunk.Empty);
            Assert.AreEqual(1, a.ACount);
            Assert.AreEqual(1, ab.ACount);
            Assert.AreEqual(1, ab.BCount);
        }
Пример #2
0
        public void DesribesAndDispatchesProperly()
        {
            var a = new AHandler();
            var ab = new ABHandler();
            var actor = new CompositeActor(new IActor[] {a, ab}, new StructSizeCounter(),
                FakeMessageIdGenerator.GetMessageId);
            CollectionAssert.AreEquivalent(new[] {typeof (A), typeof (B)}, actor.Descriptor.HandledMessageTypes);
            var aid = FakeMessageIdGenerator.GetMessageId(typeof (A));
            var bid = FakeMessageIdGenerator.GetMessageId(typeof (B));

            // Ensure counters
            Assert.AreEqual(0, a.ACount);
            Assert.AreEqual(0, ab.ACount);
            Assert.AreEqual(0, ab.BCount);

            // A
            actor.MessageHandler(aid, ByteChunk.Empty);
            Assert.AreEqual(1, a.ACount);
            Assert.AreEqual(1, ab.ACount);
            Assert.AreEqual(0, ab.BCount);

            // B
            actor.MessageHandler(bid, ByteChunk.Empty);
            Assert.AreEqual(1, a.ACount);
            Assert.AreEqual(1, ab.ACount);
            Assert.AreEqual(1, ab.BCount);
        }