import org.sonar.ce.task.projectanalysis.duplication.Duplication;
import org.sonar.ce.task.projectanalysis.duplication.InnerDuplicate;
import org.sonar.ce.task.projectanalysis.duplication.TextBlock;
-import org.sonar.core.util.stream.MoreCollectors;
import org.sonar.db.protobuf.DbFileSources;
import static com.google.common.collect.FluentIterable.from;
private static Map<TextBlock, Integer> createIndexOfDuplicatedTextBlocks(Iterable<Duplication> duplications) {
return extractAllDuplicatedTextBlocks(duplications)
.stream().sorted()
- .collect(Collectors.toMap(e -> e, new TextBlockIndexGenerator(), MoreCollectors.mergeNotSupportedMerger(), LinkedHashMap::new));
+ .collect(Collectors.toMap(e -> e, new TextBlockIndexGenerator(), (a, b) -> a, LinkedHashMap::new));
}
/**
assertThat(line4.getDuplicationList()).containsExactly(2);
}
+ @Test
+ public void read_duplication_with_repeated_text_blocks() {
+ DuplicationLineReader reader = duplicationLineReader(
+ duplication(1, 2, innerDuplicate(3, 4)),
+ duplication(3, 4, innerDuplicate(1, 2)));
+
+ assertThat(reader.read(line1)).isEmpty();
+ assertThat(reader.read(line2)).isEmpty();
+ assertThat(reader.read(line3)).isEmpty();
+ assertThat(reader.read(line4)).isEmpty();
+
+ assertThat(line1.getDuplicationList()).containsExactly(1);
+ assertThat(line2.getDuplicationList()).containsExactly(1);
+ assertThat(line3.getDuplicationList()).containsExactly(3);
+ assertThat(line4.getDuplicationList()).containsExactly(3);
+ }
+
@Test
public void read_duplication_with_duplicates_on_other_file() {
DuplicationLineReader reader = duplicationLineReader(