Ejemplo n.º 1
0
        public void DataComparerTest(string x, string y, int expected)
        {
            var dataComparer = new StringDataItemComparer();
            var actual       = dataComparer.Compare(x, y);

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 2
0
        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());
            }
        }