juanco 2003/08/03 17:04:50 Modified: jrcs/src/java/org/apache/commons/jrcs/diff Diff.java jrcs/src/test/org/apache/commons/jrcs/diff DiffTest.java Log: BUG: Diff crashed with two empty sequences as input. Fixed, with test cases added. Revision Changes Path 1.15 +5 -2 jakarta-commons-sandbox/jrcs/src/java/org/apache/commons/jrcs/diff/Diff.java Index: Diff.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/jrcs/src/java/org/apache/commons/jrcs/diff/Diff.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- Diff.java 10 May 2003 18:55:10 -0000 1.14 +++ Diff.java 4 Aug 2003 00:04:50 -0000 1.15 @@ -194,7 +194,10 @@ public Revision diff(Object[] rev) throws DifferentiationFailedException { - return algorithm.diff(orig, rev); + if (orig.length == 0 && rev.length == 0) + return new Revision(); + else + return algorithm.diff(orig, rev); } /** 1.12 +33 -1 jakarta-commons-sandbox/jrcs/src/test/org/apache/commons/jrcs/diff/DiffTest.java Index: DiffTest.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/jrcs/src/test/org/apache/commons/jrcs/diff/DiffTest.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- DiffTest.java 26 May 2003 18:14:49 -0000 1.11 +++ DiffTest.java 4 Aug 2003 00:04:50 -0000 1.12 @@ -62,7 +62,7 @@ public abstract class DiffTest extends TestCase { - static final int LARGE=4*1024; + static final int LARGE=2*1024; protected DiffAlgorithm algorithm; @@ -122,6 +122,38 @@ assertTrue(!Diff.compare(empty, original)); assertTrue(Diff.compare(empty, empty)); assertTrue(Diff.compare(original, original)); + } + + public void testEmptySequences() + throws DifferentiationFailedException + { + String[] emptyOrig = {}; + String[] emptyRev = {}; + Revision revision = Diff.diff(emptyOrig, emptyRev, algorithm); + + assertEquals("revision size is not zero", 0, revision.size()); + } + + public void testOriginalEmpty() + throws DifferentiationFailedException + { + String[] emptyOrig = {}; + String[] rev = {"1", "2", "3"}; + Revision revision = Diff.diff(emptyOrig, rev, algorithm); + + assertEquals("revision size should be one", 1, revision.size()); + assertTrue(revision.getDelta(0) instanceof AddDelta); + } + + public void testRevisedEmpty() + throws DifferentiationFailedException + { + String[] orig = {"1", "2", "3"}; + String[] emptyRev = {}; + Revision revision = Diff.diff(orig, emptyRev, algorithm); + + assertEquals("revision size should be one", 1, revision.size()); + assertTrue(revision.getDelta(0) instanceof DeleteDelta); } public void testDeleteAll()
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]