nicTest.diff_match_patchTest.diff_cleanupSemanticLosslessTest C# (CSharp) Method

diff_cleanupSemanticLosslessTest() private method

private diff_cleanupSemanticLosslessTest ( ) : void
return void
    public void diff_cleanupSemanticLosslessTest() {
      diff_match_patchTest dmp = new diff_match_patchTest();
      // Slide diffs to match logical boundaries.
      // Null case.
      List<Diff> diffs = new List<Diff>();
      dmp.diff_cleanupSemanticLossless(diffs);
      CollectionAssert.AreEqual(new List<Diff>(), diffs);

      // Blank lines.
      diffs = new List<Diff> {
          new Diff(Operation.EQUAL, "AAA\r\n\r\nBBB"),
          new Diff(Operation.INSERT, "\r\nDDD\r\n\r\nBBB"),
          new Diff(Operation.EQUAL, "\r\nEEE")
      };
      dmp.diff_cleanupSemanticLossless(diffs);
      CollectionAssert.AreEqual(new List<Diff> {
          new Diff(Operation.EQUAL, "AAA\r\n\r\n"),
          new Diff(Operation.INSERT, "BBB\r\nDDD\r\n\r\n"),
          new Diff(Operation.EQUAL, "BBB\r\nEEE")}, diffs);

      // Line boundaries.
      diffs = new List<Diff> {
          new Diff(Operation.EQUAL, "AAA\r\nBBB"),
          new Diff(Operation.INSERT, " DDD\r\nBBB"),
          new Diff(Operation.EQUAL, " EEE")};
      dmp.diff_cleanupSemanticLossless(diffs);
      CollectionAssert.AreEqual(new List<Diff> {
          new Diff(Operation.EQUAL, "AAA\r\n"),
          new Diff(Operation.INSERT, "BBB DDD\r\n"),
          new Diff(Operation.EQUAL, "BBB EEE")}, diffs);

      // Word boundaries.
      diffs = new List<Diff> {
          new Diff(Operation.EQUAL, "The c"),
          new Diff(Operation.INSERT, "ow and the c"),
          new Diff(Operation.EQUAL, "at.")};
      dmp.diff_cleanupSemanticLossless(diffs);
      CollectionAssert.AreEqual(new List<Diff> {
          new Diff(Operation.EQUAL, "The "),
          new Diff(Operation.INSERT, "cow and the "),
          new Diff(Operation.EQUAL, "cat.")}, diffs);

      // Alphanumeric boundaries.
      diffs = new List<Diff> {
          new Diff(Operation.EQUAL, "The-c"),
          new Diff(Operation.INSERT, "ow-and-the-c"),
          new Diff(Operation.EQUAL, "at.")};
      dmp.diff_cleanupSemanticLossless(diffs);
      CollectionAssert.AreEqual(new List<Diff> {
          new Diff(Operation.EQUAL, "The-"),
          new Diff(Operation.INSERT, "cow-and-the-"),
          new Diff(Operation.EQUAL, "cat.")}, diffs);

      // Hitting the start.
      diffs = new List<Diff> {
          new Diff(Operation.EQUAL, "a"),
          new Diff(Operation.DELETE, "a"),
          new Diff(Operation.EQUAL, "ax")};
      dmp.diff_cleanupSemanticLossless(diffs);
      CollectionAssert.AreEqual(new List<Diff> {
          new Diff(Operation.DELETE, "a"),
          new Diff(Operation.EQUAL, "aax")}, diffs);

      // Hitting the end.
      diffs = new List<Diff> {
          new Diff(Operation.EQUAL, "xa"),
          new Diff(Operation.DELETE, "a"),
          new Diff(Operation.EQUAL, "a")};
      dmp.diff_cleanupSemanticLossless(diffs);
      CollectionAssert.AreEqual(new List<Diff> {
          new Diff(Operation.EQUAL, "xaa"),
          new Diff(Operation.DELETE, "a")}, diffs);

      // Sentence boundaries.
      diffs = new List<Diff> {
          new Diff(Operation.EQUAL, "The xxx. The "),
          new Diff(Operation.INSERT, "zzz. The "),
          new Diff(Operation.EQUAL, "yyy.")};
      dmp.diff_cleanupSemanticLossless(diffs);
      CollectionAssert.AreEqual(new List<Diff> {
          new Diff(Operation.EQUAL, "The xxx."),
          new Diff(Operation.INSERT, " The zzz."),
          new Diff(Operation.EQUAL, " The yyy.")}, diffs);
    }