Skip to content

Commit 8f3a45f

Browse files
committed
Fixed DiffCleanupSemanticLossless test.
It wasn't using the return value of the function. Also fixed some utf-8 bugs in the function.
1 parent fb91e0d commit 8f3a45f

File tree

2 files changed

+21
-22
lines changed

2 files changed

+21
-22
lines changed

diffmatchpatch/dmp.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -983,11 +983,11 @@ func (dmp *DiffMatchPatch) DiffCleanupSemanticLossless(diffs []Diff) []Diff {
983983

984984
for len(edit) != 0 && len(equality2) != 0 {
985985
_, sz := utf8.DecodeRuneInString(edit)
986-
if edit[:sz] != equality2[:sz] {
986+
if len(equality2) < sz || edit[:sz] != equality2[:sz] {
987987
break
988988
}
989-
equality1 += string(edit[0])
990-
edit = edit[sz:] + string(equality2[0])
989+
equality1 += edit[:sz]
990+
edit = edit[sz:] + equality2[:sz]
991991
equality2 = equality2[sz:]
992992
score := diffCleanupSemanticScore_(equality1, edit) +
993993
diffCleanupSemanticScore_(edit, equality2)
@@ -1007,7 +1007,7 @@ func (dmp *DiffMatchPatch) DiffCleanupSemanticLossless(diffs []Diff) []Diff {
10071007
diffs[pointer-1].Text = bestEquality1
10081008
} else {
10091009
diffs = splice(diffs, pointer-1, 1)
1010-
pointer -= 1
1010+
pointer--
10111011
}
10121012

10131013
diffs[pointer].Text = bestEdit
@@ -1016,7 +1016,7 @@ func (dmp *DiffMatchPatch) DiffCleanupSemanticLossless(diffs []Diff) []Diff {
10161016
} else {
10171017
//splice(diffs, pointer+1, 1)
10181018
diffs = append(diffs[:pointer+1], diffs[pointer+2:]...)
1019-
pointer -= 1
1019+
pointer--
10201020
}
10211021
}
10221022
}

diffmatchpatch/dmp_test.go

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ func Test_diffCleanupSemanticLossless(t *testing.T) {
345345
// Slide diffs to match logical boundaries.
346346
// Null case.
347347
diffs := []Diff{}
348-
dmp.DiffCleanupSemanticLossless(diffs)
348+
diffs = dmp.DiffCleanupSemanticLossless(diffs)
349349
assertDiffEqual(t, []Diff{}, diffs)
350350

351351
// Blank lines.
@@ -355,7 +355,7 @@ func Test_diffCleanupSemanticLossless(t *testing.T) {
355355
Diff{DiffEqual, "\r\nEEE"},
356356
}
357357

358-
dmp.DiffCleanupSemanticLossless(diffs)
358+
diffs = dmp.DiffCleanupSemanticLossless(diffs)
359359

360360
assertDiffEqual(t, []Diff{
361361
Diff{DiffEqual, "AAA\r\n\r\n"},
@@ -368,7 +368,7 @@ func Test_diffCleanupSemanticLossless(t *testing.T) {
368368
Diff{DiffInsert, " DDD\r\nBBB"},
369369
Diff{DiffEqual, " EEE"}}
370370

371-
dmp.DiffCleanupSemanticLossless(diffs)
371+
diffs = dmp.DiffCleanupSemanticLossless(diffs)
372372

373373
assertDiffEqual(t, []Diff{
374374
Diff{DiffEqual, "AAA\r\n"},
@@ -381,7 +381,7 @@ func Test_diffCleanupSemanticLossless(t *testing.T) {
381381
Diff{DiffInsert, "ow and the c"},
382382
Diff{DiffEqual, "at."}}
383383

384-
dmp.DiffCleanupSemanticLossless(diffs)
384+
diffs = dmp.DiffCleanupSemanticLossless(diffs)
385385

386386
assertDiffEqual(t, []Diff{
387387
Diff{DiffEqual, "The "},
@@ -394,7 +394,7 @@ func Test_diffCleanupSemanticLossless(t *testing.T) {
394394
Diff{DiffInsert, "ow-and-the-c"},
395395
Diff{DiffEqual, "at."}}
396396

397-
dmp.DiffCleanupSemanticLossless(diffs)
397+
diffs = dmp.DiffCleanupSemanticLossless(diffs)
398398

399399
assertDiffEqual(t, []Diff{
400400
Diff{DiffEqual, "The-"},
@@ -407,31 +407,30 @@ func Test_diffCleanupSemanticLossless(t *testing.T) {
407407
Diff{DiffDelete, "a"},
408408
Diff{DiffEqual, "ax"}}
409409

410-
dmp.DiffCleanupSemanticLossless(diffs)
410+
diffs = dmp.DiffCleanupSemanticLossless(diffs)
411411

412-
/*assertDiffEqual(t, []Diff{
412+
assertDiffEqual(t, []Diff{
413413
Diff{DiffDelete, "a"},
414-
Diff{DiffEqual, "aax"}}, diffs)*/
414+
Diff{DiffEqual, "aax"}}, diffs)
415415

416416
// Hitting the end.
417417
diffs = []Diff{
418418
Diff{DiffEqual, "xa"},
419419
Diff{DiffDelete, "a"},
420420
Diff{DiffEqual, "a"}}
421421

422-
dmp.DiffCleanupSemanticLossless(diffs)
423-
/*
424-
assertDiffEqual(t, []Diff{
425-
Diff{DiffEqual, "xaa"},
426-
Diff{DiffDelete, "a"}}, diffs)
427-
*/
422+
diffs = dmp.DiffCleanupSemanticLossless(diffs)
423+
assertDiffEqual(t, []Diff{
424+
Diff{DiffEqual, "xaa"},
425+
Diff{DiffDelete, "a"}}, diffs)
426+
428427
// Sentence boundaries.
429428
diffs = []Diff{
430429
Diff{DiffEqual, "The xxx. The "},
431430
Diff{DiffInsert, "zzz. The "},
432431
Diff{DiffEqual, "yyy."}}
433432

434-
dmp.DiffCleanupSemanticLossless(diffs)
433+
diffs = dmp.DiffCleanupSemanticLossless(diffs)
435434

436435
assertDiffEqual(t, []Diff{
437436
Diff{DiffEqual, "The xxx."},
@@ -444,7 +443,7 @@ func Test_diffCleanupSemanticLossless(t *testing.T) {
444443
Diff{DiffInsert, "♔. The "},
445444
Diff{DiffEqual, "♖."}}
446445

447-
dmp.DiffCleanupSemanticLossless(diffs)
446+
diffs = dmp.DiffCleanupSemanticLossless(diffs)
448447

449448
assertDiffEqual(t, []Diff{
450449
Diff{DiffEqual, "The ♕."},
@@ -457,7 +456,7 @@ func Test_diffCleanupSemanticLossless(t *testing.T) {
457456
Diff{DiffInsert, "♔♔"},
458457
Diff{DiffEqual, "♖♖"}}
459458

460-
dmp.DiffCleanupSemanticLossless(diffs)
459+
diffs = dmp.DiffCleanupSemanticLossless(diffs)
461460

462461
assertDiffEqual(t, []Diff{
463462
Diff{DiffEqual, "♕♕"},

0 commit comments

Comments
 (0)