public void ReactsAndNotifiesOnSourceChanges()
            {
                var ints = new ObservableCollection <int> {
                    1, 2, 3
                };

                using (var tracker = MinTracker.TrackMin(ints))
                {
                    Assert.AreEqual(1, tracker.Value);
                    int count = 0;
                    using (tracker.ObservePropertyChangedSlim(x => x.Value, signalInitial: false)
                           .Subscribe(_ => count++))
                    {
                        ints.Remove(2);
                        Assert.AreEqual(0, count);
                        Assert.AreEqual(1, tracker.Value);

                        ints.Remove(1);
                        Assert.AreEqual(1, count);
                        Assert.AreEqual(3, tracker.Value);

                        ints.Remove(3);
                        Assert.AreEqual(2, count);
                        Assert.AreEqual(null, tracker.Value);

                        ints.Add(2);
                        Assert.AreEqual(3, count);
                        Assert.AreEqual(2, tracker.Value);
                    }
                }
            }
Exemple #2
0
        public void ReactsAndNotifiesOnSourceChanges()
        {
            var ints    = new ObservableCollection <int>(new[] { 1, 2, 3 });
            var tracker = MinTracker.TrackMin(ints, -1);

            Assert.AreEqual(1, tracker.Value);
            int count = 0;

            tracker.ObservePropertyChanged(x => x.Value, false)
            .Subscribe(_ => count++);
            ints.Remove(2);
            Assert.AreEqual(0, count);
            Assert.AreEqual(1, tracker.Value);

            ints.Remove(1);
            Assert.AreEqual(1, count);
            Assert.AreEqual(3, tracker.Value);

            ints.Remove(3);
            Assert.AreEqual(2, count);
            Assert.AreEqual(-1, tracker.Value);

            ints.Add(2);
            Assert.AreEqual(3, count);
            Assert.AreEqual(2, tracker.Value);
        }