Browse Source

Merge "Add helper methods to Edit"

tags/v0.9.1
Chris Aniszczyk 13 years ago
parent
commit
88adf21c47

+ 24
- 1
org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/EditTest.java View File

@@ -61,6 +61,8 @@ public class EditTest extends TestCase {
assertEquals(1, e.getEndA());
assertEquals(3, e.getBeginB());
assertEquals(3, e.getEndB());
assertTrue("is empty", e.isEmpty());
assertSame(Edit.Type.EMPTY, e.getType());
}

public void testSwap() {
@@ -75,21 +77,34 @@ public class EditTest extends TestCase {
public void testType_Insert() {
final Edit e = new Edit(1, 1, 1, 2);
assertSame(Edit.Type.INSERT, e.getType());
assertFalse("not empty", e.isEmpty());
assertEquals(0, e.getLengthA());
assertEquals(1, e.getLengthB());
}

public void testType_Delete() {
final Edit e = new Edit(1, 2, 1, 1);
assertSame(Edit.Type.DELETE, e.getType());
assertFalse("not empty", e.isEmpty());
assertEquals(1, e.getLengthA());
assertEquals(0, e.getLengthB());
}

public void testType_Replace() {
final Edit e = new Edit(1, 2, 1, 4);
assertSame(Edit.Type.REPLACE, e.getType());
assertFalse("not empty", e.isEmpty());
assertEquals(1, e.getLengthA());
assertEquals(3, e.getLengthB());
}

public void testType_Empty() {
assertSame(Edit.Type.EMPTY, new Edit(1, 1, 2, 2).getType());
final Edit e = new Edit(1, 1, 2, 2);
assertSame(Edit.Type.EMPTY, e.getType());
assertSame(Edit.Type.EMPTY, new Edit(1, 2).getType());
assertTrue("is empty", e.isEmpty());
assertEquals(0, e.getLengthA());
assertEquals(0, e.getLengthB());
}

public void testToString() {
@@ -143,4 +158,12 @@ public class EditTest extends TestCase {
e.extendB();
assertEquals(new Edit(1, 2, 1, 3), e);
}

public void testBeforeAfterCuts() {
final Edit whole = new Edit(1, 8, 2, 9);
final Edit mid = new Edit(4, 5, 3, 6);

assertEquals(new Edit(1, 4, 2, 3), whole.before(mid));
assertEquals(new Edit(5, 8, 6, 9), whole.after(mid));
}
}

+ 41
- 0
org.eclipse.jgit/src/org/eclipse/jgit/diff/Edit.java View File

@@ -130,6 +130,11 @@ public class Edit {
return Type.REPLACE;
}

/** @return true if the edit is empty (lengths of both a and b is zero). */
public final boolean isEmpty() {
return beginA == endA && beginB == endB;
}

/** @return start point in sequence A. */
public final int getBeginA() {
return beginA;
@@ -150,6 +155,42 @@ public class Edit {
return endB;
}

/** @return length of the region in A. */
public final int getLengthA() {
return endA - beginA;
}

/** @return length of the region in B. */
public final int getLengthB() {
return endB - beginB;
}

/**
* Construct a new edit representing the region before cut.
*
* @param cut
* the cut point. The beginning A and B points are used as the
* end points of the returned edit.
* @return an edit representing the slice of {@code this} edit that occurs
* before {@code cut} starts.
*/
public final Edit before(Edit cut) {
return new Edit(beginA, cut.beginA, beginB, cut.beginB);
}

/**
* Construct a new edit representing the region after cut.
*
* @param cut
* the cut point. The ending A and B points are used as the
* starting points of the returned edit.
* @return an edit representing the slice of {@code this} edit that occurs
* after {@code cut} ends.
*/
public final Edit after(Edit cut) {
return new Edit(cut.endA, endA, cut.endB, endB);
}

/** Increase {@link #getEndA()} by 1. */
public void extendA() {
endA++;

Loading…
Cancel
Save