Exemplo n.º 1
0
        public void InjectRemove()
        {
            var refs = InjectRemove_Core();

            EnqueueLastCallback(() => {
                MemoryLeaksHelper.CollectOptional(refs);
                MemoryLeaksHelper.EnsureCollected(refs);
            });
        }
Exemplo n.º 2
0
        public void ViewModelClosingEvent()
        {
            var refs = ViewModelClosingEvent_Core();

            EnqueueLastCallback(() => {
                MemoryLeaksHelper.CollectOptional(refs);
                MemoryLeaksHelper.EnsureCollected(refs);
            });
        }
Exemplo n.º 3
0
        public void NavigatedEvent_NavigatedAwayEvent()
        {
            var refs = NavigatedEvent_NavigatedAwayEvent_Core();

            EnqueueLastCallback(() => {
                MemoryLeaksHelper.CollectOptional(refs);
                MemoryLeaksHelper.EnsureCollected(refs);
            });
        }
Exemplo n.º 4
0
        public void KeepTargetReference()
        {
            WeakReference t1;
            var           vm = ViewModel.Create1(x => CreateCommand(x), out t1);

            MemoryLeaksHelper.CollectOptional(t1);
            Execute(vm.Command, null);
            Assert.AreEqual(1, ViewModel.ExecuteCount);

            WeakReference t2;

            vm = ViewModel.Create2(x => CreateCommand(x), out t2);
            MemoryLeaksHelper.CollectOptional(t2);
            Execute(vm.Command, null);
            Assert.AreEqual(1, ViewModel.ExecuteCount);
        }
Exemplo n.º 5
0
        public void PersistentMode_InjectRemove()
        {
            object        vm        = new object();
            Func <object> vmFactory = () => vm;
            WeakReference refVM     = new WeakReference(vm);
            var           refs      = PersistentMode_InjectRemove_Core(vmFactory, vm);

            vm        = null;
            vmFactory = null;
            EnqueueLastCallback(() => {
                Window.Content = null;
                MemoryLeaksHelper.CollectOptional(refs);
                MemoryLeaksHelper.EnsureCollected(refs);

                MemoryLeaksHelper.CollectOptional(refVM);
                MemoryLeaksHelper.EnsureCollected(refVM);
            });
        }
Exemplo n.º 6
0
        void SubscribeUnsubsribeCore(bool passSender, Action <EventOwner, EventArgs> raiseMyEvent1, Action <EventOwner, object, EventArgs> raiseMyEvent2,
                                     Action <Subscriber, EventOwner> subscribe, Action <Subscriber, EventOwner> subscribeTwice, Action <Subscriber, EventOwner> unsubscribe)
        {
            var    e      = new EventOwner();
            var    sender = passSender ? new object() : e;
            var    args   = new PropertyChangedEventArgs("Test");
            Action raise  = () => {
                if (passSender)
                {
                    raiseMyEvent2(e, sender, args);
                }
                else
                {
                    raiseMyEvent1(e, args);
                }
            };

            WeakReference sRef = SubscribeUnsubsribeCoreAlloc(e, sender, args, raise, raiseMyEvent1, raiseMyEvent2, subscribe, subscribeTwice, unsubscribe);

            MemoryLeaksHelper.CollectOptional(sRef);
            MemoryLeaksHelper.EnsureCollected(sRef);
            raise();
        }
        void SubscribeUnsubsribeCore(bool passSender, Action <EventOwner, EventArgs> raiseMyEvent1, Action <EventOwner, object, EventArgs> raiseMyEvent2,
                                     Action <Subscriber, EventOwner> subscribe, Action <Subscriber, EventOwner> subscribeTwice, Action <Subscriber, EventOwner> unsubscribe)
        {
            var    e      = new EventOwner();
            var    s      = new Subscriber();
            var    sender = passSender ? new object() : e;
            var    args   = new PropertyChangedEventArgs("Test");
            Action raise  = () => {
                if (passSender)
                {
                    raiseMyEvent2(e, sender, args);
                }
                else
                {
                    raiseMyEvent1(e, args);
                }
            };

            subscribe(s, e);
            raise();
            Assert.AreEqual(sender, s.Sender);
            Assert.AreEqual(args, s.E);
            Assert.AreEqual(1, s.Count);
            raise();
            Assert.AreEqual(sender, s.Sender);
            Assert.AreEqual(args, s.E);
            Assert.AreEqual(2, s.Count);

            s.Clear();
            subscribe(s, e);
            raise();
            Assert.AreEqual(sender, s.Sender);
            Assert.AreEqual(args, s.E);
            Assert.AreEqual(2, s.Count);

            s.Clear();
            unsubscribe(s, e);
            raise();
            Assert.AreEqual(sender, s.Sender);
            Assert.AreEqual(args, s.E);
            Assert.AreEqual(1, s.Count);

            s.Clear();
            unsubscribe(s, e);
            raise();
            Assert.AreEqual(null, s.Sender);
            Assert.AreEqual(null, s.E);
            Assert.AreEqual(0, s.Count);

            s.Clear();
            subscribeTwice(s, e);
            raise();
            Assert.AreEqual(sender, s.Sender);
            Assert.AreEqual(args, s.E);
            Assert.AreEqual(2, s.Count);
            unsubscribe(s, e);
            unsubscribe(s, e);

            unsubscribe(s, e);
            subscribe(s, e);
            WeakReference sRef = new WeakReference(s);

            s = null;
            MemoryLeaksHelper.CollectOptional(sRef);
            MemoryLeaksHelper.EnsureCollected(sRef);
            raise();
        }