@Test public void shouldGetRegisteredProcedure() throws Throwable { // When procs.register( procedure ); // Then assertThat( procs.procedure( signature.name() ).signature(), equalTo( signature ) ); }
public ProcedureHandle procedure( QualifiedName name ) throws ProcedureException { CallableProcedure proc = procedures.get( name ); if ( proc == null ) { throw noSuchProcedure( name ); } return new ProcedureHandle( proc.signature(), procedures.idOf( name ) ); }
@Test public void testEmptyGraph() throws Throwable { // Given the database is empty // When Procedures procs = procs(); RawIterator<Object[],ProcedureException> stream = procs.procedureCallRead( procs.procedureGet( procedureName( "db", "schema" ) ).id(), new Object[0] ); // Then assertThat( asList( stream ), contains( equalTo( new Object[]{new ArrayList<>(), new ArrayList<>()} ) ) ); commit(); }
@Test public void testWeirdLabelName() throws Throwable { // Given // Node1: (:`This:is_a:label` {color: "red"}) createNode( Arrays.asList( "`This:is_a:label`" ), Arrays.asList( "color" ), Arrays.asList( Values.stringValue( "red" ) ) ); // When RawIterator<Object[],ProcedureException> stream = procs().procedureCallRead( procs().procedureGet( procedureName( nodesProcedureName ) ).id(), new Object[0] ); // Then assertThat( asList( stream ), containsInAnyOrder( equalTo( nodeEntry(":``This:is_a:label``", Arrays.asList( "`This:is_a:label`" ), "color", Arrays.asList( "String" ), true) ) ) ); // printStream( stream ); }
@Test public void shouldGetProcedureByName() throws Throwable { // Given internalKernel().registerProcedure( procedure ); // When ProcedureSignature found = procs() .procedureGet( new QualifiedName( new String[]{"example"}, "exampleProc" ) ).signature(); // Then assertThat( found, equalTo( signature ) ); commit(); }
public ProcedureHandle procedure( QualifiedName name ) throws ProcedureException { CallableProcedure proc = procedures.get( name ); if ( proc == null ) { throw noSuchProcedure( name ); } return new ProcedureHandle( proc.signature(), procedures.idOf( name ) ); }
@Test public void testNodePropertiesRegardlessOfCreationOrder2() throws Throwable { // Given // Node1: (:B {origin: "Kenya"}) // Node2 (:B {color: "red", size: "M"}) createNode( Arrays.asList( "B" ), Arrays.asList( "origin" ), Arrays.asList( Values.stringValue( "Kenya" ) ) ); createNode( Arrays.asList( "B" ), Arrays.asList( "color", "size" ), Arrays.asList( Values.stringValue( "red" ), Values.stringValue( "M" ) ) ); // When RawIterator<Object[],ProcedureException> stream = procs().procedureCallRead( procs().procedureGet( procedureName( nodesProcedureName ) ).id(), new Object[0] ); // Then assertThat( asList( stream ), containsInAnyOrder( equalTo( nodeEntry(":`B`", Arrays.asList( "B" ), "color", Arrays.asList( "String" ), false) ), equalTo( nodeEntry(":`B`", Arrays.asList( "B" ), "size", Arrays.asList( "String" ), false) ), equalTo( nodeEntry(":`B`", Arrays.asList( "B" ), "origin", Arrays.asList( "String" ), false) ) ) ); // printStream( stream ); }
@Test public void shouldGetBuiltInProcedureByName() throws Throwable { // When ProcedureSignature found = procs() .procedureGet( procedureName( "db", "labels" ) ).signature(); // Then assertThat( found, equalTo( procedureSignature( procedureName( "db", "labels" ) ) .out( "label", NTString ).build() ) ); commit(); }
@Test public void testNodePropertiesRegardlessOfCreationOrder1() throws Throwable { // Given // Node1: (:A {color: "red", size: "M"}) // Node2: (:A {origin: "Kenya"}) createNode( Arrays.asList( "A" ), Arrays.asList( "color", "size" ), Arrays.asList( Values.stringValue( "red" ), Values.stringValue( "M" ) ) ); createNode( Arrays.asList( "A" ), Arrays.asList( "origin" ), Arrays.asList( Values.stringValue( "Kenya" ) ) ); // When RawIterator<Object[],ProcedureException> stream = procs().procedureCallRead( procs().procedureGet( procedureName( nodesProcedureName ) ).id(), new Object[0] ); // Then assertThat( asList( stream ), containsInAnyOrder( equalTo( nodeEntry(":`A`", Arrays.asList( "A" ), "color", Arrays.asList( "String" ), false) ), equalTo( nodeEntry(":`A`", Arrays.asList( "A" ), "size", Arrays.asList( "String" ), false) ), equalTo( nodeEntry(":`A`", Arrays.asList( "A" ), "origin", Arrays.asList( "String" ), false) ) ) ); // printStream( stream ); }
@Test public void testNodesShouldNotDependOnOrderOfCreationWithOverlap() throws Throwable { // Given // Node1: (:B {type:'B1}) // Node2: (:B {type:'B2', size: 5}) createNode( Arrays.asList( "B" ), Arrays.asList( "type" ), Arrays.asList( Values.stringValue( "B1" ) ) ); createNode( Arrays.asList( "B" ), Arrays.asList( "type", "size" ), Arrays.asList( Values.stringValue( "B2" ), Values.intValue( 5 ) ) ); // When RawIterator<Object[],ProcedureException> stream = procs().procedureCallRead( procs().procedureGet( procedureName( nodesProcedureName ) ).id(), new Object[0] ); // Then assertThat( asList( stream ), containsInAnyOrder( equalTo( nodeEntry(":`B`", Arrays.asList( "B" ), "type", Arrays.asList( "String" ), true) ), equalTo( nodeEntry(":`B`", Arrays.asList( "B" ), "size", Arrays.asList( "Integer" ), false) ) ) ); // printStream( stream ); }
@Test public void testWithSimilarNodes() throws Throwable { // Given // Node1: (:A {prop1:"Test"}) // Node2: (:A {prop1:"Test2"}) createNode( Arrays.asList( "A" ), Arrays.asList( "prop1" ), Arrays.asList( Values.stringValue( "Test" ) ) ); createNode( Arrays.asList( "A" ), Arrays.asList( "prop1" ), Arrays.asList( Values.stringValue( "Test2" ) ) ); // When RawIterator<Object[],ProcedureException> stream = procs().procedureCallRead( procs().procedureGet( procedureName( nodesProcedureName ) ).id(), new Object[0] ); // Then assertThat( asList( stream ), contains( equalTo( nodeEntry(":`A`", Arrays.asList("A"), "prop1", Arrays.asList( "String" ), true) ) ) ); // printStream( stream ); }
@Test public void testNodePropertiesRegardlessOfCreationOrder3() throws Throwable { // Given // Node1: (:C {color: "red", size: "M"}) // Node2: (:C {origin: "Kenya", active: true}) createNode( Arrays.asList( "C" ), Arrays.asList( "color", "size" ), Arrays.asList( Values.stringValue( "red" ), Values.stringValue( "M" ) ) ); createNode( Arrays.asList( "C" ), Arrays.asList( "origin", "active" ), Arrays.asList( Values.stringValue( "Kenya" ), Values.booleanValue( true ) ) ); // When RawIterator<Object[],ProcedureException> stream = procs().procedureCallRead( procs().procedureGet( procedureName( nodesProcedureName ) ).id(), new Object[0] ); // Then assertThat( asList( stream ), containsInAnyOrder( equalTo( nodeEntry(":`C`", Arrays.asList( "C" ), "color", Arrays.asList( "String" ), false) ), equalTo( nodeEntry(":`C`", Arrays.asList( "C" ), "size", Arrays.asList( "String" ), false) ), equalTo( nodeEntry(":`C`", Arrays.asList( "C" ), "origin", Arrays.asList( "String" ), false) ), equalTo( nodeEntry(":`C`", Arrays.asList( "C" ), "active", Arrays.asList( "Boolean" ), false) ) ) ); // printStream( stream ); }
@Test public void testNodesShouldNotDependOnOrderOfCreationWithOverlap2() throws Throwable { // Given // Node1: (:B {type:'B2', size: 5}) // Node2: (:B {type:'B1}) createNode( Arrays.asList( "B" ), Arrays.asList( "type", "size" ), Arrays.asList( Values.stringValue( "B2" ), Values.intValue( 5 ) ) ); createNode( Arrays.asList( "B" ), Arrays.asList( "type" ), Arrays.asList( Values.stringValue( "B1" ) ) ); // When RawIterator<Object[],ProcedureException> stream = procs().procedureCallRead( procs().procedureGet( procedureName( nodesProcedureName ) ).id(), new Object[0] ); // Then assertThat( asList( stream ), containsInAnyOrder( equalTo( nodeEntry(":`B`", Arrays.asList( "B" ), "type", Arrays.asList( "String" ), true) ), equalTo( nodeEntry(":`B`", Arrays.asList( "B" ), "size", Arrays.asList( "Integer" ), false) ) ) ); // printStream( stream ); }
@Test public void testWithAllDifferentNodes() throws Throwable { // Given // Node1: (:A:B {prop1:"Test", prop2:12}) // Node2: (:B {prop1:true}) // Node3: () // Node4: (:C {prop1: ["Test","Success"]} createNode( Arrays.asList( "A", "B" ), Arrays.asList( "prop1", "prop2" ), Arrays.asList( Values.stringValue( "Test" ), Values.intValue( 12 ) ) ); createNode( Arrays.asList( "B" ), Arrays.asList( "prop1" ), Arrays.asList( Values.booleanValue( true ) ) ); createEmptyNode(); createNode( Arrays.asList( "C" ), Arrays.asList( "prop1" ), Arrays.asList( Values.stringArray( "Test", "Success" ) ) ); // When RawIterator<Object[],ProcedureException> stream = procs().procedureCallRead( procs().procedureGet( procedureName( nodesProcedureName ) ).id(), new Object[0] ); // Then assertThat( asList( stream ), containsInAnyOrder( equalTo( nodeEntry(":`A`:`B`", Arrays.asList( "A", "B" ), "prop1", Arrays.asList( "String" ), true) ), equalTo( nodeEntry(":`A`:`B`", Arrays.asList( "A", "B" ), "prop2", Arrays.asList( "Integer" ), true) ), equalTo( nodeEntry(":`B`", Arrays.asList( "B" ), "prop1", Arrays.asList( "Boolean" ), true) ), equalTo( nodeEntry(":`C`", Arrays.asList( "C" ), "prop1", Arrays.asList( "StringArray" ), true) ), equalTo( nodeEntry("", Arrays.asList(), null, null, false) ) ) ); // printStream( stream ); }
@Test public void testWithNullableProperties() throws Throwable { // Given // Node1: (:A{prop1:"Test", prop2: 12, prop3: true}) // Node2: (:A{prop1:"Test2", prop3: false}) // Node3: (:A{prop1:"Test3", prop2: 42}) // Node4: (:B{prop1:"Test4", prop2: 21}) // Node5: (:B) createNode( Arrays.asList( "A" ), Arrays.asList( "prop1", "prop2", "prop3" ), Arrays.asList( Values.stringValue( "Test" ), Values.intValue( 12 ), Values.booleanValue( true ) ) ); createNode( Arrays.asList( "A" ), Arrays.asList( "prop1", "prop3" ), Arrays.asList( Values.stringValue( "Test2" ), Values.booleanValue( false ) ) ); createNode( Arrays.asList( "A" ), Arrays.asList( "prop1", "prop2" ), Arrays.asList( Values.stringValue( "Test3" ), Values.intValue( 42 ) ) ); createNode( Arrays.asList( "B" ), Arrays.asList( "prop1", "prop2" ), Arrays.asList( Values.stringValue( "Test4" ), Values.intValue( 21 ) ) ); createNode( Arrays.asList( "B" ), Arrays.asList(), Arrays.asList() ); // When RawIterator<Object[],ProcedureException> stream = procs().procedureCallRead( procs().procedureGet( procedureName( nodesProcedureName ) ).id(), new Object[0] ); // Then assertThat( asList( stream ), containsInAnyOrder( equalTo( nodeEntry(":`A`", Arrays.asList("A"), "prop1", Arrays.asList( "String" ), true) ), equalTo( nodeEntry(":`A`", Arrays.asList("A"), "prop2", Arrays.asList( "Integer" ), false) ), equalTo( nodeEntry(":`A`", Arrays.asList("A"), "prop3", Arrays.asList( "Boolean" ), false) ), equalTo( nodeEntry(":`B`", Arrays.asList("B"), "prop1", Arrays.asList( "String" ), false) ), equalTo( nodeEntry(":`B`", Arrays.asList("B"), "prop2", Arrays.asList( "Integer" ), false) ) ) ); //printStream( stream ); }
@Test public void listAllComponents() throws Throwable { // Given a running database // When RawIterator<Object[],ProcedureException> stream = procs().procedureCallRead( procs().procedureGet( procedureName( "dbms", "components" ) ).id(), new Object[0] ); // Then assertThat( asList( stream ), contains( equalTo( new Object[]{"Neo4j Kernel", singletonList( Version.getNeo4jVersion() ), "community"} ) ) ); commit(); }
@Test public void testWithSimilarNodesHavingDifferentPropertyValueTypes() throws Throwable { // Given // Node1: ({prop1:"Test", prop2: 12, prop3: true}) // Node2: ({prop1:"Test", prop2: 1.5, prop3: "Test"}) // Node3: ({prop1:"Test"}) createNode( Arrays.asList(), Arrays.asList( "prop1", "prop2", "prop3" ), Arrays.asList( Values.stringValue( "Test" ), Values.intValue( 12 ), Values.booleanValue( true ) ) ); createNode( Arrays.asList(), Arrays.asList( "prop1", "prop2", "prop3" ), Arrays.asList( Values.stringValue( "Test" ), Values.floatValue( 1.5f ), Values.stringValue( "Test" ) ) ); createNode( Arrays.asList(), Arrays.asList( "prop1" ), Arrays.asList( Values.stringValue( "Test" ) ) ); // When RawIterator<Object[],ProcedureException> stream = procs().procedureCallRead( procs().procedureGet( procedureName( nodesProcedureName ) ).id(), new Object[0] ); // Then assertThat( asList( stream ), containsInAnyOrder( equalTo( nodeEntry("", Arrays.asList(), "prop1", Arrays.asList( "String" ), true) ), equalTo( nodeEntry("", Arrays.asList(), "prop2", Arrays.asList( "Integer", "Float" ), false) ), equalTo( nodeEntry("", Arrays.asList(), "prop3", Arrays.asList( "String", "Boolean" ), false) ) ) ); // printStream( stream ); }
@Test public void testWithSimilarNodesShouldNotDependOnOrderOfCreation() throws Throwable { // Given // Node1: () // Node2: ({prop1:"Test", prop2: 12, prop3: true}) // Node3: ({prop1:"Test", prop2: 1.5, prop3: "Test"}) createEmptyNode(); createNode( Arrays.asList(), Arrays.asList( "prop1", "prop2", "prop3" ), Arrays.asList( Values.stringValue( "Test" ), Values.intValue( 12 ), Values.booleanValue( true ) ) ); createNode( Arrays.asList(), Arrays.asList( "prop1", "prop2", "prop3" ), Arrays.asList( Values.stringValue( "Test" ), Values.floatValue( 1.5f ), Values.stringValue( "Test" ) ) ); // When RawIterator<Object[],ProcedureException> stream = procs().procedureCallRead( procs().procedureGet( procedureName( nodesProcedureName ) ).id(), new Object[0] ); // Then assertThat( asList( stream ), containsInAnyOrder( equalTo( nodeEntry("", Arrays.asList(), "prop1", Arrays.asList( "String" ), false) ), equalTo( nodeEntry("", Arrays.asList(), "prop2", Arrays.asList( "Integer", "Float" ), false) ), equalTo( nodeEntry("", Arrays.asList(), "prop3", Arrays.asList( "String", "Boolean" ), false) ) ) ); // printStream( stream ); }
@Test public void testRelsPropertiesRegardlessOfCreationOrder2() throws Throwable { // Given // Node1: (A) // Rel1: (A)-[:R {origin: "Kenya"}]->(A) // Rel2: (A)-[:R {color: "red", size: "M"}]->(A) long emptyNode = createEmptyNode(); createRelationship( emptyNode, "R", emptyNode, Arrays.asList( "origin" ), Arrays.asList( Values.stringValue( "Kenya" ) ) ); createRelationship( emptyNode, "R", emptyNode, Arrays.asList( "color", "size" ), Arrays.asList( Values.stringValue( "red" ), Values.stringValue( "M" ) ) ); // When RawIterator<Object[],ProcedureException> stream = procs().procedureCallRead( procs().procedureGet( procedureName( relsProcedureName ) ).id(), new Object[0] ); // Then assertThat( asList( stream ), containsInAnyOrder( equalTo( relEntry(":`R`", "color", Arrays.asList( "String" ), false) ), equalTo( relEntry(":`R`", "size", Arrays.asList( "String" ), false) ), equalTo( relEntry(":`R`", "origin", Arrays.asList( "String" ), false) ) ) ); // printStream( stream ); }
@Test public void testSchemaWithRelationshipWithoutProperties() throws Throwable { // Given // Node1: () // Rel1: (node1)-[:R{prop1:"Test", prop2: 12, prop3: true}]->(node1) // Rel2: (node1)-[:R]->(node1) long nodeId1 = createEmptyNode(); createRelationship( nodeId1, "R", nodeId1, Arrays.asList( "prop1", "prop2", "prop3" ), Arrays.asList( Values.stringValue( "Test" ), Values.intValue( 12 ), Values.booleanValue( true ) ) ); createRelationship( nodeId1, "R", nodeId1, Arrays.asList(), Arrays.asList() ); // When RawIterator<Object[],ProcedureException> stream = procs().procedureCallRead( procs().procedureGet( procedureName( relsProcedureName ) ).id(), new Object[0] ); // Then assertThat( asList( stream ), containsInAnyOrder( equalTo( relEntry(":`R`", "prop1", Arrays.asList( "String" ), false) ), equalTo( relEntry(":`R`", "prop2", Arrays.asList( "Integer" ), false) ), equalTo( relEntry(":`R`", "prop3", Arrays.asList( "Boolean" ), false) ) ) ); //printStream( stream ); }