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;
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<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);