private static BooleanValue readBoolean( ByteBuffer chunk, int offset ) { return booleanValue( chunk.get( offset ) != 0 ); }
/** * @see RandomValues */ public BooleanValue nextBooleanValue() { return Values.booleanValue( generator.nextBoolean() ); }
@Override public AnyValue value( int position ) { return Values.booleanValue( booleanValue( position ) ); }
static BooleanValue asValue( long long0 ) { return Values.booleanValue( asValueRaw( long0 ) ); }
@Override public Value value( PropertyBlock block, PropertyStore store ) { return Values.booleanValue( getValue( block.getSingleValueLong() ) ); }
private BooleanValue readBoolean() { return Values.booleanValue( PropertyBlock.fetchByte( currentBlock() ) == 1 ); }
private static Test shouldMatch( boolean propertyValue, Object value ) { return new Test( Values.booleanValue( propertyValue ), value, true ); }
private static Test shouldNotMatch( boolean propertyValue, Object value ) { return new Test( Values.booleanValue( propertyValue ), value, false ); }
@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 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 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 ); }
@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 testWithAllDifferentRelationships() throws Throwable { // Given // Node1: () // Rel1: (Node1)-[:R{prop1:"Test", prop2:12}]->(Node1) // Rel2: (Node1)-[:X{prop1:true}]->(Node1) // Rel3: (Node1)-[:Z{}]->(Node1) long nodeId1 = createEmptyNode(); createRelationship( nodeId1, "R", nodeId1, Arrays.asList( "prop1", "prop2" ), Arrays.asList( Values.stringValue( "Test" ), Values.intValue( 12 ) ) ); createRelationship( nodeId1, "X", nodeId1, Arrays.asList( "prop1" ), Arrays.asList( Values.booleanValue( true ) ) ); createRelationship( nodeId1, "Z", 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" ), true) ), equalTo( relEntry(":`R`", "prop2", Arrays.asList( "Integer" ), true) ), equalTo( relEntry(":`X`", "prop1", Arrays.asList( "Boolean" ), true) ), equalTo( relEntry(":`Z`", null, null, false) ) ) ); // printStream( stream ); }
@Test public void testRelsPropertiesRegardlessOfCreationOrder3() throws Throwable { // Given // Node1: (A) // Rel1: (A)-[:R {color: "red", size: "M"}]->(A) // Rel2: (A)-[:R {origin: "Kenya", active: true}}]->(A) long emptyNode = createEmptyNode(); createRelationship( emptyNode, "R", emptyNode, Arrays.asList( "color", "size" ), Arrays.asList( Values.stringValue( "red" ), Values.stringValue( "M" ) ) ); createRelationship( emptyNode, "R", emptyNode, Arrays.asList( "origin", "active" ), Arrays.asList( Values.stringValue( "Kenya" ), Values.booleanValue( true ) ) ); // 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) ), equalTo( relEntry(":`R`", "active", Arrays.asList( "Boolean" ), false))) ); // printStream( stream ); }
@Test public void testWithSimilarRelationshipsShouldNotDependOnOrderOfCreation() throws Throwable { // This is basically the same as the test before but the empty rel is created first // Given // Node1: () // Rel1: (node1)-[:R]->(node1) // Rel2: (node1)-[:R{prop1:"Test", prop2: 12, prop3: true}]->(node1) // Rel3: (node1)-[:R{prop1:"Test", prop2: 1.5, prop3: "Test"}]->(node1) long nodeId1 = createEmptyNode(); createRelationship( nodeId1, "R", nodeId1, Arrays.asList(), Arrays.asList() ); 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( "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( 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", "Float" ), false) ), equalTo( relEntry(":`R`", "prop3", Arrays.asList( "String", "Boolean" ), false) ) ) ); //printStream( stream ); }
@Test public void testWithSimilarRelationshipsHavingDifferentPropertyValueTypes() throws Throwable { // Given // Node1: () // Rel1: (node1)-[:R{prop1:"Test", prop2: 12, prop3: true}]->(node1) // Rel2: (node1)-[:R{prop1:"Test", prop2: 1.5, prop3: "Test"}]->(node1) // Rel3: (node1)-[:R{prop1:"Test"}]->(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( "prop1", "prop2", "prop3" ), Arrays.asList( Values.stringValue( "Test" ), Values.floatValue( 1.5f ), Values.stringValue( "Test" ) ) ); createRelationship( nodeId1, "R", nodeId1, Arrays.asList( "prop1" ), Arrays.asList( Values.stringValue( "Test" ) ) ); // 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" ), true) ), equalTo( relEntry(":`R`", "prop2", Arrays.asList( "Integer", "Float" ), false) ), equalTo( relEntry(":`R`", "prop3", Arrays.asList( "String", "Boolean" ), false) ) ) ); //printStream( stream ); }
@Test void shouldHandleSingleListConcatenation() { // Given ListValue inner = list( stringValue( "foo" ), longValue( 42 ), booleanValue( true ) ); // When ListValue concat = concat( inner ); // Then assertEquals(inner, concat); assertEquals(inner.hashCode(), concat.hashCode()); assertArrayEquals(inner.asArray(), concat.asArray()); }
@Test void shouldHandleMultipleListConcatenation() { // Given ListValue inner1 = list( stringValue( "foo" ), longValue( 42 ), booleanValue( true ) ); ListValue inner2 = list( list(stringValue("bar"), intValue(42)) ); ListValue inner3 = list( map("foo", 1337L, "bar", 42 ), stringValue("baz") ); // When ListValue concat = concat( inner1, inner2, inner3 ); // Then ListValue expected = list( stringValue( "foo" ), longValue( 42 ), booleanValue( true ), list( stringValue( "bar" ), intValue( 42 ) ), map( "foo", 1337L, "bar", 42 ), stringValue( "baz" ) ); assertEquals(expected, concat); assertEquals(expected.hashCode(), concat.hashCode()); assertArrayEquals(expected.asArray(), concat.asArray()); } }
@Test void shouldNotEqualVirtualValue() { VirtualValue virtual = new MyVirtualValue( 42 ); assertNotEqual( booleanValue( false ), virtual ); assertNotEqual( byteValue( (byte)0 ), virtual ); assertNotEqual( shortValue( (short)0 ), virtual ); assertNotEqual( intValue( 0 ), virtual ); assertNotEqual( longValue( 0 ), virtual ); assertNotEqual( floatValue( 0.0f ), virtual ); assertNotEqual( doubleValue( 0.0 ), virtual ); assertNotEqual( stringValue( "" ), virtual ); } }
@Test public void shouldNotTouchValuesThatDoNotNeedConversion() { // Given ListValue nodeList = VirtualValues.list( nodeProxyValue, directNodeValue ); ListValue relationshipList = VirtualValues.list( relationshipProxyValue, directRelationshipValue ); MapValue nodeMap = VirtualValues.map( new String[]{"a", "b"}, new AnyValue[]{nodeProxyValue, directNodeValue} ); MapValue relationshipMap = VirtualValues.map( new String[]{"a", "b"}, new AnyValue[]{relationshipProxyValue, directRelationshipValue} ); // Verify verifyDoesNotTouchValue( nodeProxyValue ); verifyDoesNotTouchValue( relationshipProxyValue ); verifyDoesNotTouchValue( directNodeValue ); verifyDoesNotTouchValue( directRelationshipValue ); verifyDoesNotTouchValue( nodeList ); verifyDoesNotTouchValue( relationshipList ); verifyDoesNotTouchValue( nodeMap ); verifyDoesNotTouchValue( relationshipMap ); // This is not an exhaustive test since the other cases are very uninteresting... verifyDoesNotTouchValue( Values.booleanValue( false ) ); verifyDoesNotTouchValue( Values.stringValue( "Hello" ) ); verifyDoesNotTouchValue( Values.longValue( 42L ) ); // ... }