public void WeakEventManager_HandleEvent_EmptyEventArgs()
        {
            // Arrange
            TestEvent += HandleTestEvent;
            var didEventFire = false;

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

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

                Assert.IsNotNull(e);
                Assert.AreEqual(EventArgs.Empty, e);

                didEventFire = true;
                TestEvent   -= HandleTestEvent;
            }

            // Act
            TestWeakEventManager.RaiseEvent(this, EventArgs.Empty, nameof(TestEvent));

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

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

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

                Assert.Null(e);

                didEventFire = true;
                TestEvent   -= HandleTestEvent;
            }

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

            // Assert
            Assert.IsTrue(didEventFire);
        }
        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.RaiseEvent(this, new EventArgs(), nameof(TestEvent));

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

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

            // Act

            // Assert
            Assert.Throws <InvalidHandleEventException>(() => TestWeakEventManager.RaiseEvent(nameof(TestEvent)));
            Assert.False(didEventFire);
            TestEvent -= HandleTestEvent;
        }
        public void WeakEventManager_HandleEvent_InvalidHandleEventName()
        {
            // Arrange
            TestEvent += HandleTestEvent;
            var didEventFire = false;

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

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

            // Assert
            Assert.False(didEventFire);
            TestEvent -= HandleTestEvent;
        }
コード例 #6
0
        public void WeakEventManager_UnassignedEvent()
        {
            // Arrange
            var didEventFire = false;

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

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

            // Assert
            Assert.False(didEventFire);
        }
        public void WeakEventManager_UnassignedEvent()
        {
            // Arrange
            var didEventFire = false;

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

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

            // Assert
            Assert.False(didEventFire);
        }
コード例 #8
0
        public void WeakEventManager_HandleEvent_NullSender()
        {
            // Arrange
            TestEvent += HandleTestEvent;
            var didEventFire = false;

            void HandleTestEvent(object?sender, EventArgs e)
            {
                Assert.Null(sender);
                Assert.NotNull(e);

                didEventFire = true;
                TestEvent   -= HandleTestEvent;
            }

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

            // Assert
            Assert.True(didEventFire);
        }
        public void WeakEventManager_HandleEvent_NullSender()
        {
            // Arrange
            TestEvent += HandleTestEvent;
            var didEventFire = false;

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

                didEventFire = true;
                TestEvent   -= HandleTestEvent;
            }

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

            // Assert
            Assert.IsTrue(didEventFire);
        }