コード例 #1
0
        public void diff_halfmatchTest()
        {
            diff_match_patchTest dmp = new diff_match_patchTest();
              dmp.Diff_Timeout = 1;
              // No match.
              Assert.IsNull(dmp.DiffHalfMatch("1234567890", "abcdef"));

              Assert.IsNull(dmp.DiffHalfMatch("12345", "23"));

              // Single Match.
              CollectionAssert.AreEqual(new string[] { "12", "90", "a", "z", "345678" }, dmp.DiffHalfMatch("1234567890", "a345678z"));

              CollectionAssert.AreEqual(new string[] { "a", "z", "12", "90", "345678" }, dmp.DiffHalfMatch("a345678z", "1234567890"));

              CollectionAssert.AreEqual(new string[] { "abc", "z", "1234", "0", "56789" }, dmp.DiffHalfMatch("abc56789z", "1234567890"));

              CollectionAssert.AreEqual(new string[] { "a", "xyz", "1", "7890", "23456" }, dmp.DiffHalfMatch("a23456xyz", "1234567890"));

              // Multiple Matches.
              CollectionAssert.AreEqual(new string[] { "12123", "123121", "a", "z", "1234123451234" }, dmp.DiffHalfMatch("121231234123451234123121", "a1234123451234z"));

              CollectionAssert.AreEqual(new string[] { "", "-=-=-=-=-=", "x", "", "x-=-=-=-=-=-=-=" }, dmp.DiffHalfMatch("x-=-=-=-=-=-=-=-=-=-=-=-=", "xx-=-=-=-=-=-=-="));

              CollectionAssert.AreEqual(new string[] { "-=-=-=-=-=", "", "", "y", "-=-=-=-=-=-=-=y" }, dmp.DiffHalfMatch("-=-=-=-=-=-=-=-=-=-=-=-=y", "-=-=-=-=-=-=-=yy"));

              // Non-optimal halfmatch.
              // Optimal diff would be -q+x=H-i+e=lloHe+Hu=llo-Hew+y not -qHillo+x=HelloHe-w+Hulloy
              CollectionAssert.AreEqual(new string[] { "qHillo", "w", "x", "Hulloy", "HelloHe" }, dmp.DiffHalfMatch("qHilloHelloHew", "xHelloHeHulloy"));

              // Optimal no halfmatch.
              dmp.Diff_Timeout = 0;
              Assert.IsNull(dmp.DiffHalfMatch("qHilloHelloHew", "xHelloHeHulloy"));
        }