Example #1
0
        public void ReactsOnStringEmptyOrNull(string prop)
        {
            int count      = 0;
            var fake       = new FakeInpc();
            var observable = fake.ToObservable(x => x.Prop1, false);
            var disposable = observable.Subscribe(x => count++);

            Assert.AreEqual(0, count);
            fake.OnPropertyChanged(prop); // This means all properties changed according to wpf convention
            Assert.AreEqual(1, count);
        }
        public void MemoryLeakNoDisposeTest()
        {
            var fake         = new FakeInpc();
            var wr           = new WeakReference(fake);
            var subscription = fake.ToObservable().Subscribe();

            fake = null;
            GC.Collect();
            Assert.IsFalse(wr.IsAlive);
            var s = subscription.ToString(); // touching it after GC.Collect for no optimizations
        }
Example #3
0
        public void ExplicitNoSignalInitial()
        {
            int count = 0;
            var fake  = new FakeInpc {
                Prop1 = false, Prop2 = true
            };
            var observable = fake.ToObservable(x => x.Prop1, false);
            var disposable = observable.Subscribe(x => count++);

            Assert.AreEqual(0, count);
            fake.Prop1 = !fake.Prop1;
            Assert.AreEqual(1, count);
        }
Example #4
0
        public void SignalsInitial()
        {
            int count = 0;
            var fake  = new FakeInpc {
                Prop1 = false, Prop2 = true
            };
            var observable = fake.ToObservable(x => x.Prop1, true); // Default true captures initial value
            var disposable = observable.Subscribe(x => count++);

            Assert.AreEqual(1, count);
            fake.Prop1 = !fake.Prop1;
            Assert.AreEqual(2, count);
        }
Example #5
0
        public void ThreeLevelsExisting()
        {
            int count = 0;
            var fake  = new FakeInpc {
                Next = new Level {
                    Next = new Level()
                }
            };
            var observable = fake.ToObservable(x => x.Next.Next.Value);
            var disposable = observable.Subscribe(x => count++);

            Assert.AreEqual(1, count);
            fake.Next.Next.Value = !fake.Next.Next.Value;
            Assert.AreEqual(2, count);
        }
Example #6
0
        public void StringEmptyOrNull(string prop)
        {
            int count = 0;
            var next  = new Level();
            var fake  = new FakeInpc {
                Next = next
            };
            var observable = fake.ToObservable(x => x.Next.Value, false);
            var disposable = observable.Subscribe(x => count++);

            fake.OnPropertyChanged(prop);
            Assert.AreEqual(1, count);
            next.OnPropertyChanged(prop);
            Assert.AreEqual(2, count);
        }
Example #7
0
        public void NoCaptureOfInitial()
        {
            int count = 0;
            var fake  = new FakeInpc {
                Prop1 = false, Prop2 = true, Next = new Level {
                    Value = true
                }
            };
            var observable = fake.ToObservable(x => x.Next.Value, false);
            var disposable = observable.Subscribe(x => count++);

            Assert.AreEqual(0, count);
            fake.Next.Value = !fake.Next.Value;
            Assert.AreEqual(1, count);
        }
Example #8
0
        public void ExplicitNoSignalInitial()
        {
            int count = 0;
            var fake  = new FakeInpc {
                Prop1 = false, Prop2 = true
            };
            var observable = fake.ToObservable(x => x.Next.Value, false); // Default true captures initial value
            var disposable = observable.Subscribe(x => count++);

            Assert.AreEqual(0, count);
            fake.Next = new Level {
                Value = true
            };
            Assert.AreEqual(1, count);
        }
Example #9
0
        public void TwoLevels()
        {
            int count      = 0;
            var fake       = new FakeInpc();
            var observable = fake.ToObservable(x => x.Next.Value);
            var disposable = observable.Subscribe(x => count++);

            Assert.AreEqual(1, count);
            fake.Next = new Level();
            Assert.AreEqual(2, count);
            fake.Next.Value = !fake.Next.Value;
            Assert.AreEqual(3, count);
            fake.Next = null;
            Assert.AreEqual(4, count);
        }
        public void StopsListeningOnDispose()
        {
            int count = 0;
            var fake  = new FakeInpc {
                Prop1 = true
            };
            var observable = fake.ToObservable();
            var disposable = observable.Subscribe(x => count++);

            fake.Prop1 = !fake.Prop1;
            Assert.AreEqual(1, count);
            disposable.Dispose();
            fake.Prop1 = !fake.Prop1;
            Assert.AreEqual(1, count);
        }
        public void Reacts()
        {
            int count = 0;
            var fake  = new FakeInpc {
                Prop1 = false, Prop2 = true
            };
            var observable = fake.ToObservable();
            var disposable = observable.Subscribe(x => count++);

            Assert.AreEqual(0, count);
            fake.Prop1 = !fake.Prop1;
            Assert.AreEqual(1, count);
            fake.Prop2 = !fake.Prop2;
            Assert.AreEqual(2, count);
        }
Example #12
0
        public void Reacts()
        {
            int count = 0;
            var fake  = new FakeInpc {
                Prop1 = false, Prop2 = true
            };
            var observable = fake.ToObservable(x => x.Prop1, false);
            var disposable = observable.Subscribe(x => count++);

            Assert.AreEqual(0, count);
            fake.Prop1 = !fake.Prop1;
            Assert.AreEqual(1, count);
            fake.Prop2 = !fake.Prop2; // No notification when changing other property
            Assert.AreEqual(1, count);
        }
        public void MemoryLeakTest()
        {
            var fake   = new FakeInpc();
            var level1 = new Level();
            var wr     = new WeakReference(level1);

            Assert.IsTrue(wr.IsAlive);
            var subscription = fake.ToObservable(x => x.Next.Value).Subscribe();

            fake.Next = level1;
            fake.Next = null;
            level1    = null;
            subscription.Dispose();
            GC.Collect();
            Assert.IsFalse(wr.IsAlive);
        }
Example #14
0
        public void Reacts()
        {
            var args       = new List <EventPattern <PropertyChangedEventArgs> >();
            var fake       = new FakeInpc();
            var observable = fake.ToObservable(x => x.Next.Value);

            observable.Subscribe(args.Add);
            Assert.AreEqual(1, args.Count);
            fake.Next = new Level {
                Value = false
            };
            Assert.AreEqual(2, args.Count);
            fake.Next.Value = true;
            Assert.AreEqual(3, args.Count);
            Level level1 = fake.Next;

            fake.Next = null;
            Assert.AreEqual(4, args.Count);
            level1.Value = !level1.Value;
            Assert.AreEqual(4, args.Count);
        }