public void ItemsAddedAndRemovedTest() { var fixture = new ReactiveCollection<int>(); var before_added = new List<int>(); var before_removed = new List<int>(); var added = new List<int>(); var removed = new List<int>(); fixture.BeforeItemsAdded.Subscribe(before_added.Add); fixture.BeforeItemsRemoved.Subscribe(before_removed.Add); fixture.ItemsAdded.Subscribe(added.Add); fixture.ItemsRemoved.Subscribe(removed.Add); fixture.Add(10); fixture.Add(20); fixture.Add(30); fixture.RemoveAt(1); fixture.Clear(); var added_results = new[]{10,20,30}; Assert.AreEqual(added_results.Length, added.Count); added_results.AssertSequenceAreEqual(added); var removed_results = new[]{20}; Assert.AreEqual(removed_results.Length, removed.Count); removed_results.AssertSequenceAreEqual(removed); Assert.AreEqual(before_added.Count, added.Count); added.AssertSequenceAreEqual(before_added); Assert.AreEqual(before_removed.Count, removed.Count); removed.AssertSequenceAreEqual(before_removed); }
public void ObservableCanExecuteShouldShowUpInCommand() { (new TestScheduler()).With(sched => { var input = new[] { true, true, false, true, false, false }; var expected = new[] { true, false, true, false }; var inputObs = input.ToObservable().Multicast(new Subject<bool>()); var fixture = new ReactiveCommand(inputObs); var results = new List<bool>(); fixture.CanExecuteObservable.Subscribe(x => results.Add(x)); inputObs.Connect(); sched.Start(); expected.AssertSequenceAreEqual(results); }); }
public void CollectionCountChangedTest() { var fixture = new ReactiveCollection<int>(); var before_output = new List<int>(); var output = new List<int>(); fixture.CollectionCountChanging.Subscribe(before_output.Add); fixture.CollectionCountChanged.Subscribe(output.Add); fixture.Add(10); fixture.Add(20); fixture.Add(30); fixture.RemoveAt(1); fixture.Clear(); var before_results = new[] {0,1,2,3,2}; Assert.AreEqual(before_results.Length, before_output.Count); before_results.AssertSequenceAreEqual(before_output); var results = new[]{1,2,3,2,0}; results.AssertSequenceAreEqual(output); }