Пример #1
0
        public ConcatObservableToActiveList()
        {
            _list = ActiveList.Create <T>();

            _list.PropertyChanged   += (s, e) => _propertyChanged?.Invoke(this, e);
            _list.CollectionChanged += (s, e) => _collectionChanged?.Invoke(this, e);
        }
Пример #2
0
        public void MutatedListIsCorrectWithoutAnyAppliedChanges()
        {
            var source = ActiveList.Create(new[] { 1, 2, 3 });

            var sut = source.AsActiveValue().ActiveSelect(list => list.Select(i => i * 2));

            Assert.True(source.SequenceEqual(sut.Value.Select(i => i / 2)));
        }
Пример #3
0
        public void SelectByKeyGroupStaysUpToDateAfterReset()
        {
            var list = ActiveList.Create(Enumerable.Range(0, 5));

            var sut = list.ToActiveLookup(i => i / 10).ActiveSelectByKey(0);

            Assert.True(list.SequenceEqual(sut));

            list.Reset(new[] { 1, 12, 7, 3, 18 });

            Assert.True(new[] { 1, 7, 3 }.SequenceEqual(sut));
        }
        public void SkipCountAndIncreaseSkip()
        {
            int raisedCount = 0;
            var skipCount   = ActiveValue.Create(3);
            var list        = ActiveList.Create(new[] { 1, 2, 3 });
            var sut         = list.ActiveSkip(skipCount);

            sut.CollectionChanged += (s, e) => ++ raisedCount;

            skipCount.Value = 4;

            Assert.Equal(0, raisedCount);
        }
        public void SkipLessThanCountAndDecreaseSkip()
        {
            int raisedCount = 0;
            var skipCount   = ActiveValue.Create(2);
            var list        = ActiveList.Create(new[] { 1, 2, 3 });
            var sut         = list.ActiveSkip(skipCount);

            sut.CollectionChanged += (s, e) => raisedCount += e.Action == NotifyCollectionChangedAction.Add ? 1 : 0;

            skipCount.Value = 1;

            Assert.Equal(1, raisedCount);
        }
Пример #6
0
        public void NewGroupStaysUpToDate()
        {
            var list = ActiveList.Create(Enumerable.Range(0, 5));

            var sut = list.ToActiveLookup(i => i / 10);

            Assert.True(new int[0].SequenceEqual(sut[1]));

            list.Add(1, 7);
            list.Add(2, 15);

            Assert.True(new[] { 15 }.SequenceEqual(sut[1]));
        }
Пример #7
0
        public void ExistingGroupStaysUpToDate()
        {
            var list = ActiveList.Create(Enumerable.Range(0, 5));

            var sut = list.ToActiveLookup(i => i / 10);

            Assert.True(list.SequenceEqual(sut[0]));

            list.Add(2, 15);
            list.Add(1, 7);

            Assert.True(new[] { 0, 7, 1, 2, 3, 4 }.SequenceEqual(sut[0]));
        }
        public void TakeLessThanCountAndDecreaseTake()
        {
            int raisedCount = 0;
            var takeCount   = ActiveValue.Create(2);
            var list        = ActiveList.Create(new[] { 1, 2, 3 });
            var sut         = list.ActiveTake(takeCount);

            sut.CollectionChanged += (s, e) => raisedCount += e.Action == NotifyCollectionChangedAction.Remove ? 1 : 0;

            takeCount.Value = 1;

            Assert.Equal(1, raisedCount);
        }
        public void TakeMoreThanCountAndDecreaseTake()
        {
            int raisedCount = 0;
            var takeCount   = ActiveValue.Create(4);
            var list        = ActiveList.Create(new[] { 1, 2, 3 });
            var sut         = list.ActiveTake(takeCount);

            sut.CollectionChanged += (s, e) => ++ raisedCount;

            takeCount.Value = 3;

            Assert.Equal(0, raisedCount);
        }
Пример #10
0
        public void OrderingInsideGroupMatchesSourceOrdering()
        {
            var list = ActiveList.Create(Enumerable.Range(0, 5));

            var sut = list.ToActiveLookup(i => i / 10);

            Assert.True(new int[] { 0, 1, 2, 3, 4 }.SequenceEqual(sut[0]));

            list.Add(2, 7);
            list.Add(1, 15);
            list.Add(0, 9);

            Assert.True(new int[] { 9, 0, 1, 7, 2, 3, 4 }.SequenceEqual(sut[0]));
        }
Пример #11
0
        public void ChangingParameterStaysUpToDate()
        {
            var list = ActiveList.Create(Enumerable.Range(5, 10));

            var lookup = list.ToActiveLookup(i => i / 10);

            var parameter = ActiveValue.Create(0);

            var sut = lookup.ActiveSelectByKey(parameter);

            Assert.True(list.Take(5).SequenceEqual(sut));

            parameter.Value = 1;

            Assert.True(list.Skip(5).Take(5).SequenceEqual(sut));
        }
Пример #12
0
        public void WithoutPredicateOnlyThrowChangeNotificationWhenValueChanges()
        {
            var list = ActiveList.Create <int>();

            int changeCount = 0;

            var sut = list.ActiveAny();

            sut.ValueChanged += (s, e) => ++ changeCount;

            list.Add(0, 1);
            list.Add(0, 2);

            list.Clear();

            Assert.Equal(2, changeCount);
        }
Пример #13
0
        public void NewGroupThrowsChangeNotifications()
        {
            var list = ActiveList.Create(Enumerable.Range(0, 5));

            var sut = list.ToActiveLookup(i => i / 10);

            var group = sut[1];

            bool changeOccured = false;

            group.CollectionChanged += (s, e) => changeOccured = true;

            list.Add(1, 7);

            Assert.False(changeOccured);

            list.Add(2, 15);

            Assert.True(changeOccured);
        }
Пример #14
0
        public void ChangingParameterThrowsResetNotification()
        {
            var list = ActiveList.Create(Enumerable.Range(5, 10));

            var lookup = list.ToActiveLookup(i => i / 10);

            var parameter = ActiveValue.Create(0);

            var sut = lookup.ActiveSelectByKey(parameter);

            bool changeOccured = false;

            sut.CollectionChanged += (s, e) => changeOccured = true;

            Assert.False(changeOccured);

            parameter.Value = 1;

            Assert.True(changeOccured);
        }
Пример #15
0
        public void GroupOrderingMatchesSourceOrdering()
        {
            var list = ActiveList.Create(new[] { 1, 2, 5, 3 });

            var sut = list.ToActiveLookup(i => i / 2);

            Assert.True(new int[] { 0, 1, 2 }.SequenceEqual(sut.Select(g => g.Key)));

            list.Remove(1);

            Assert.True(new int[] { 0, 2, 1 }.SequenceEqual(sut.Select(g => g.Key)));

            list.Add(4);

            Assert.True(new int[] { 0, 2, 1 }.SequenceEqual(sut.Select(g => g.Key)));

            list.Move(1, 0);

            Assert.True(new int[] { 2, 0, 1 }.SequenceEqual(sut.Select(g => g.Key)));

            list.Add(0, 8);

            Assert.True(new int[] { 4, 2, 0, 1 }.SequenceEqual(sut.Select(g => g.Key)));
        }