public void WeakEventManager_HandleEvent_ValidImplementation()
        {
            //Arrange
            TestEvent += HandleTestEvent;
            bool didEventFire = false;

            void HandleTestEvent(object?sender, EventArgs e)
            {
                if (sender is null)
                {
                    throw new ArgumentNullException(nameof(sender));
                }

                Assert.IsNotNull(sender);
                Assert.AreEqual(this.GetType(), sender.GetType());

                Assert.IsNotNull(e);

                didEventFire = true;
                TestEvent   -= HandleTestEvent;
            }

            //Act
            TestWeakEventManager.HandleEvent(this, new EventArgs(), nameof(TestEvent));

            //Assert
            Assert.IsTrue(didEventFire);
        }
        public void WeakEventManager_HandleEvent_NullEventArgs()
        {
            //Arrange
            TestEvent += HandleTestEvent;
            bool didEventFire = false;

            void HandleTestEvent(object?sender, EventArgs e)
            {
                if (sender is null)
                {
                    throw new ArgumentNullException(nameof(sender));
                }

                Assert.IsNotNull(sender);
                Assert.AreEqual(this.GetType(), sender.GetType());

                Assert.IsNull(e);

                didEventFire = true;
                TestEvent   -= HandleTestEvent;
            }

            //Act
#pragma warning disable CS8625 //Cannot convert null literal to non-nullable reference type
            TestWeakEventManager.HandleEvent(this, null, nameof(TestEvent));
#pragma warning restore CS8625

            //Assert
            Assert.IsTrue(didEventFire);
        }
        public void WeakEventManager_HandleEvent_InvalidHandleEvent()
        {
            //Arrange
            TestEvent += HandleTestEvent;
            bool didEventFire = false;

            void HandleTestEvent(object?sender, EventArgs e) => didEventFire = true;

            //Act

            //Assert
            Assert.Throws <InvalidHandleEventException>(() => TestWeakEventManager.HandleEvent(nameof(TestEvent)));
            Assert.IsFalse(didEventFire);
            TestEvent -= HandleTestEvent;
        }
        public void WeakEventManager_UnassignedEvent()
        {
            //Arrange
            bool didEventFire = false;

            TestEvent += HandleTestEvent;
            TestEvent -= HandleTestEvent;
            void HandleTestEvent(object?sender, EventArgs e) => didEventFire = true;

            //Act
            TestWeakEventManager.HandleEvent(null, null, nameof(TestEvent));

            //Assert
            Assert.IsFalse(didEventFire);
        }
        public void WeakEventManager_HandleEvent_InvalidHandleEventName()
        {
            //Arrange
            TestEvent += HandleTestEvent;
            bool didEventFire = false;

            void HandleTestEvent(object?sender, EventArgs e) => didEventFire = true;

            //Act
            TestWeakEventManager.HandleEvent(this, new EventArgs(), nameof(TestStringEvent));

            //Assert
            Assert.False(didEventFire);
            TestEvent -= HandleTestEvent;
        }
        public void WeakEventManager_HandleEvent_NullSender()
        {
            //Arrange
            TestEvent += HandleTestEvent;
            bool didEventFire = false;

            void HandleTestEvent(object?sender, EventArgs e)
            {
                Assert.IsNull(sender);
                Assert.IsNotNull(e);

                didEventFire = true;
                TestEvent   -= HandleTestEvent;
            }

            //Act
            TestWeakEventManager.HandleEvent(null, new EventArgs(), nameof(TestEvent));

            //Assert
            Assert.IsTrue(didEventFire);
        }
Exemple #7
0
        public void WeakEventManager_HandleEvent_NullEventArgs()
        {
            //Arrange
            TestEvent += HandleTestEvent;
            bool didEventFire = false;

            void HandleTestEvent(object sender, EventArgs e)
            {
                Assert.IsNotNull(sender);
                Assert.AreEqual(this.GetType(), sender.GetType());

                Assert.IsNull(e);

                didEventFire = true;
                TestEvent   -= HandleTestEvent;
            }

            //Act
            TestWeakEventManager.HandleEvent(this, null, nameof(TestEvent));

            //Assert
            Assert.IsTrue(didEventFire);
        }