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 Etoile-cvs@gna.org https://mail.gna.org/listinfo/etoile-cvs