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 }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }