private void diffTest(string a, string b) { var diff = Ut.Diff(a, b); var a2 = diff.Where(x => x.Item2 != DiffOp.Ins).Select(x => x.Item1.ToString()).JoinString(); Assert.AreEqual(a2, a); var b2 = diff.Where(x => x.Item2 != DiffOp.Del).Select(x => x.Item1.ToString()).JoinString(); Assert.AreEqual(b2, b); }
public void DiffTestPredicate() { var a = "abcdef"; var b = "aXcdeY"; var diff = Ut.Diff(a, b, predicate: c => c != 'd'); var a2 = diff.Where(x => x.Item2 != DiffOp.Ins).Select(x => x.Item1.ToString()).JoinString(); Assert.AreEqual(a2, a); var b2 = diff.Where(x => x.Item2 != DiffOp.Del).Select(x => x.Item1.ToString()).JoinString(); Assert.AreEqual(b2, b); }
public void DiffTestPostprocessor() { var a = "abcdef"; var b = "aXcdeY"; var diff = Ut.Diff(a, b, postProcessor: (aa, bb) => { bool one = aa.SequenceEqual(new char[] { 'b' }); bool two = aa.SequenceEqual(new char[] { 'f' }); Assert.That(one || two); if (one) { Assert.That(bb.SequenceEqual(new char[] { 'X' })); } else { Assert.That(bb.SequenceEqual(new char[] { 'Y' })); } return(aa.Select(c => (c, DiffOp.Del)).Concat(bb.Select(c => (c, DiffOp.Ins)))); });