コード例 #1
0
        public void Test_Messenger_Collect_Test(Type type, bool isWeak)
        {
            var messenger = (IMessenger)Activator.CreateInstance(type);

            WeakReference weakRecipient;

            void Test()
            {
                var recipient = new RecipientWithNoMessages {
                    Number = 42
                };

                weakRecipient = new WeakReference(recipient);

                messenger.Register <MessageA>(recipient, (r, m) => { });

                Assert.IsTrue(messenger.IsRegistered <MessageA>(recipient));
                Assert.IsTrue(weakRecipient.IsAlive);

                GC.KeepAlive(recipient);
            }

            Test();

            GC.Collect();

            Assert.AreEqual(!isWeak, weakRecipient.IsAlive);

            GC.KeepAlive(messenger);
        }
コード例 #2
0
        public void Test_Messenger_IRecipient_NoMessages(Type type)
        {
            var messenger = (IMessenger)Activator.CreateInstance(type);
            var recipient = new RecipientWithNoMessages();

            messenger.RegisterAll(recipient);

            // We just need to verify we got here with no errors, this
            // recipient has no declared handlers so there's nothing to do
        }
コード例 #3
0
        public void Test_Messenger_IRecipient_NoMessages()
        {
            var messenger = new Messenger();
            var recipient = new RecipientWithNoMessages();

            messenger.RegisterAll(recipient);

            // We just need to verify we got here with no errors, this
            // recipient has no declared handlers so there's nothing to do
        }
コード例 #4
0
        public void Test_Messenger_RegisterWithTypeParameter(Type type)
        {
            var messenger = (IMessenger)Activator.CreateInstance(type);
            var recipient = new RecipientWithNoMessages {
                Number = 42
            };

            int number = 0;

            messenger.Register <RecipientWithNoMessages, MessageA>(recipient, (r, m) => number = r.Number);

            messenger.Send <MessageA>();

            Assert.AreEqual(number, 42);
        }