added raw header to hunk

This commit is contained in:
Sebastian Sdorra
2019-07-30 10:00:36 +02:00
parent e3787fd764
commit 0b76cb7ea5
2 changed files with 65 additions and 0 deletions

View File

@@ -2,6 +2,18 @@ package sonia.scm.repository.api;
public interface Hunk extends Iterable<DiffLine> {
default String getRawHeader() {
return String.format("@@ -%s +%s @@", getLineMarker(getOldStart(), getOldLineCount()), getLineMarker(getNewStart(), getNewLineCount()));
}
default String getLineMarker(int start, int lineCount) {
if (lineCount == 1) {
return Integer.toString(start);
} else {
return String.format("%s,%s", start, lineCount);
}
}
int getOldStart();
int getOldLineCount();

View File

@@ -0,0 +1,53 @@
package sonia.scm.repository.api;
import org.junit.jupiter.api.Test;
import java.util.Iterator;
import static org.assertj.core.api.Assertions.assertThat;
class HunkTest {
@Test
void shouldGetComplexHeader() {
String rawHeader = createHunk(2, 3, 4, 5).getRawHeader();
assertThat(rawHeader).isEqualTo("@@ -2,3 +4,5 @@");
}
@Test
void shouldReturnSingleNumberForOne() {
String rawHeader = createHunk(42, 1, 5, 1).getRawHeader();
assertThat(rawHeader).isEqualTo("@@ -42 +5 @@");
}
private Hunk createHunk(int oldStart, int oldLineCount, int newStart, int newLineCount) {
return new Hunk() {
@Override
public int getOldStart() {
return oldStart;
}
@Override
public int getOldLineCount() {
return oldLineCount;
}
@Override
public int getNewStart() {
return newStart;
}
@Override
public int getNewLineCount() {
return newLineCount;
}
@Override
public Iterator<DiffLine> iterator() {
return null;
}
};
}
}