diff --git a/driver/src/main/java/org/neo4j/driver/internal/packstream/PackStream.java b/driver/src/main/java/org/neo4j/driver/internal/packstream/PackStream.java index 2852f94ec6..e3f69fb591 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/packstream/PackStream.java +++ b/driver/src/main/java/org/neo4j/driver/internal/packstream/PackStream.java @@ -177,6 +177,11 @@ public void pack( boolean value ) throws IOException out.writeByte( value ? TRUE : FALSE ); } + public void pack( char value ) throws IOException + { + pack( String.valueOf(value) ); + } + public void pack( long value ) throws IOException { if ( value >= MINUS_2_TO_THE_4 && value < PLUS_2_TO_THE_7) diff --git a/driver/src/main/java/org/neo4j/driver/v1/Values.java b/driver/src/main/java/org/neo4j/driver/v1/Values.java index 4a36871c47..0719719204 100644 --- a/driver/src/main/java/org/neo4j/driver/v1/Values.java +++ b/driver/src/main/java/org/neo4j/driver/v1/Values.java @@ -141,6 +141,17 @@ public static Value value( boolean... input ) } return new ListValue( values ); } + + public static Value value( char... input ) + { + Value[] values = new Value[input.length]; + for ( int i = 0; i < input.length; i++ ) + { + values[i] = value( input[i] ); + } + return new ListValue( values ); + } + public static Value value( long... input ) { Value[] values = new Value[input.length]; @@ -207,6 +218,8 @@ public static Value value( Iterator val ) return new ListValue( values.toArray( new Value[values.size()] ) ); } + public static Value value (final char val ) { return new StringValue( String.valueOf( val ) ); } + public static Value value( final String val ) { return new StringValue( val ); diff --git a/driver/src/test/java/org/neo4j/driver/internal/ValuesTest.java b/driver/src/test/java/org/neo4j/driver/internal/ValuesTest.java index 4415d991f0..4037ec5d3b 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/ValuesTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/ValuesTest.java @@ -80,6 +80,9 @@ public void shouldConvertPrimitiveArrays() throws Throwable assertThat( value( new boolean[]{true, false, true} ), equalTo( (Value) new ListValue( values( true, false, true ) ) ) ); + assertThat( value( new char[]{'a', 'b', 'c'} ), + equalTo( (Value) new ListValue( values( 'a', 'b', 'c' ) ) ) ); + assertThat( value( new String[]{"a", "b", "c"} ), equalTo( (Value) new ListValue( values( "a", "b", "c" ) ) ) ); } @@ -118,6 +121,9 @@ public void equalityRules() throws Throwable assertNotEquals( value( "Hello" ), value( "hello" ) ); assertNotEquals( value( "This åäö string ?? contains strange " ), value( "This åäö string ?? contains strange Ü" ) ); + + assertEquals( value ( 'A' ), value( 'A' )); + assertEquals( value ( 'A' ), value( "A" )); } @Test diff --git a/driver/src/test/java/org/neo4j/driver/internal/packstream/PackStreamTest.java b/driver/src/test/java/org/neo4j/driver/internal/packstream/PackStreamTest.java index d232dabc65..e5d55cd211 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/packstream/PackStreamTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/packstream/PackStreamTest.java @@ -395,6 +395,26 @@ public void testCanPackAndUnpackBytes() throws Throwable } + @Test + public void testCanPackAndUnpackChar() throws Throwable + { + // Given + Machine machine = new Machine(); + + // When + PackStream.Packer packer = machine.packer(); + packer.pack( 'A' ); + packer.flush(); + + // Then + PackStream.Unpacker unpacker = newUnpacker( machine.output() ); + PackType packType = unpacker.peekNextType(); + + // Then + assertThat( packType, equalTo( PackType.STRING ) ); + assertThat( unpacker.unpackString(), equalTo( "A" )); + } + @Test public void testCanPackAndUnpackString() throws Throwable {