Skip to content

Commit 6919719

Browse files
committed
Move the Jaccard test cases
1 parent a0f08dc commit 6919719

File tree

4 files changed

+57
-135
lines changed

4 files changed

+57
-135
lines changed

algo/src/test/java/org/neo4j/gds/similarity/JaccardSimilarityTest.java

Lines changed: 0 additions & 70 deletions
This file was deleted.

algo/src/test/java/org/neo4j/gds/similarity/JaccardWithCypherTest.java

Lines changed: 0 additions & 65 deletions
This file was deleted.

algo/src/test/java/org/neo4j/gds/similarity/SimilaritiesFuncTest.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,12 @@
2828
import java.util.ArrayList;
2929
import java.util.Arrays;
3030
import java.util.List;
31+
import java.util.stream.Collector;
32+
import java.util.stream.Collectors;
3133
import java.util.stream.Stream;
3234

3335
import static org.assertj.core.api.Assertions.assertThat;
36+
import static org.assertj.core.api.Assertions.assertThatNoException;
3437
import static org.junit.jupiter.api.Assertions.assertEquals;
3538

3639
class SimilaritiesFuncTest {
@@ -157,4 +160,39 @@ void testJaccardWithNulls() {
157160
assertEquals(1 / 3.0, new SimilaritiesFunc().jaccardSimilarity(left, right));
158161
}
159162

163+
@ParameterizedTest(name = "{2}")
164+
@MethodSource("listCollectors")
165+
void shouldComputeJaccardAtAllCasesOfListInput(
166+
Collector<Number, ?, List<Number>> firstListCollector,
167+
Collector<Number, ?, List<Number>> secondListCollector,
168+
String label
169+
) {
170+
var arr1 = new int[]{1,2,3};
171+
var arr2 = new int[]{1,2,3};
172+
var l1 = Arrays.stream(arr1).boxed().collect(firstListCollector);
173+
var l2 = Arrays.stream(arr2).boxed().collect(secondListCollector);
174+
175+
var similarities = new SimilaritiesFunc();
176+
assertThatNoException().isThrownBy(
177+
() -> assertThat(similarities.jaccardSimilarity(l1, l2)).isEqualTo(1)
178+
);
179+
}
180+
181+
private static Stream<Arguments> listCollectors() {
182+
return Stream.of(
183+
Arguments.of(
184+
Collectors.toUnmodifiableList(), Collectors.toUnmodifiableList(), "Unmodifiable, Unmodifiable"
185+
),
186+
Arguments.of(
187+
Collectors.toUnmodifiableList(), Collectors.toList(), "Unmodifiable, Modifiable"
188+
),
189+
Arguments.of(
190+
Collectors.toList(), Collectors.toList(), "Modifiable, Modifiable"
191+
),
192+
Arguments.of(
193+
Collectors.toList(), Collectors.toUnmodifiableList(), "Modifiable, Unmodifiable"
194+
)
195+
);
196+
}
197+
160198
}

algo/src/test/java/org/neo4j/gds/similarity/SimilaritiesFuncWithCypherTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
import org.neo4j.gds.BaseTest;
2525
import org.neo4j.gds.compat.GraphDatabaseApiProxy;
2626

27+
import static org.assertj.core.api.Assertions.assertThat;
28+
import static org.assertj.core.api.Assertions.assertThatNoException;
29+
import static org.assertj.core.api.InstanceOfAssertFactories.DOUBLE;
2730
import static org.junit.jupiter.api.Assertions.assertEquals;
2831

2932
class SimilaritiesFuncWithCypherTest extends BaseTest {
@@ -80,4 +83,20 @@ void testJaccardFunction() {
8083
result -> assertEquals(1.0 / 3.0, result.next().get("score"))
8184
);
8285
}
86+
87+
@Test
88+
void testJaccardFunctionWithInputFromDatabase() {
89+
assertThatNoException().isThrownBy(
90+
() -> runQueryWithResultConsumer(
91+
"CREATE (t:Test {listone: [1, 5], listtwo: [5, 5]}) RETURN gds.similarity.jaccard(t.listone, t.listtwo) AS score",
92+
result -> {
93+
assertThat(result.hasNext()).isTrue();
94+
var score = result.next().get("score");
95+
assertThat(score)
96+
.asInstanceOf(DOUBLE)
97+
.isEqualTo(1.0 / 3.0);
98+
}
99+
)
100+
);
101+
}
83102
}

0 commit comments

Comments
 (0)