diff --git a/algo/src/main/java/org/neo4j/graphalgo/ShortestPathProc.java b/algo/src/main/java/org/neo4j/graphalgo/ShortestPathProc.java index ba92866f2..0308d4618 100644 --- a/algo/src/main/java/org/neo4j/graphalgo/ShortestPathProc.java +++ b/algo/src/main/java/org/neo4j/graphalgo/ShortestPathProc.java @@ -78,7 +78,7 @@ public class ShortestPathProc { public Stream dijkstraStream( @Name("startNode") Node startNode, @Name("endNode") Node endNode, - @Name("propertyName") String propertyName, + @Name(value = "propertyName", defaultValue = "null") String propertyName, @Name(value = "config", defaultValue = "{}") Map config) { @@ -121,7 +121,7 @@ public Stream dijkstraStream( public Stream dijkstra( @Name("startNode") Node startNode, @Name("endNode") Node endNode, - @Name("propertyName") String propertyName, + @Name(value = "propertyName", defaultValue="null") String propertyName, @Name(value = "config", defaultValue = "{}") Map config) { diff --git a/tests/src/test/java/org/neo4j/graphalgo/algo/ShortestPathIntegrationTest.java b/tests/src/test/java/org/neo4j/graphalgo/algo/ShortestPathIntegrationTest.java index 2248f99c5..a0d084b11 100644 --- a/tests/src/test/java/org/neo4j/graphalgo/algo/ShortestPathIntegrationTest.java +++ b/tests/src/test/java/org/neo4j/graphalgo/algo/ShortestPathIntegrationTest.java @@ -91,6 +91,54 @@ public static Collection data() { @Parameterized.Parameter public String graphImpl; + @Test + public void noWeightStream() throws Exception { + PathConsumer consumer = mock(PathConsumer.class); + DB.execute( + "MATCH (start:Node{type:'start'}), (end:Node{type:'end'}) " + + "CALL algo.shortestPath.stream(start, end) " + + "YIELD nodeId, cost RETURN nodeId, cost") + .accept((Result.ResultVisitor) row -> { + consumer.accept((Long) row.getNumber("nodeId"), (Double) row.getNumber("cost")); + return true; + }); + verify(consumer, times(2)).accept(anyLong(), anyDouble()); + verify(consumer, times(1)).accept(anyLong(), eq(0.0)); + verify(consumer, times(1)).accept(anyLong(), eq(1.0)); + } + + @Test + public void noWeightWrite() throws Exception { + DB.execute( + "MATCH (start:Node{type:'start'}), (end:Node{type:'end'}) " + + "CALL algo.shortestPath(start, end) " + + "YIELD loadMillis, evalMillis, writeMillis, nodeCount, totalCost\n" + + "RETURN loadMillis, evalMillis, writeMillis, nodeCount, totalCost") + .accept((Result.ResultVisitor) row -> { + assertEquals(1.0, (Double) row.getNumber("totalCost"), 0.01); + assertEquals(2L, row.getNumber("nodeCount")); + assertNotEquals(-1L, row.getNumber("loadMillis")); + assertNotEquals(-1L, row.getNumber("evalMillis")); + assertNotEquals(-1L, row.getNumber("writeMillis")); + return false; + }); + + final StepConsumer mock = mock(StepConsumer.class); + + DB.execute("MATCH (n) WHERE exists(n.sssp) RETURN id(n) as id, n.sssp as sssp") + .accept(row -> { + mock.accept( + row.getNumber("id").longValue(), + row.getNumber("sssp").intValue()); + return true; + }); + + verify(mock, times(2)).accept(anyLong(), anyInt()); + + verify(mock, times(1)).accept(anyLong(), eq(0)); + verify(mock, times(1)).accept(anyLong(), eq(1)); + } + @Test public void testDijkstraStream() throws Exception { PathConsumer consumer = mock(PathConsumer.class);