private void ChainEqualityComparer_WithDecorator_Tests(TestChainEqualityComparerDecorator comparer, int count, int lengthFrom, long lengthTo) { for (int length = lengthFrom; length <= lengthTo; length++) { var log = new List <string>(); log.Add(count.ToString()); log.Add(length.ToString()); log.Add("\tequal:"); // equal chains ChainEqualityComparer_WithDecorator_Test(comparer, log, count, length, i => "an item of the chain"); log.Add("\trandom:"); // random chains var random = new Random(); ChainEqualityComparer_WithDecorator_Test(comparer, log, count, length, i => random.Next(0, 1_000_000).ToString()); log.Add("\tpermut:"); // permutation chains var keys = GenerateKeys(count, length, random); ChainEqualityComparer_WithDecorator_Test(comparer, log, count, length, i => keys[i][random.Next(0, length - 1)]); string line = string.Join('|', log); _output.WriteLine(line); Console.WriteLine(line); } }
private void ChainEqualityComparer_WithDecorator_Test(TestChainEqualityComparerDecorator comparer, List <string> log, int count, int length, Func <int, string> getNext) { var hashSet = new HashSet <string[]>(comparer); for (int i = 0; i < count; i++) { string[] chain = new string[length]; for (int j = 0; j < length; j++) { string next = getNext(i); chain[j] = next; } hashSet.Add(chain); } log.Add(comparer.GetHashCodeCounter.ToString()); log.Add(comparer.EqualsCounter.ToString()); log.Add(comparer.GetHashCodeMs.ToString()); log.Add(comparer.EqualsMs.ToString()); }
public void ChainEqualityComparer_Tests(int count, int lengthFrom, long lengthTo) { var comparer = new TestChainEqualityComparerDecorator(new ChainEqualityComparer()); ChainEqualityComparer_WithDecorator_Tests(comparer, count, lengthFrom, lengthTo); }