public void DataComparerTest(string x, string y, int expected) { var dataComparer = new StringDataItemComparer(); var actual = dataComparer.Compare(x, y); Assert.AreEqual(expected, actual); }
public static void MergeFiles(string source1, string source2, string destination) { using var reader1 = new StreamReader(source1); using var reader2 = new StreamReader(source2); using var writer = new StreamWriter(destination); using var iterator1 = ToIterator(reader1); using var iterator2 = ToIterator(reader2); var iterator1StillAvailable = iterator1.MoveNext(); var iterator2StillAvailable = iterator2.MoveNext(); while (iterator1StillAvailable && iterator2StillAvailable) { if (Comparer.Compare(iterator1.Current, iterator2.Current) <= 0) { writer.WriteLine(iterator1.Current); iterator1StillAvailable = iterator1.MoveNext(); } else { writer.WriteLine(iterator2.Current); iterator2StillAvailable = iterator2.MoveNext(); } } //check which iterator can still provide values var iteratorRemaining = iterator1StillAvailable ? iterator1 : iterator2StillAvailable ? iterator2 : null; if (null != iteratorRemaining) { do { writer.WriteLine(iteratorRemaining.Current); } while (iteratorRemaining.MoveNext()); } }