Author: ericwa
Date: Fri Mar 14 06:57:11 2014
New Revision: 10558
URL: http://svn.gna.org/viewcvs/etoile?rev=10558&view=rev
Log:
Fix a diff bug
Modified:
trunk/Etoile/Frameworks/CoreObject/Diff/diff.hh
trunk/Etoile/Frameworks/CoreObject/Tests/Diff/TestDiffCAPI.m
Modified: trunk/Etoile/Frameworks/CoreObject/Diff/diff.hh
URL:
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Frameworks/CoreObject/Diff/diff.hh?rev=10558&r1=10557&r2=10558&view=diff
==============================================================================
--- trunk/Etoile/Frameworks/CoreObject/Diff/diff.hh (original)
+++ trunk/Etoile/Frameworks/CoreObject/Diff/diff.hh Fri Mar 14 06:57:11 2014
@@ -489,8 +489,7 @@
if (modifiedRangeB == NULL)
return false;
- // TODO: Check and explain the reasoning behind this condition
- if (modifiedRangeA->location > modifiedRangeB->location +
offset)
+ if (modifiedRangeB->location == posB)
return true;
return false;
Modified: trunk/Etoile/Frameworks/CoreObject/Tests/Diff/TestDiffCAPI.m
URL:
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Frameworks/CoreObject/Tests/Diff/TestDiffCAPI.m?rev=10558&r1=10557&r2=10558&view=diff
==============================================================================
--- trunk/Etoile/Frameworks/CoreObject/Tests/Diff/TestDiffCAPI.m
(original)
+++ trunk/Etoile/Frameworks/CoreObject/Tests/Diff/TestDiffCAPI.m Fri Mar
14 06:57:11 2014
@@ -224,4 +224,24 @@
diff_free(diff);
}
+- (void) testInsertCopyInsertCopyDelete
+{
+ const char *array1 = "aca";
+ const char *array2 = "cabc";
+
+ diffresult_t *diff = diff_arrays(strlen(array1), strlen(array2),
arraycomparefn, array1, array2);
+
+ // NOTE: This produces an ugly (but correct) diff. The more intuitive
diff would be delete 'a', insert 'bc'
+
+ UKIntsEqual(5, diff_editcount(diff));
+
+ [self checkEdit: diff_edit_at_index(diff, 0) isInsertAtLocA:0
fromLocB:0 length:1];
+ [self checkEdit: diff_edit_at_index(diff, 1) isCopyFromLocA:0 length:1
toLocB:1];
+ [self checkEdit: diff_edit_at_index(diff, 2) isInsertAtLocA:1
fromLocB:2 length:1];
+ [self checkEdit: diff_edit_at_index(diff, 3) isCopyFromLocA:1 length:1
toLocB:3];
+ [self checkEdit: diff_edit_at_index(diff, 4) isDeleteFromLocA:2
length:1];
+
+ diff_free(diff);
+}
+
@end
_______________________________________________
Etoile-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/etoile-cvs