use of org.sonar.duplications.index.CloneGroup in project sonarqube by SonarSource.
the class DetectorTestCase method clonesInFileItself.
/**
* Test for problem, which was described in original paper - same clone would be reported twice.
* Given:
* <pre>
* a: 1 2 3 1 2 4
* </pre>
* Expected only one clone:
* <pre>
* a-a (1 2)
* </pre>
*/
@Test
public void clonesInFileItself() {
CloneIndex index = createIndex();
Block[] fileBlocks = newBlocks("a", "1 2 3 1 2 4");
List<CloneGroup> result = detect(index, fileBlocks);
print(result);
assertThat(result.size(), is(1));
assertThat(result, hasCloneGroup(2, newClonePart("a", 0, 2), newClonePart("a", 3, 2)));
}
use of org.sonar.duplications.index.CloneGroup in project sonarqube by SonarSource.
the class DetectorTestCase method example2.
/**
* Given:
* <pre>
* b: 1 2 3 4 1 2 3 4 1 2 3 4
* c: 1 2 3 4
* a: 1 2 3 5
* </pre>
* Expected:
* <pre>
* a-b-b-b-c (1 2 3)
* </pre>
*/
@Test
public void example2() {
CloneIndex index = createIndex(newBlocks("b", "1 2 3 4 1 2 3 4 1 2 3 4"), newBlocks("c", "1 2 3 4"));
Block[] fileBlocks = newBlocks("a", "1 2 3 5");
List<CloneGroup> result = detect(index, fileBlocks);
print(result);
assertThat(result.size(), is(1));
assertThat(result, hasCloneGroup(3, newClonePart("a", 0, 3), newClonePart("b", 0, 3), newClonePart("b", 4, 3), newClonePart("b", 8, 3), newClonePart("c", 0, 3)));
}
use of org.sonar.duplications.index.CloneGroup in project sonarqube by SonarSource.
the class DetectorTestCase method exampleFromPaper.
/**
* Given:
* <pre>
* y: 2 3 4 5
* z: 3 4
* x: 1 2 3 4 5 6
* </pre>
* Expected:
* <pre>
* x-y (2 3 4 5)
* x-y-z (3 4)
* </pre>
*/
@Test
public void exampleFromPaper() {
CloneIndex index = createIndex(newBlocks("y", "2 3 4 5"), newBlocks("z", "3 4"));
Block[] fileBlocks = newBlocks("x", "1 2 3 4 5 6");
List<CloneGroup> result = detect(index, fileBlocks);
print(result);
assertEquals(2, result.size());
assertThat(result, hasCloneGroup(4, newClonePart("x", 1, 4), newClonePart("y", 0, 4)));
assertThat(result, hasCloneGroup(2, newClonePart("x", 2, 2), newClonePart("y", 1, 2), newClonePart("z", 0, 2)));
}
use of org.sonar.duplications.index.CloneGroup in project sonarqube by SonarSource.
the class DetectorTestCase method problemWithEndOfFile.
/**
* Given:
* <pre>
* b: 1 2 3 4
* a: 1 2 3
* </pre>
* Expected clone which ends at the end of file "a":
* <pre>
* a-b (1 2 3)
* </pre>
*/
@Test
public void problemWithEndOfFile() {
CloneIndex cloneIndex = createIndex(newBlocks("b", "1 2 3 4"));
Block[] fileBlocks = newBlocks("a", "1 2 3");
List<CloneGroup> clones = detect(cloneIndex, fileBlocks);
print(clones);
assertThat(clones.size(), is(1));
assertThat(clones, hasCloneGroup(3, newClonePart("a", 0, 3), newClonePart("b", 0, 3)));
}
use of org.sonar.duplications.index.CloneGroup in project sonarqube by SonarSource.
the class DetectorTestCase method example1.
/**
* Given:
* <pre>
* b: 3 4 5 6
* c: 5 6 7
* a: 1 2 3 4 5 6 7 8 9
* </pre>
* Expected:
* <pre>
* a-b (3 4 5 6)
* a-b-c (5 6)
* a-c (5 6 7)
* </pre>
*/
@Test
public void example1() {
CloneIndex index = createIndex(newBlocks("b", "3 4 5 6"), newBlocks("c", "5 6 7"));
Block[] fileBlocks = newBlocks("a", "1 2 3 4 5 6 7 8 9");
List<CloneGroup> result = detect(index, fileBlocks);
print(result);
assertThat(result.size(), is(3));
assertThat(result, hasCloneGroup(4, newClonePart("a", 2, 4), newClonePart("b", 0, 4)));
assertThat(result, hasCloneGroup(3, newClonePart("a", 4, 3), newClonePart("c", 0, 3)));
assertThat(result, hasCloneGroup(2, newClonePart("a", 4, 2), newClonePart("b", 2, 2), newClonePart("c", 0, 2)));
}
Aggregations