/// <summary> /// Tests the merge. /// </summary> /// <param name="source">The source content.</param> /// <param name="changed1">The first changed content.</param> /// <param name="changed2">The second changed content.</param> /// <param name="expectedText">The expected text.</param> /// <param name="merger">The merger.</param> public static void TestMerge(IReadOnlyList<string> source, IReadOnlyList<string> changed1, IReadOnlyList<string> changed2, string[] expectedText, IChangesetMerger merger) { Result result = Merger.Merge(source, changed1, changed2, merger); string[] actualText = result.Text.ToArray(); Assert.IsNotNull(actualText); CollectionAssert.AreEqual(expectedText, actualText); }
/// <summary> /// Tests the merge with conflict. /// </summary> /// <param name="source">The source.</param> /// <param name="changed1">The changed1.</param> /// <param name="changed2">The changed2.</param> /// <param name="merger">The merger.</param> public static void TestMergeWithConflict(IReadOnlyList <string> source, IReadOnlyList <string> changed1, IReadOnlyList <string> changed2, IChangesetMerger merger) { string[] result = GenerateConflictResult(source, changed1, changed2).ToArray(); TestMerge(source, changed1, changed2, result, merger); result = GenerateConflictResult(source, changed2, changed1).ToArray(); TestMerge(source, changed2, changed1, result, merger); }
/// <summary> /// Initializes a new instance of the <see cref="Presenter"/> class. /// </summary> /// <param name="merger">The merger.</param> /// <exception cref="System.ArgumentNullException"></exception> internal Presenter(IChangesetMerger merger) { if (merger == null) { throw new ArgumentNullException(); } _merger = merger; }
/// <summary> /// Tests the null. /// </summary> /// <param name="merger">The merger.</param> public static void TestNull(IChangesetMerger merger) { string[] empty = { }; ExceptionAssert.Throws <ArgumentNullException>(() => Merger.Merge(null, empty, empty, merger)); ExceptionAssert.Throws <ArgumentNullException>(() => Merger.Merge(empty, null, empty, merger)); ExceptionAssert.Throws <ArgumentNullException>(() => Merger.Merge(empty, empty, null, merger)); ExceptionAssert.Throws <ArgumentNullException>(() => Merger.Merge(empty, empty, empty, null)); Merger.Merge(empty, empty, empty, merger); }
/// <summary> /// Performs the merge. /// </summary> /// <param name="source">The source content.</param> /// <param name="changed1">The first changed content.</param> /// <param name="changed2">The second changed content.</param> /// <param name="merger">The merger.</param> /// <returns></returns> public static Result Merge(IReadOnlyList <string> source, IReadOnlyList <string> changed1, IReadOnlyList <string> changed2, IChangesetMerger merger) { if (merger == null) { throw new ArgumentNullException(); } var changeset1 = new MergableChangeset(source, changed1); var changeset2 = new MergableChangeset(source, changed2); Changeset <IChange> merged = merger.Merge(changeset1, changeset2, source); IEnumerable <string> result = merged.Apply(source); return(new Result(merged, result)); }
/// <summary> /// Performs the merge. /// </summary> /// <param name="source">The source content.</param> /// <param name="changed1">The first changed content.</param> /// <param name="changed2">The second changed content.</param> /// <param name="merger">The merger.</param> /// <returns></returns> public static Result Merge(IReadOnlyList<string> source, IReadOnlyList<string> changed1, IReadOnlyList<string> changed2, IChangesetMerger merger) { if (merger == null) { throw new ArgumentNullException(); } var changeset1 = new MergableChangeset(source, changed1); var changeset2 = new MergableChangeset(source, changed2); Changeset<IChange> merged = merger.Merge(changeset1, changeset2, source); IEnumerable<string> result = merged.Apply(source); return new Result(merged, result); }
/// <summary> /// Tests the merge. /// </summary> /// <param name="source">The source content.</param> /// <param name="changed1">The first changed content.</param> /// <param name="changed2">The second changed content.</param> /// <param name="expectedText">The expected text.</param> /// <param name="merger">The merger.</param> /// <param name="symmetric">Should reversed merge match the original one.</param> public static void TestMerge(IReadOnlyList<string> source, IReadOnlyList<string> changed1, IReadOnlyList<string> changed2, string[] expectedText, IChangesetMerger merger, bool symmetric) { TestMerge(source, changed1, changed2, expectedText, merger); if (symmetric) { TestMerge(source, changed2, changed1, expectedText, merger); } }
/// <summary> /// Tests the null. /// </summary> /// <param name="merger">The merger.</param> public static void TestNull(IChangesetMerger merger) { string[] empty = { }; ExceptionAssert.Throws<ArgumentNullException>(() => Merger.Merge(null, empty, empty, merger)); ExceptionAssert.Throws<ArgumentNullException>(() => Merger.Merge(empty, null, empty, merger)); ExceptionAssert.Throws<ArgumentNullException>(() => Merger.Merge(empty, empty, null, merger)); ExceptionAssert.Throws<ArgumentNullException>(() => Merger.Merge(empty, empty, empty, null)); Merger.Merge(empty, empty, empty, merger); }
/// <summary> /// Tests the merge with conflict. /// </summary> /// <param name="source">The source.</param> /// <param name="changed1">The changed1.</param> /// <param name="changed2">The changed2.</param> /// <param name="merger">The merger.</param> public static void TestMergeWithConflict(IReadOnlyList<string> source, IReadOnlyList<string> changed1, IReadOnlyList<string> changed2, IChangesetMerger merger) { string[] result = GenerateConflictResult(source, changed1, changed2).ToArray(); TestMerge(source, changed1, changed2, result, merger); result = GenerateConflictResult(source, changed2, changed1).ToArray(); TestMerge(source, changed2, changed1, result, merger); }
/// <summary> /// Tests the merge. /// </summary> /// <param name="source">The source content.</param> /// <param name="changed1">The first changed content.</param> /// <param name="changed2">The second changed content.</param> /// <param name="expectedText">The expected text.</param> /// <param name="merger">The merger.</param> /// <param name="symmetric">Should reversed merge match the original one.</param> public static void TestMerge(IReadOnlyList <string> source, IReadOnlyList <string> changed1, IReadOnlyList <string> changed2, string[] expectedText, IChangesetMerger merger, bool symmetric) { TestMerge(source, changed1, changed2, expectedText, merger); if (symmetric) { TestMerge(source, changed2, changed1, expectedText, merger); } }
/// <summary> /// Tests the merge. /// </summary> /// <param name="source">The source content.</param> /// <param name="changed1">The first changed content.</param> /// <param name="changed2">The second changed content.</param> /// <param name="expectedText">The expected text.</param> /// <param name="merger">The merger.</param> public static void TestMerge(IReadOnlyList <string> source, IReadOnlyList <string> changed1, IReadOnlyList <string> changed2, string[] expectedText, IChangesetMerger merger) { Result result = Merger.Merge(source, changed1, changed2, merger); string[] actualText = result.Text.ToArray(); Assert.IsNotNull(actualText); CollectionAssert.AreEqual(expectedText, actualText); }