public void RandomlyReplaceRangesOfItems()
        {
            RandomGenerator.ResetRandomGenerator();

            var sut = new ObservableList <int>();

            foreach (var value in Enumerable.Range(0, 100))
            {
                sut.Add(sut.Count, value);
            }

            var watcher = new CollectionSynchronizationWatcher <int>(sut);

            var count = 100;

            foreach (var value in Enumerable.Range(0, 50))
            {
                var start    = RandomGenerator.GenerateRandomInteger(0, sut.Count);
                var oldCount = RandomGenerator.GenerateRandomInteger(0, sut.Count - start);
                var newItems = Enumerable.Range(0, 50).Select(i => RandomGenerator.GenerateRandomInteger(0, 1000)).ToArray();
                count -= oldCount;
                count += newItems.Length;
                sut.ReplaceRange(start, oldCount, newItems);
            }

            Assert.Equal(sut.Count, count);
        }
        private void SetupForPropertyChangeTests(Action <ObservableList <int> > randomChangeFunction)
        {
            RandomGenerator.ResetRandomGenerator();

            var lists = Enumerable.Range(0, 10).Select(_ => new ObservableList <int>()).ToArray();

            var list = new ObservableList <ActiveSelectManyTestClass>();

            foreach (var value in lists)
            {
                var item = new ActiveSelectManyTestClass()
                {
                    Property = value
                };
                foreach (var num in Enumerable.Range(0, 100).Select(i => RandomGenerator.GenerateRandomInteger()))
                {
                    value.Add(value.Count, num);
                }
                list.Add(list.Count, item);
            }

            var sut       = list.ToActiveList().ActiveSelectMany(o => o.Property);
            var watcher   = new CollectionSynchronizationWatcher <int>(sut);
            var validator = new LinqValidator <ActiveSelectManyTestClass, ActiveSelectManyTestClass, int>(list, sut, l => l.SelectMany(o => o.Property), false, null);

            foreach (var value in Enumerable.Range(0, 100))
            {
                var listIndex = RandomGenerator.GenerateRandomInteger(0, lists.Length);
                randomChangeFunction.Invoke(lists[listIndex]);
                validator.Validate();
            }
        }
예제 #3
0
        private void Setup(out DataTable table, out IActiveList <DataRow> sut, out CollectionSynchronizationWatcher <DataRow> watcher)
        {
            RandomGenerator.ResetRandomGenerator();

            table = new DataTable();

            table.Rows.Add(table.NewRow());
            table.Rows.Add(table.NewRow());

            sut = table.ToActiveList();

            watcher = new CollectionSynchronizationWatcher <DataRow>(sut);
        }
        public void RandomlyInsertItems()
        {
            RandomGenerator.ResetRandomGenerator();

            var sut     = new ObservableList <int>();
            var watcher = new CollectionSynchronizationWatcher <int>(sut);

            foreach (var value in Enumerable.Range(0, 100))
            {
                sut.Add(RandomGenerator.GenerateRandomInteger(0, sut.Count), value);
            }

            Assert.Equal(100, sut.Count);
        }
예제 #5
0
		public void RandomlyChangeCount()
		{
			RandomGenerator.ResetRandomGenerator();

			var value = new ActiveValue<int>(0);
			var count = new ActiveValue<int>(10);

			var sut = ActiveEnumerable.ActiveRepeat(value, count);
			var watcher = new CollectionSynchronizationWatcher<int>(sut);
			var validator = new LinqValidator<int, int, int>(() => { try { return Enumerable.Repeat(value.Value, count.Value).ToArray(); } catch { return new int[0]; } }, sut, l => l, false, i => i);

			foreach (var num in Enumerable.Range(0, 500))
			{
				count.Value = RandomGenerator.GenerateRandomInteger(-5, 50);
				validator.Validate();
			}
		}
        public void RandomlyChangeStart()
        {
            RandomGenerator.ResetRandomGenerator();

            var start = new ActiveValue <int>(0);
            var count = new ActiveValue <int>(10);

            var sut       = ActiveEnumerable.ActiveRange(start, count);
            var watcher   = new CollectionSynchronizationWatcher <int>(sut);
            var validator = new LinqValidator <int, int, int>(() => Enumerable.Range(start.Value, count.Value).ToArray(), sut, l => l, false, i => i);

            foreach (var value in Enumerable.Range(0, 500))
            {
                start.Value = RandomGenerator.GenerateRandomInteger(-50, 50);
                validator.Validate();
            }
        }
        public void ResetWithRandomItems()
        {
            RandomGenerator.ResetRandomGenerator();

            var sut = new ObservableList <int>();

            foreach (var value in Enumerable.Range(0, 100))
            {
                sut.Add(sut.Count, value);
            }

            var watcher = new CollectionSynchronizationWatcher <int>(sut);

            int count = 0;

            foreach (var value in Enumerable.Range(0, 50))
            {
                count = RandomGenerator.GenerateRandomInteger(0, 30);
                sut.Reset(Enumerable.Range(0, count).Select(i => RandomGenerator.GenerateRandomInteger(0, 1000)));
            }

            Assert.Equal(sut.Count, count);
        }
        public void RandomlyMoveRangesOfItems()
        {
            RandomGenerator.ResetRandomGenerator();

            var sut = new ObservableList <int>();

            foreach (var value in Enumerable.Range(0, 100))
            {
                sut.Add(sut.Count, value);
            }

            var watcher = new CollectionSynchronizationWatcher <int>(sut);

            foreach (var value in Enumerable.Range(0, 50))
            {
                var count  = RandomGenerator.GenerateRandomInteger(0, sut.Count + 1);
                var start  = RandomGenerator.GenerateRandomInteger(0, sut.Count - count + 1);
                var target = RandomGenerator.GenerateRandomInteger(0, sut.Count - count + 1);
                sut.MoveRange(start, target, count);
            }

            Assert.Equal(100, sut.Count);
        }
        public void RandomlyChangeIndex()
        {
            RandomGenerator.ResetRandomGenerator();

            var list = new ObservableList <int>();

            foreach (var value in Enumerable.Range(0, 100))
            {
                list.Add(list.Count, RandomGenerator.GenerateRandomInteger());
            }

            var index = new ActiveValue <int>();

            var sut       = list.ActiveSkip(index);
            var watcher   = new CollectionSynchronizationWatcher <int>(sut);
            var validator = new LinqValidator <int, int, int>(list, sut, l => l.Skip(index.Value), false, null);

            foreach (var value in Enumerable.Range(0, 100))
            {
                index.Value = RandomGenerator.GenerateRandomInteger(-10, 110);

                validator.Validate();
            }
        }
        public void RandomlyChangeDirection()
        {
            RandomGenerator.ResetRandomGenerator();

            var list = new ObservableList <int>();

            foreach (var value in Enumerable.Range(0, 100))
            {
                list.Add(list.Count, RandomGenerator.GenerateRandomInteger());
            }

            var index = new ActiveValue <ListSortDirection>();

            var sut       = list.ActiveOrderBy(i => i, index);
            var watcher   = new CollectionSynchronizationWatcher <int>(sut);
            var validator = new LinqValidator <int, int, int>(list, sut, l => index.Value == ListSortDirection.Ascending ? l.OrderBy(i => i) : l.OrderByDescending(i => i), false, null);

            foreach (var value in Enumerable.Range(0, 10))
            {
                index.Value = RandomGenerator.GenerateRandomInteger(0, 2) == 0 ? ListSortDirection.Ascending : ListSortDirection.Descending;

                validator.Validate();
            }
        }