public static void RandomlyChangeParameterInTwoCollections <T1, T2, U>(Func <IActiveList <T1>, IActiveList <T2>, IActiveValue <IntegerTestClass>, IActiveList <U> > activeExpression, Func <IReadOnlyList <T1>, IReadOnlyList <T2>, IntegerTestClass, IEnumerable <U> > linqExpression, Func <T1> randomValueGenerator1, Func <T2> randomValueGenerator2, bool useSetComparison = false, Func <U, object> keySelector = null) { RandomGenerator.ResetRandomGenerator(); var list1 = new ObservableList <T1>(); var list2 = new ObservableList <T2>(); foreach (var value in Enumerable.Range(0, 100)) { list1.Add(list1.Count, randomValueGenerator1.Invoke()); list2.Add(list2.Count, randomValueGenerator2.Invoke()); } var parameter = new ActiveValue <IntegerTestClass>() { Value = new IntegerTestClass() { Property = 1 } }; var sut = activeExpression.Invoke(list1.ToActiveList(), list2.ToActiveList(), parameter); var watcher = new CollectionSynchronizationWatcher <U>(sut); var validator = new LinqValidator <T1, T2, U>(list1, list2, sut, (l1, l2) => linqExpression.Invoke(l1, l2, parameter.Value), useSetComparison, keySelector); foreach (var value in Enumerable.Range(0, 30)) { parameter.Value.Property = RandomGenerator.GenerateRandomInteger(1, 11); validator.Validate(); } }
public static void RandomlyChangePropertyValuesInTwoCollections <T1, T2, U>(Func <IActiveList <T1>, IActiveList <T2>, IActiveList <U> > activeExpression, Func <IReadOnlyList <T1>, IReadOnlyList <T2>, IEnumerable <U> > linqExpression, Func <T1> randomValueGenerator1, Func <T2> randomValueGenerator2, Action <T1> randomPropertySetter1, Action <T2> randomPropertySetter2, bool useSetComparison = false, Func <U, object> keySelector = null) { RandomGenerator.ResetRandomGenerator(); var list1 = new ObservableList <T1>(); var list2 = new ObservableList <T2>(); foreach (var value in Enumerable.Range(0, 100)) { list1.Add(list1.Count, randomValueGenerator1.Invoke()); list2.Add(list2.Count, randomValueGenerator2.Invoke()); } var sut = activeExpression.Invoke(list1.ToActiveList(), list2.ToActiveList()); var watcher = new CollectionSynchronizationWatcher <U>(sut); var validator = new LinqValidator <T1, T2, U>(list1, list2, sut, linqExpression, useSetComparison, keySelector); foreach (var value in Enumerable.Range(0, 100)) { if (RandomGenerator.GenerateRandomInteger(0, 2) == 0) { randomPropertySetter1.Invoke(list1[RandomGenerator.GenerateRandomInteger(0, list1.Count)]); } else { randomPropertySetter2.Invoke(list2[RandomGenerator.GenerateRandomInteger(0, list2.Count)]); } validator.Validate(); } }
public static void RandomlyChangeParameter <T, U>(Func <IActiveList <T>, IActiveValue <IntegerTestClass>, IActiveList <U> > activeExpression, Func <IReadOnlyList <T>, IntegerTestClass, IEnumerable <U> > linqExpression, Func <T> randomValueGenerator, bool useSetComparison = false, Func <U, object> keySelector = null, Func <U, U, bool> additonalComparer = null) { RandomGenerator.ResetRandomGenerator(); var list = new ObservableList <T>(); foreach (var value in Enumerable.Range(0, 100)) { list.Add(list.Count, randomValueGenerator.Invoke()); } var parameter = new ActiveValue <IntegerTestClass>() { Value = new IntegerTestClass() { Property = 1 } }; var sut = activeExpression.Invoke(list.ToActiveList(), parameter); var watcher = new CollectionSynchronizationWatcher <U>(sut); var validator = new LinqValidator <T, T, U>(list, sut, l => linqExpression.Invoke(l, parameter.Value), useSetComparison, keySelector, additonalComparer); foreach (var value in Enumerable.Range(0, 30)) { parameter.Value.Property = RandomGenerator.GenerateRandomInteger(1, 11); validator.Validate(); } }
public static void RandomlyInsertItems <T, U>(Func <IActiveList <T>, IActiveList <U> > activeExpression, Func <IReadOnlyList <T>, IEnumerable <U> > linqExpression, Func <T> randomValueGenerator, bool useSetComparison = false, Func <U, object> keySelector = null, Func <U, U, bool> additonalComparer = null) { RandomGenerator.ResetRandomGenerator(); var list = new ObservableList <T>(); var sut = activeExpression.Invoke(list.ToActiveList()); var watcher = new CollectionSynchronizationWatcher <U>(sut); var validator = new LinqValidator <T, T, U>(list, sut, linqExpression, useSetComparison, keySelector, additonalComparer); foreach (var value in Enumerable.Range(0, 100)) { list.Add(RandomGenerator.GenerateRandomInteger(0, list.Count), randomValueGenerator.Invoke()); validator.Validate(); } }