Пример #1
1
 public void Reset()
 {
     _recipient = null;
     _recipientInternal = null;
     _recipientPrivate = null;
     _recipientReference = null;
 }
Пример #2
0
        public void TestGarbageCollectionForNamedPrivateMethod()
        {
            Messenger.Reset();

            _recipient = new TestRecipient(WeakActionTestCase.PrivateNamedMethod);
            _recipientReference = new WeakReference(_recipient);

            Assert.AreEqual(null, _recipient.Content);
            Assert.IsTrue(_recipientReference.IsAlive);

            const string message = "Hello world";

            Messenger.Default.Send(message);

            Assert.AreEqual(message, _recipient.Content);

            _recipient = null;
            GC.Collect();

#if SILVERLIGHT
            // Cannot GC the internal method reference in Silverlight
            Assert.IsTrue(_recipientReference.IsAlive);

            _recipient = (TestRecipient)_recipientReference.Target;
            Messenger.Default.Unregister(_recipient);
            _recipient = null;
            GC.Collect();
            Assert.IsFalse(_recipientReference.IsAlive);
#else
            Assert.IsFalse(_recipientReference.IsAlive);
#endif
        }
 public void Reset()
 {
     _recipient          = null;
     _recipientInternal  = null;
     _recipientPrivate   = null;
     _recipientReference = null;
 }
Пример #4
0
        public void TestUnregisterOneAction()
        {
            const string testContentA1 = "abcd";
            const string testContentB1 = "1234";
            const string testContentA2 = "efgh";
            const string testContentB2 = "5678";

            Reset();
            Messenger.Reset();

            Action <TestMessageA> actionA1 = m => ReceivedContentStringA1 = m.Content;

            Messenger.Default.Register(this, actionA1);
            Messenger.Default.Register <TestMessageA>(this, m => ReceivedContentStringA2 = m.Content);
            Messenger.Default.Register <TestMessageB>(this, m => ReceivedContentStringB  = m.Content);

            var externalRecipient = new TestRecipient();

            externalRecipient.RegisterWith(Messenger.Default);

            Assert.AreEqual(null, ReceivedContentStringA1);
            Assert.AreEqual(null, ReceivedContentStringA2);
            Assert.AreEqual(null, ReceivedContentStringB);
            Assert.AreEqual(null, externalRecipient.ReceivedContentA);
            Assert.AreEqual(null, externalRecipient.ReceivedContentB);

            Messenger.Default.Send(new TestMessageA
            {
                Content = testContentA1
            });

            Messenger.Default.Send(new TestMessageB
            {
                Content = testContentB1
            });

            Assert.AreEqual(testContentA1, ReceivedContentStringA1);
            Assert.AreEqual(testContentA1, ReceivedContentStringA2);
            Assert.AreEqual(testContentB1, ReceivedContentStringB);
            Assert.AreEqual(testContentA1, externalRecipient.ReceivedContentA);
            Assert.AreEqual(testContentB1, externalRecipient.ReceivedContentB);

            Messenger.Default.Unregister(this, actionA1);

            Messenger.Default.Send(new TestMessageA
            {
                Content = testContentA2
            });

            Messenger.Default.Send(new TestMessageB
            {
                Content = testContentB2
            });

            Assert.AreEqual(testContentA1, ReceivedContentStringA1);
            Assert.AreEqual(testContentA2, ReceivedContentStringA2);
            Assert.AreEqual(testContentB2, ReceivedContentStringB);
            Assert.AreEqual(testContentA2, externalRecipient.ReceivedContentA);
            Assert.AreEqual(testContentB2, externalRecipient.ReceivedContentB);
        }
        public void TestGarbageCollectionForNamedPrivateMethod()
        {
            Messenger.Reset();

            _recipient          = new TestRecipient(WeakActionTestCase.PrivateNamedMethod);
            _recipientReference = new WeakReference(_recipient);

            Assert.AreEqual(null, _recipient.Content);
            Assert.IsTrue(_recipientReference.IsAlive);

            const string message = "Hello world";

            Messenger.Default.Send(message);

            Assert.AreEqual(message, _recipient.Content);

            _recipient = null;
            GC.Collect();

#if SILVERLIGHT
            // Cannot GC the internal method reference in Silverlight
            Assert.IsTrue(_recipientReference.IsAlive);

            _recipient = (TestRecipient)_recipientReference.Target;
            Messenger.Default.Unregister(_recipient);
            _recipient = null;
            GC.Collect();
            Assert.IsFalse(_recipientReference.IsAlive);
#else
            Assert.IsFalse(_recipientReference.IsAlive);
#endif
        }
        public void TestSendingToAllRecipients()
        {
            const string TestContent = "abcd";

            Reset();
            Messenger.Reset();

            Messenger.Default.Register <TestMessage>(this, m => StringContent1 = m.Content);

            Messenger.Default.Register <TestMessage>(this, m => StringContent2 = m.Content);

            var externalRecipient = new TestRecipient();

            externalRecipient.RegisterWith(Messenger.Default);

            Assert.AreEqual(null, StringContent1);
            Assert.AreEqual(null, StringContent2);
            Assert.AreEqual(null, externalRecipient.StringContent);

            Messenger.Default.Send(new TestMessage
            {
                Content = TestContent
            });

            Assert.AreEqual(TestContent, StringContent1);
            Assert.AreEqual(TestContent, StringContent2);
            Assert.AreEqual(TestContent, externalRecipient.StringContent);
        }
        public void BroadcastToOneType()
        {
            Messenger.Default = null;;
            var    recipient1 = new TestRecipient();
            var    recipient2 = new TestRecipient();
            var    recipient3 = new TestRecipient2();
            var    recipient4 = this;
            string message1   = null;
            string message2   = null;
            string message3   = null;
            string message4   = null;

            Messenger.Default.Register <string>(recipient1, x => message1 = x);
            Messenger.Default.Register <string>(recipient2, x => message2 = x);
            Messenger.Default.Register <string>(recipient3, x => message3 = x);
            Messenger.Default.Register <string>(recipient3, x => message3 = x);

            Messenger.Default.Send <string, TestRecipient>("test1");
            Assert.AreEqual("test1", message1, "message1");
            Assert.AreEqual("test1", message2, "message2");
            Assert.AreEqual("test1", message3, "message3");
            Assert.IsNull(message4);

            Messenger.Default.Send <string, TestRecipient2>("test2");
            Assert.AreEqual("test1", message1, "message1");
            Assert.AreEqual("test1", message2, "message2");
            Assert.AreEqual("test2", message3, "message3");
            Assert.IsNull(message4);
        }
        public void RequestResponseTest()
        {
            // Arrange
            var payload = new Payload {
                x = 2, y = 3
            };
            var identity  = Guid.NewGuid().ToString();
            var recipient = new TestRecipient(identity);

            this.messageBroker.AddRecipient(InProcessChannelFactoryUnitTests.messageType, recipient);

            // Act
            var response = this.messageBroker.Request(new RequestMessage(InProcessChannelFactoryUnitTests.messageType, payload));

            // Assert
            Assert.IsNotNull(response);
            Assert.IsNotNull(response.Content);
            Assert.AreEqual(StatusCode.Success, response.StatusCode);
            Assert.AreEqual(recipient, response.Recipient);
            Assert.IsNull(response.ReasonPhrase);

            var content = (Payload)response.Content;

            Assert.AreEqual(payload.x * 10, content.x);
            Assert.AreEqual(payload.y * 100, content.y);
        }
        public void TestSendingToAllRecipients()
        {
            const string TestContent = "abcd";

            Reset();
            Messenger.Reset();

            Messenger.Default.Register<TestMessage>(this, m => StringContent1 = m.Content);

            Messenger.Default.Register<TestMessage>(this, m => StringContent2 = m.Content);

            var externalRecipient = new TestRecipient();
            externalRecipient.RegisterWith(Messenger.Default);

            Assert.AreEqual(null, StringContent1);
            Assert.AreEqual(null, StringContent2);
            Assert.AreEqual(null, externalRecipient.StringContent);

            Messenger.Default.Send(new TestMessage
            {
                Content = TestContent
            });

            Assert.AreEqual(TestContent, StringContent1);
            Assert.AreEqual(TestContent, StringContent2);
            Assert.AreEqual(TestContent, externalRecipient.StringContent);
        }
        public void MemoryTest1()
        {
            var recipient = new TestRecipient();

            Messenger.Default.Register <string>(recipient, x => recipient.OnMessage(new TestMessageBase(x)));
            GC.Collect();
            Messenger.Default.Send("test");
            Assert.AreEqual("test", recipient.Message);
        }
        public void Broadcast()
        {
            string message = null;

            Messenger.Default.Register <TestMessageBase>(this, x => message = x.Message);
            TestRecipient recipient = new TestRecipient();

            Messenger.Default.Register <TestMessageBase>(recipient, recipient.OnMessage);

            Messenger.Default.Send(new TestMessageBase("test"));
            Assert.AreEqual("test", message);
            Assert.AreEqual("test", recipient.Message);
        }
        public void MultipleMessengers()
        {
            Messenger     messenger1 = new Messenger();
            Messenger     messenger2 = new Messenger();
            TestRecipient recipient1 = new TestRecipient();
            TestRecipient recipient2 = new TestRecipient();

            messenger1.Register <TestMessageBase>(recipient1, recipient1.OnMessage);
            messenger2.Register <TestMessageBase>(recipient2, recipient2.OnMessage);
            messenger1.Send(new TestMessageBase("test1"));
            Assert.AreEqual("test1", recipient1.Message);
            Assert.IsNull(null, recipient2.Message);
            messenger2.Send(new TestMessageBase("test2"));
            Assert.AreEqual("test1", recipient1.Message);
            Assert.AreEqual("test2", recipient2.Message);
        }
        public void UnregisterWhileReceiving2()
        {
            string          message   = null;
            TestRecipient   recipient = null;
            Action <string> handler   = x => {
                recipient.RunCustomHandler(x);
            };

            recipient = new TestRecipient(x => {
                Messenger.Default.Unregister <string>(recipient, handler);
                Messenger.Default.Send("new");
                message = x;
            });
            Messenger.Default.Register <string>(recipient, handler);
            Messenger.Default.Send("test");
            Assert.AreEqual("test", message);
        }
Пример #14
0
        public void TestGarbageCollectionForAnonymousMethod()
        {
            Messenger.Reset();

            _recipient = new TestRecipient(WeakActionTestCase.AnonymousMethod);
            _recipientReference = new WeakReference(_recipient);

            Assert.AreEqual(null, _recipient.Content);
            Assert.IsTrue(_recipientReference.IsAlive);

            const string message = "Hello world";

            Messenger.Default.Send(message);

            Assert.AreEqual(message, _recipient.Content);

            _recipient = null;
            GC.Collect();
            Assert.IsFalse(_recipientReference.IsAlive);
        }
        public void TestGarbageCollectionForNamedMethod()
        {
            Messenger.Reset();

            _recipient          = new TestRecipient(WeakActionTestCase.PublicNamedMethod);
            _recipientReference = new WeakReference(_recipient);

            Assert.AreEqual(null, _recipient.Content);
            Assert.IsTrue(_recipientReference.IsAlive);

            const string message = "Hello world";

            Messenger.Default.Send(message);

            Assert.AreEqual(message, _recipient.Content);

            _recipient = null;
            GC.Collect();

            Assert.IsFalse(_recipientReference.IsAlive);
        }
Пример #16
0
        public void TestOldMessengerRegisteringForMessageBaseWhileSending()
        {
            Messenger.Reset();
            TestRecipient.Reset();

            var list = new List <TestRecipient2>();

            for (var index = 0; index < 10; index++)
            {
                list.Add(new TestRecipient4());
            }

            Messenger.Default.Broadcast(new GenericMessage <string>(TestContentString));

            Assert.AreEqual(null, TestRecipient.LastReceivedString);
            Assert.AreEqual(0, TestRecipient.ReceivedStringMessages);

            Messenger.Default.Broadcast(new GenericMessage <string>(TestContentStringNested));

            Assert.AreEqual(TestContentStringNested, TestRecipient.LastReceivedString);
            Assert.AreEqual(20, TestRecipient.ReceivedStringMessages);
        }
Пример #17
0
        public void TestMessengerRegisteringForMessageBaseWhileSending()
        {
            MessageService.Reset();
            TestRecipient.Reset();

            var list = new List <TestRecipient2>();

            for (var index = 0; index < 10; index++)
            {
                list.Add(new TestRecipient2(true));
            }

            MessageService.Default.Send(new Message <string>(TestContentString));

            Assert.AreEqual(null, TestRecipient.LastReceivedString);
            Assert.AreEqual(0, TestRecipient.ReceivedStringMessages);

            MessageService.Default.Send(new Message <string>(TestContentStringNested));

            Assert.AreEqual(TestContentStringNested, TestRecipient.LastReceivedString);
            Assert.AreEqual(10, TestRecipient.ReceivedStringMessages);
        }
        public void DeletingRecipient()
        {
            DeletingRecipientRecipient1 = new TestRecipient();
            DeletingRecipientRecipient2 = new TestRecipient();
            string message1 = null;
            string message2 = null;

            Messenger.Default.Register <string>(DeletingRecipientRecipient1, x => message1 = x);
            Messenger.Default.Register <string>(DeletingRecipientRecipient2, x => message2 = x);
            Messenger.Default.Send("test");
            Assert.AreEqual("test", message1);
            Assert.AreEqual("test", message2);
            DeletingRecipientRecipient1 = null;
            GC.Collect();
            Messenger.Default.Send("test2");
            Assert.AreEqual("test", message1);
            Assert.AreEqual("test2", message2);
            DeletingRecipientRecipient2 = null;
            GC.Collect();
            Messenger.Default.Send("test3");
            Assert.AreEqual("test", message1);
            Assert.AreEqual("test2", message2);
        }
        public void RegisterUnregisterOneRecipient()
        {
            string message1 = null;
            string message2 = null;
            string message3 = null;

            Messenger.Default.Register <TestMessageBase>(this, x => message1 = x.Message);
            Messenger.Default.Register <TestMessageBase>(this, x => message2 = x.Message);
            Messenger.Default.Register <TestMessage>(this, x => message3     = (string)x.Sender);

            string externalMessage1  = null;
            string externalMessage2  = null;
            var    externalRecipient = new TestRecipient();

            Messenger.Default.Register <TestMessageBase>(externalRecipient, x => externalMessage1 = x.Message);
            Messenger.Default.Register <TestMessage>(externalRecipient, x => externalMessage2     = (string)x.Sender);

            Messenger.Default.Send(new TestMessageBase("test1"));
            Messenger.Default.Send(new TestMessage("test2", "test2"));

            Assert.AreEqual("test1", message1);
            Assert.AreEqual("test1", message2);
            Assert.AreEqual("test2", message3);
            Assert.AreEqual("test1", externalMessage1);
            Assert.AreEqual("test2", externalMessage2);

            Messenger.Default.Unregister(this);

            Messenger.Default.Send(new TestMessageBase("newTest1"));
            Messenger.Default.Send(new TestMessage("newTest2", "newTest2"));

            Assert.AreEqual("test1", message1);
            Assert.AreEqual("test1", message2);
            Assert.AreEqual("test2", message3);
            Assert.AreEqual("newTest1", externalMessage1);
            Assert.AreEqual("newTest2", externalMessage2);
        }
        public void DeletingRecipient()
        {
            Action alloc = () => {
                DeletingRecipientRecipient1 = new TestRecipient();
                DeletingRecipientRecipient2 = new TestRecipient();
                Messenger.Default.Register <string>(DeletingRecipientRecipient1, x => DeletingRecipientMessage1 = x);
                Messenger.Default.Register <string>(DeletingRecipientRecipient2, x => DeletingRecipientMessage2 = x);
            };

            alloc();
            Messenger.Default.Send("test");
            Assert.AreEqual("test", DeletingRecipientMessage1);
            Assert.AreEqual("test", DeletingRecipientMessage2);
            DeletingRecipientRecipient1 = null;
            GC.Collect();
            Messenger.Default.Send("test2");
            Assert.AreEqual("test", DeletingRecipientMessage1);
            Assert.AreEqual("test2", DeletingRecipientMessage2);
            DeletingRecipientRecipient2 = null;
            GC.Collect();
            Messenger.Default.Send("test3");
            Assert.AreEqual("test", DeletingRecipientMessage1);
            Assert.AreEqual("test2", DeletingRecipientMessage2);
        }