Skip to content

Commit 1a12d86

Browse files
Initialization should happen also at constructor level
1 parent d67f007 commit 1a12d86

File tree

3 files changed

+56
-4
lines changed

3 files changed

+56
-4
lines changed

algo/src/test/java/org/neo4j/gds/triangle/intersect/CompositeIntersectionTest.java

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,29 @@
1919
*/
2020
package org.neo4j.gds.triangle.intersect;
2121

22+
import org.apache.commons.lang3.mutable.MutableInt;
23+
import org.junit.jupiter.api.Nested;
2224
import org.junit.jupiter.api.Test;
25+
import org.neo4j.gds.NodeLabel;
2326
import org.neo4j.gds.Orientation;
27+
import org.neo4j.gds.RelationshipType;
2428
import org.neo4j.gds.api.Graph;
29+
import org.neo4j.gds.api.GraphStore;
2530
import org.neo4j.gds.core.concurrency.Concurrency;
2631
import org.neo4j.gds.core.concurrency.DefaultPool;
2732
import org.neo4j.gds.core.huge.UnionGraph;
2833
import org.neo4j.gds.core.loading.construction.GraphFactory;
2934
import org.neo4j.gds.core.loading.construction.RelationshipsBuilder;
35+
import org.neo4j.gds.extension.GdlExtension;
36+
import org.neo4j.gds.extension.GdlGraph;
37+
import org.neo4j.gds.extension.IdFunction;
38+
import org.neo4j.gds.extension.Inject;
3039
import org.neo4j.gds.triangle.LabelFilterChecker;
3140

3241
import java.util.ArrayList;
3342
import java.util.Collections;
3443
import java.util.List;
44+
import java.util.Optional;
3545
import java.util.Random;
3646

3747
import static org.assertj.core.api.Assertions.assertThat;
@@ -149,4 +159,48 @@ Graph produceGraph(ArrayList<Long> targets) {
149159
return UnionGraph.of(List.of(graph1, graph2));
150160

151161
}
162+
@GdlExtension
163+
@Nested
164+
class UnionGraphWithFilters {
165+
@GdlGraph(idOffset = 87, orientation = Orientation.UNDIRECTED)
166+
public static final String GRAPH =
167+
"(:A),(:A),(:A),(:A)," +
168+
"(a:B),(b:B),(c:B)," +
169+
"(a)-[:R1]->(b)," +
170+
"(b)-[:R]->(c)," +
171+
"(c)-[:R]->(a)";
172+
@Inject
173+
private GraphStore graphStore;
174+
175+
@Inject
176+
private IdFunction idFunction;
177+
178+
@Test
179+
void testFilter() {
180+
var graph = graphStore.getGraph(
181+
List.of(NodeLabel.of("B")),
182+
List.of(RelationshipType.of("R"), RelationshipType.of("R1")),
183+
Optional.empty()
184+
);
185+
var maxDegree = Long.MAX_VALUE;
186+
var nodeCount = graph.nodeCount();
187+
188+
assertThat(nodeCount).isEqualTo(3);
189+
assertThat(graph.relationshipCount()).isEqualTo(6);
190+
191+
var intersect = new UnionGraphIntersect.NodeFilteredUnionGraphIntersectFactory().load(
192+
graph,
193+
maxDegree,
194+
new LabelFilterChecker(Collections.emptyList(), graph::hasLabel)
195+
);
196+
197+
var triangleCount = new MutableInt(0);
198+
intersect.intersectAll( //triangles are found in reverse, so must change from 'a' to 'c'
199+
graph.toMappedNodeId(idFunction.of("c")),
200+
(nodeA, nodeB, nodeC) -> triangleCount.increment()
201+
);
202+
203+
assertThat(triangleCount.intValue()).isEqualTo(1);
204+
}
205+
}
152206
}

core/src/main/java/org/neo4j/gds/core/huge/NodeFilteredAdjacencyCursor.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,10 @@ public class NodeFilteredAdjacencyCursor implements AdjacencyCursor {
3131

3232
private long currentLongValue;
3333

34-
NodeFilteredAdjacencyCursor(AdjacencyCursor innerCursor, FilteredIdMap idMap) {
34+
public NodeFilteredAdjacencyCursor(AdjacencyCursor innerCursor, FilteredIdMap idMap) {
3535
this.innerCursor = innerCursor;
3636
this.idMap = idMap;
37-
38-
this.currentLongValue = -1L;
37+
hasNextVLong();
3938
}
4039

4140
@Override

core/src/test/java/org/neo4j/gds/core/huge/NodeFilteredAdjacencyCursorTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ void setup() {
4141
var innerCursor = new TestAdjacencyCursor(LongStream.range(0, 10).boxed().collect(Collectors.toList()));
4242
var filterIdMap = new FilteredDirectIdMap(10, l -> l % 2 == 0);
4343
this.adjacencyCursor = new NodeFilteredAdjacencyCursor(innerCursor, filterIdMap);
44-
adjacencyCursor.init(0,0);
4544
}
4645

4746
@Test

0 commit comments

Comments
 (0)