예제 #1
0
        RangedObservableCollection <T> ct <T>(IEnumerable <T> ts)
        {
            var a = new RangedObservableCollection <T>();

            a.AddRange(ts);
            return(a);
        }
예제 #2
0
    public void RemoveRangeTest()
    {
        var source = new RangedObservableCollection <Person>(new[]
        {
            new Person {
                Name = "tanaka1", IsRemoved = false
            },
            new Person {
                Name = "tanaka2", IsRemoved = true
            },
            new Person {
                Name = "tanaka3", IsRemoved = false
            },
            new Person {
                Name = "tanaka4", IsRemoved = true
            },
            new Person {
                Name = "tanaka5", IsRemoved = false
            },
        });

        var filtered = source.ToFilteredReadOnlyObservableCollection(x => !x.IsRemoved);
        var buffer   = new List <NotifyCollectionChangedEventArgs>();

        filtered.Is(source[0], source[2], source[4]);
        source.RemoveRange(new[]
        {
            source[0], source[1], source[2],
        });
        filtered.Is(source.Last());
    }
    public void AddRangeTest()
    {
        var source = new RangedObservableCollection <int>();
        var target = source.ToReadOnlyReactiveCollection(x => $"{x}");

        source.Add(1);
        target.Is("1");
        source.AddRange(new[] { 2, 3, 4 });
        target.Is("1", "2", "3", "4");
    }
예제 #4
0
        public ToDoListPageViewModel(INavigationService navigationService,
                                     RealmService realmService
                                     )
            : base(navigationService)
        {
            Title        = AppResources.ViewATitle;
            RealmService = realmService;

            Tasks      = new RangedObservableCollection <ToDoListItemViewModel>();
            AddCommand = new DelegateCommand(AddTask);
        }
예제 #5
0
    public void ReplaceRangeTest()
    {
        var c        = new RangedObservableCollection <Person>();
        var filtered = c.ToFilteredReadOnlyObservableCollection(x => x.IsRemoved);
        var people   = Enumerable.Range(1, 1000000).Select(x => new Person
        {
            Name      = $"tanaka {x}",
            IsRemoved = x % 2 == 0,
        });

        c.ReplaceRange(people);
        filtered.Count.Is(500000);
    }
예제 #6
0
    public void AddRangeSmallItemsCaseTest()
    {
        var c        = new RangedObservableCollection <Person>();
        var filtered = c.ToFilteredReadOnlyObservableCollection(x => x.IsRemoved);
        var people   = Enumerable.Range(1, 6).Select(x => new Person
        {
            Name      = $"tanaka {x}",
            IsRemoved = x % 2 == 0,
        });

        c.AddRange(people);
        filtered.Count.Is(3);
    }
예제 #7
0
        public void AddRangeRaisesCorrectCollectionChangedEvent()
        {
            var collection = new RangedObservableCollection <int>();

            collection.CollectionChanged += (s, e) =>
            {
                Assert.Equal(NotifyCollectionChangedAction.Add, e.Action);
                Assert.Null(e.OldItems);
                Assert.Equal(ItemsToAdd, e.NewItems);
            };

            collection.AddRange(ItemsToAdd);

            Assert.Equal(ItemsToAdd, collection.ToArray());
        }
예제 #8
0
        public void AddRangeRaisesCollectionChangedOnce()
        {
            var collection = new RangedObservableCollection <int>();

            var didTrigger = false;

            collection.CollectionChanged += (s, e) =>
            {
                Assert.False(didTrigger);
                didTrigger = true;
            };

            collection.AddRange(ItemsToAdd);

            Assert.True(didTrigger);
        }
예제 #9
0
        public void RemoveRangeRaisesCorrectCollectionChangedEventForNonExistentRemoves()
        {
            var collection = new RangedObservableCollection <int>();

            collection.AddRange(ItemsToAdd);

            collection.CollectionChanged += (s, e) =>
            {
                Assert.Equal(NotifyCollectionChangedAction.Remove, e.Action);
                Assert.Equal(new[] { 1, 2, 3, 4, 5 }, e.OldItems);
                Assert.Null(e.NewItems);
            };

            collection.RemoveRange(new[] { 1, 2, 3, 4, 5, 60, 70, 80, 90, 100 });

            Assert.Equal(new[] { 6, 7, 8, 9, 0 }, collection.ToArray());
        }
예제 #10
0
        private void Load()
        {
            if (records == null)
            {
                records = TmpData.PasswordKeeper.Records;
            }
            CharacterGroupings groupings = new CharacterGroupings();

            observablerecords = new RangedObservableCollection <PasswordRecordViewModelGroup>(records.Select(a => PasswordRecordViewModel.CreateFromRecord(a))
                                                                                              .OrderBy(a => a.DisplayName).GroupBy((a) => groupings.Lookup(a.DisplayName))
                                                                                              .Select(a => new PasswordRecordViewModelGroup(a.Key, ct(a))));

            UpdateForVisualState(AdaptiveStates.CurrentState);

            // Don't play a content transition for first item load.
            // Sometimes, this content will be animated as part of the page transition.
            DisableContentTransitions();
        }
예제 #11
0
        public void RemoveRangeDoesNotRaiseCollectionChangedForMismatchingItems()
        {
            var collection = new RangedObservableCollection <int>();

            collection.AddRange(ItemsToAdd);

            var didTrigger = false;

            collection.CollectionChanged += (s, e) =>
            {
                Assert.False(didTrigger);
                didTrigger = true;
            };

            collection.RemoveRange(AlternateItemsToAdd);

            Assert.False(didTrigger);
        }