aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>2018-02-14 08:54:53 +0100
committerSonarTech <sonartech@sonarsource.com>2018-05-28 20:20:44 +0200
commit38e6e3cc07069070bcc4148d3f9bc50681bea7be (patch)
tree3c2ab48f28796c6ded5f3e0eabd39440c32a6c06
parent3c77c1642ca07b4587e038926626c0e38248691f (diff)
downloadsonarqube-38e6e3cc07069070bcc4148d3f9bc50681bea7be.tar.gz
sonarqube-38e6e3cc07069070bcc4148d3f9bc50681bea7be.zip
SONAR-10430 add UT to explore file size impact similarity algo
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/filemove/SourceSimilarityImplTest.java44
1 files changed, 44 insertions, 0 deletions
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/filemove/SourceSimilarityImplTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/filemove/SourceSimilarityImplTest.java
index 0c0b08b3479..5b5b84dd8f8 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/filemove/SourceSimilarityImplTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/filemove/SourceSimilarityImplTest.java
@@ -20,6 +20,8 @@
package org.sonar.server.computation.task.projectanalysis.filemove;
import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -56,6 +58,48 @@ public class SourceSimilarityImplTest {
}
@Test
+ public void finding_threshold_in_line_count_to_go_below_85_score() {
+ assertThat(underTest.score(listOf(100), listOf(115))).isEqualTo(86);
+ assertThat(underTest.score(listOf(100), listOf(116))).isEqualTo(86);
+ assertThat(underTest.score(listOf(100), listOf(117))).isEqualTo(85);
+ assertThat(underTest.score(listOf(100), listOf(118))).isEqualTo(84); // 84.74%
+
+ assertThat(underTest.score(listOf(50), listOf(58))).isEqualTo(86);
+ assertThat(underTest.score(listOf(50), listOf(59))).isEqualTo(84); // 84.74%
+
+ assertThat(underTest.score(listOf(25), listOf(29))).isEqualTo(86);
+ assertThat(underTest.score(listOf(25), listOf(30))).isEqualTo(83); // 83.33%
+
+ assertThat(underTest.score(listOf(12), listOf(14))).isEqualTo(85);
+ assertThat(underTest.score(listOf(12), listOf(15))).isEqualTo(80); // 80.00%
+
+ assertThat(underTest.score(listOf(10), listOf(11))).isEqualTo(90);
+ assertThat(underTest.score(listOf(10), listOf(12))).isEqualTo(83); // 83.33%
+
+ assertThat(underTest.score(listOf(5), listOf(5))).isEqualTo(100);
+ assertThat(underTest.score(listOf(5), listOf(6))).isEqualTo(83); // 83.33%
+
+ assertThat(underTest.score(listOf(200), listOf(234))).isEqualTo(85);
+ assertThat(underTest.score(listOf(200), listOf(236))).isEqualTo(84); // 84.75%
+
+ assertThat(underTest.score(listOf(300), listOf(352))).isEqualTo(85);
+ assertThat(underTest.score(listOf(300), listOf(354))).isEqualTo(84); // 84.74%
+
+ assertThat(underTest.score(listOf(400), listOf(470))).isEqualTo(85);
+ assertThat(underTest.score(listOf(400), listOf(471))).isEqualTo(84); // 84.92%
+
+ assertThat(underTest.score(listOf(500), listOf(588))).isEqualTo(85);
+ assertThat(underTest.score(listOf(500), listOf(589))).isEqualTo(84); // 84.88%
+ }
+
+ /**
+ * Creates a list of {@code numberOfElements} int values as String, starting with zero.
+ */
+ private static List<String> listOf(int numberOfElements) {
+ return IntStream.range(0, numberOfElements).mapToObj(String::valueOf).collect(Collectors.toList());
+ }
+
+ @Test
public void two_empty_lists_are_not_considered_as_equal() {
assertThat(underTest.score(emptyList(), emptyList())).isEqualTo(0);
}