use of org.neo4j.graphdb.Path in project neo4j by neo4j.
the class TestBranchState method evaluateState.
@Test
public void evaluateState() throws Exception {
/*
* (a)-1->(b)-2->(c)-3->(d)
* \ ^
* 4 6
* (e)-5->(f)
*/
createGraph("a TO b", "b TO c", "c TO d", "a TO e", "e TO f", "f TO c");
try (Transaction tx = beginTx()) {
PathEvaluator<Integer> evaluator = new PathEvaluator.Adapter<Integer>() {
@Override
public Evaluation evaluate(Path path, BranchState<Integer> state) {
return ofIncludes(path.endNode().getProperty("name").equals("c") && state.getState() == 3);
}
};
expectPaths(getGraphDb().traversalDescription().uniqueness(Uniqueness.NODE_PATH).expand(new RelationshipWeightExpander(), new InitialBranchState.State<>(1, 1)).evaluator(evaluator).traverse(getNodeWithName("a")), "a,b,c");
tx.success();
}
}
use of org.neo4j.graphdb.Path in project neo4j by neo4j.
the class TestMultiPruneEvaluators method testMaxDepthAndCustomPruneEvaluatorCombined.
@Test
public void testMaxDepthAndCustomPruneEvaluatorCombined() {
Evaluator lessThanThreeRels = new Evaluator() {
public Evaluation evaluate(Path path) {
return count(path.endNode().getRelationships(Direction.OUTGOING).iterator()) < 3 ? Evaluation.INCLUDE_AND_PRUNE : Evaluation.INCLUDE_AND_CONTINUE;
}
};
TraversalDescription description = getGraphDb().traversalDescription().evaluator(Evaluators.all()).evaluator(toDepth(1)).evaluator(lessThanThreeRels);
Set<String> expectedNodes = new HashSet<String>(asList("a", "b", "c", "d", "e"));
try (Transaction tx = beginTx()) {
for (Path position : description.traverse(node("a"))) {
String name = (String) position.endNode().getProperty("name");
assertTrue(name + " shouldn't have been returned", expectedNodes.remove(name));
}
tx.success();
}
assertTrue(expectedNodes.isEmpty());
}
use of org.neo4j.graphdb.Path in project neo4j by neo4j.
the class TestMultiRelTypesAndDirections method testCIsReturnedOnDepthTwo.
private void testCIsReturnedOnDepthTwo(TraversalDescription description) {
try (Transaction transaction = beginTx()) {
description = description.expand(PathExpanders.forTypeAndDirection(ONE, OUTGOING));
int i = 0;
for (Path position : description.traverse(node("A"))) {
assertEquals(i++, position.length());
}
}
}
use of org.neo4j.graphdb.Path in project neo4j by neo4j.
the class TestUniqueness method nodeGlobalUniqueness.
@Test
public void nodeGlobalUniqueness() {
/*
* (a)-TO->(b)-TO->(c)
* \----TO---->/
*/
createGraph("a TO b", "a TO c", "b TO c");
RelationshipType to = withName("TO");
try (Transaction tx = beginTx()) {
Node a = getNodeWithName("a");
Node c = getNodeWithName("c");
Iterator<Path> path = getGraphDb().traversalDescription().relationships(to, OUTGOING).uniqueness(NODE_GLOBAL).evaluator(includeWhereEndNodeIs(c)).traverse(a).iterator();
Path thePath = path.next();
assertFalse(path.hasNext());
NodePathRepresentation pathRepresentation = new NodePathRepresentation(NAME_PROPERTY_REPRESENTATION);
assertEquals("a,b,c", pathRepresentation.represent(thePath));
tx.success();
}
}
use of org.neo4j.graphdb.Path in project neo4j by neo4j.
the class TreeGraphTest method testPostorderDepthFirstReturnsDeeperNodesFirst.
@Test
public void testPostorderDepthFirstReturnsDeeperNodesFirst() {
Traverser traverser = getGraphDb().traversalDescription().order(POSTORDER_DEPTH_FIRST).traverse(node("1"));
int i = 0;
List<String> encounteredNodes = new ArrayList<>();
try (Transaction tx = beginTx()) {
for (Path pos : traverser) {
encounteredNodes.add((String) pos.endNode().getProperty("name"));
assertEquals(expectedDepth(12 - i++), pos.length());
}
tx.success();
}
assertEquals(13, i);
assertTrue(encounteredNodes.indexOf("5") < encounteredNodes.indexOf("2"));
assertTrue(encounteredNodes.indexOf("6") < encounteredNodes.indexOf("2"));
assertTrue(encounteredNodes.indexOf("7") < encounteredNodes.indexOf("2"));
assertTrue(encounteredNodes.indexOf("8") < encounteredNodes.indexOf("3"));
assertTrue(encounteredNodes.indexOf("9") < encounteredNodes.indexOf("3"));
assertTrue(encounteredNodes.indexOf("A") < encounteredNodes.indexOf("3"));
assertTrue(encounteredNodes.indexOf("B") < encounteredNodes.indexOf("4"));
assertTrue(encounteredNodes.indexOf("C") < encounteredNodes.indexOf("4"));
assertTrue(encounteredNodes.indexOf("D") < encounteredNodes.indexOf("4"));
assertTrue(encounteredNodes.indexOf("2") < encounteredNodes.indexOf("1"));
assertTrue(encounteredNodes.indexOf("3") < encounteredNodes.indexOf("1"));
assertTrue(encounteredNodes.indexOf("4") < encounteredNodes.indexOf("1"));
}
Aggregations