Exemplo n.º 1
0
        public void When_registering_weak_event_then_it_should_still_be_here_when_target_referenced()
        {
            //// Arrange
            var eventCalled = false;
            var target = new MockEventTargetClass(() =>
            {
                eventCalled = true;
            });
            var obj = new MockObservableObject();

            //// Act
            WeakEvent.RegisterEvent<MockObservableObject, PropertyChangedEventArgs>(obj, "PropertyChanged", target.Callback);

            obj.Name = "test1";
            Assert.IsTrue(eventCalled);

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();

            eventCalled = false;
            obj.Name = "test2";

            //// Assert
            Assert.IsTrue(eventCalled);
            target.Action = null;
        }
Exemplo n.º 2
0
        public void When_registering_typed_weak_event_then_it_should_still_be_here_when_target_referenced()
        {
            //// Arrange
            var eventCalled = false;
            var target = new MockEventTargetClass(() =>
            {
                eventCalled = true;
            });
            var obj = new MockObservableObject();

            //// Act
            WeakEvent.RegisterEvent<MockEventTargetClass, PropertyChangedEventHandler, PropertyChangedEventArgs>(
                target,
                h => obj.PropertyChanged += h,
                h => obj.PropertyChanged -= h,
                h => (o, e) => h(o, e),
                (t, sender, args) => t.Callback(sender, args));

            obj.Name = "test1";
            Assert.IsTrue(eventCalled);

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();

            eventCalled = false;
            obj.Name = "test2";

            //// Assert
            Assert.IsTrue(eventCalled);
            target.Action = null;
        }