Exemplo n.º 1
0
        public void IteratorTest()
        {
            var observableCollection = new ObservableCollection <Person>(new List <Person>()
            {
                new Person(3), new Person(2), new Person(1)
            });
            var rool  = new ReadOnlyObservableList <Person>(observableCollection);
            var srool = new SortedReadOnlyObservableList <Person>(rool, Person.CompareByAge, nameof(Person.Age));

            var s = srool.GetEnumerator();
            int j = 1;

            while (s.MoveNext())
            {
                var current = s.Current;
                Assert.AreEqual(current.Age, j);
                j++;
            }

            Assert.AreEqual(srool.Count, 3);
            for (int i = 0; i < observableCollection.Count; i++)
            {
                Assert.AreEqual(srool[i].Age, i + 1);
            }
        }
Exemplo n.º 2
0
        public void TransformingOperationsTest1()
        {
            var observableCollection = new ObservableCollection <Person>(new List <Person>()
            {
                new Person(3), new Person(1), new Person(7), new Person(5), new Person(4), new Person(6), new Person(2), new Person(7)
            });
            var rool  = new ReadOnlyObservableList <Person>(observableCollection);
            var srool = new SortedReadOnlyObservableList <Person>(rool, Person.CompareByAge, nameof(Person.Age));
            var trool = new TransformingReadOnlyObservableList <Person, int>(srool, Selector);

            int[] ages = new[] { 1, 2, 3, 4, 5, 6, 7, 7 };

            Assert.AreEqual(srool.Count, 8);
            for (int i = 0; i < observableCollection.Count; i++)
            {
                Assert.AreEqual(srool[i].Age, ages[i]);
            }

            observableCollection.Add(new Person(10));
            observableCollection.Insert(3, new Person(9));
            observableCollection.Move(5, 2);
            observableCollection[8] = new Person(8);

            Assert.AreEqual(srool.Count, 10);
            for (int i = 0; i < observableCollection.Count; i++)
            {
                Assert.AreEqual(srool[i].Age, i + 1);
            }

            for (int i = 0; i < trool.Count; i++)
            {
                Assert.AreEqual(trool[i], i + 1);
            }
        }
Exemplo n.º 3
0
        public void IndexerTest()
        {
            var observableCollection =
                new ObservableCollection <Person>(new List <Person>()
            {
                new Person(3),
                new Person(1),
                new Person(7),
                new Person(5),
                new Person(4),
                new Person(6),
                new Person(2),
                new Person(7)
            });
            var rool  = new ReadOnlyObservableList <Person>(observableCollection);
            var srool = new SortedReadOnlyObservableList <Person>(rool, Person.CompareByAge, nameof(Person.Age));

            Assert.AreEqual(srool[0].Age, 1);
            Assert.AreEqual(srool[1].Age, 2);
            Assert.AreEqual(srool[2].Age, 3);
            Assert.AreEqual(srool[3].Age, 4);
            Assert.AreEqual(srool[4].Age, 5);
            Assert.AreEqual(srool[5].Age, 6);
            Assert.AreEqual(srool[6].Age, 7);
        }
Exemplo n.º 4
0
        public void OperationsTest()
        {
            var observableCollection = new ObservableCollection <Person>(new List <Person>()
            {
                new Person(3), new Person(1), new Person(7), new Person(5), new Person(4), new Person(6), new Person(2), new Person(7)
            });
            var rool  = new ReadOnlyObservableList <Person>(observableCollection);
            var srool = new SortedReadOnlyObservableList <Person>(rool, Person.CompareByAge, nameof(Person.Age));

            int[] ages = new[] { 1, 2, 3, 4, 5, 6, 7, 7 };

            Assert.AreEqual(srool.Count, 8);
            for (int i = 0; i < observableCollection.Count; i++)
            {
                Assert.AreEqual(srool[i].Age, ages[i]);
            }

            srool.PropertyChanged += SroolOnPropertyChanged;

            observableCollection.Add(new Person(10));
            observableCollection.Insert(3, new Person(9));
            observableCollection.Move(5, 2);
            observableCollection[8] = new Person(8);

            Assert.AreEqual(srool.Count, 10);
            for (int i = 0; i < observableCollection.Count; i++)
            {
                Assert.AreEqual(srool[i].Age, i + 1);
            }
        }
Exemplo n.º 5
0
        public void MoveElementTest()
        {
            var observableCollection =
                new ObservableCollection <Person>(new List <Person>()
            {
                new Person(3),
                new Person(2),
                new Person(1),
                new Person(7),
                new Person(5),
                new Person(4),
                new Person(6),
            });
            var rool  = new ReadOnlyObservableList <Person>(observableCollection);
            var srool = new SortedReadOnlyObservableList <Person>(rool, Person.CompareByAge, nameof(Person.Age));

            observableCollection.Move(1, 3);
            observableCollection.Move(4, 2);
            observableCollection.Move(3, 5);

            Assert.AreEqual(srool.Count, 7);
            for (int i = 0; i < observableCollection.Count; i++)
            {
                Assert.AreEqual(srool[i].Age, i + 1);
            }
        }
Exemplo n.º 6
0
        public void DeleteElementTest()
        {
            var observableCollection = new ObservableCollection <Person>(new List <Person>()
            {
                new Person(3), new Person(2), new Person(1), new Person(7), new Person(5), new Person(4), new Person(6), new Person(2), new Person(7)
            });
            var rool  = new ReadOnlyObservableList <Person>(observableCollection);
            var srool = new SortedReadOnlyObservableList <Person>(rool, Person.CompareByAge, nameof(Person.Age));

            int[] ages = new[] { 1, 2, 2, 3, 4, 5, 6, 7, 7 };

            Assert.AreEqual(srool.Count, 9);
            for (int i = 0; i < observableCollection.Count; i++)
            {
                Assert.AreEqual(srool[i].Age, ages[i]);
            }

            observableCollection.RemoveAt(1);
            observableCollection.RemoveAt(2);

            Assert.AreEqual(srool.Count, 7);
            for (int i = 0; i < observableCollection.Count; i++)
            {
                Assert.AreEqual(srool[i].Age, i + 1);
            }
        }
Exemplo n.º 7
0
        public void SetOperationsTest()
        {
            const int initialCount = 15;
            const int removeItems  = 4;
            const int insertItems  = 2;
            var       items        = new[] { 40, 63, 98, 20, 24, 76, 96, 53, 5, 11, 29, 12, 46, 59, 7, 45, 86, 91, 57, 95 };
            var       indexes      = new[] { 6, 2, 5, 11, 0, 3, 13, 1 };

            var originalSet = new HashSet <Person>(items.Take(initialCount).Select(x => new Person(x)), new PersonEqualityComparer());
            var set         = new ObservableSet <Person>(originalSet);
            var sorted      = new SortedReadOnlyObservableList <Person>(set, (x, y) => x.Age.CompareTo(y.Age),
                                                                        new PersonEqualityComparer(), nameof(Person.Age));

            Assert.AreEqual(initialCount, set.Count);
            Assert.AreEqual(initialCount, sorted.Count);
            Assert.IsTrue(items.Take(initialCount).Select(x => new Person(x)).OrderBy(p => p.Age).SequenceEqual(sorted, new PersonEqualityComparer()));

            foreach (var person in indexes.Take(removeItems).Select(i => new Person(items[i])))
            {
                set.Remove(person);
            }

            Assert.AreEqual(initialCount - removeItems, set.Count);
            Assert.AreEqual(initialCount - removeItems, sorted.Count);
            Assert.IsTrue(originalSet.OrderBy(p => p.Age).SequenceEqual(sorted, new PersonEqualityComparer()));

            foreach (var person in items.Skip(initialCount).Take(insertItems).Select(x => new Person(x)))
            {
                set.Add(person);
            }

            Assert.AreEqual(initialCount - removeItems + insertItems, set.Count);
            Assert.AreEqual(initialCount - removeItems + insertItems, sorted.Count);
            Assert.IsTrue(originalSet.OrderBy(p => p.Age).SequenceEqual(sorted, new PersonEqualityComparer()));

            foreach (var result in indexes.Skip(removeItems)
                     .Zip(items.Skip(initialCount + insertItems),
                          (i, x) => new { OldItem = new Person(items[i]), NewItem = new Person(x) }))
            {
                set.SymmetricExceptWith(new[] { result.OldItem, result.NewItem });
            }

            Assert.AreEqual(initialCount - removeItems + insertItems, set.Count);
            Assert.AreEqual(initialCount - removeItems + insertItems, sorted.Count);
            Assert.IsTrue(originalSet.OrderBy(p => p.Age).SequenceEqual(sorted, new PersonEqualityComparer()));

            set.Clear();

            Assert.AreEqual(0, set.Count);
            Assert.AreEqual(0, sorted.Count);
        }
Exemplo n.º 8
0
        public void TriggerTest()
        {
            var values  = new[] { 15, 14, 89, 56, 8, 68, 17, 39, 31, 93, 78, 80, 87, 85, 57, 20, 6, 1 };
            var indexes = new[] { 8, 13, 0, 2 };

            var people     = values.Take(values.Length - indexes.Length).Select(x => new Person(x)).ToList();
            var sortedList = new SortedReadOnlyObservableList <Person>(people.ListAsObservable(),
                                                                       (x, y) => x.Age.CompareTo(y.Age), nameof(Person.Age));

            Assert.AreEqual(people.Count, sortedList.Count);
            Assert.IsTrue(people.OrderBy(x => x.Age).SequenceEqual(sortedList));

            for (int i = 0; i < indexes.Length; i++)
            {
                var person = people[indexes[i]];
                person.Age = values[values.Length - i - 1];
            }

            Assert.AreEqual(people.Count, sortedList.Count);
            Assert.IsTrue(people.OrderBy(x => x.Age).SequenceEqual(sortedList));
        }
Exemplo n.º 9
0
        public void AddElementTest()
        {
            var observableCollection = new ObservableCollection <Person>(new List <Person>()
            {
                new Person(3), new Person(2), new Person(1)
            });
            var rool  = new ReadOnlyObservableList <Person>(observableCollection);
            var srool = new SortedReadOnlyObservableList <Person>(rool, Person.CompareByAge, nameof(Person.Age));

            srool.PropertyChanged += SroolOnPropertyChanged;

            observableCollection.Add(new Person(6));
            observableCollection.Insert(2, new Person(4));
            observableCollection.Add(new Person(5));
            observableCollection.Insert(1, new Person(7));

            Assert.AreEqual(srool.Count, 7);
            for (int i = 0; i < observableCollection.Count; i++)
            {
                Assert.AreEqual(srool[i].Age, i + 1);
            }
        }