From 38e6e3cc07069070bcc4148d3f9bc50681bea7be Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Wed, 14 Feb 2018 08:54:53 +0100 Subject: [PATCH] SONAR-10430 add UT to explore file size impact similarity algo --- .../filemove/SourceSimilarityImplTest.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) 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; @@ -55,6 +57,48 @@ public class SourceSimilarityImplTest { assertThat(underTest.score(asList("a", "b", "c"), asList("a"))).isEqualTo(33); } + @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 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); -- 2.39.5