use of org.sonar.duplications.index.CloneIndex 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.CloneIndex 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.CloneIndex 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.CloneIndex in project sonarqube by SonarSource.
the class DetectorTestCase method only_one_query_of_index_for_each_unique_hash.
/**
* Given: file with repeated hashes
* Expected: only one query of index for each unique hash
*/
@Test
public void only_one_query_of_index_for_each_unique_hash() {
CloneIndex index = spy(createIndex());
Block[] fileBlocks = newBlocks("a", "1 2 1 2");
detect(index, fileBlocks);
verify(index).getBySequenceHash(new ByteArray("01"));
verify(index).getBySequenceHash(new ByteArray("02"));
verifyNoMoreInteractions(index);
}
use of org.sonar.duplications.index.CloneIndex 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)));
}
Aggregations