2525import java .time .LocalTime ;
2626import java .time .OffsetTime ;
2727import java .time .ZonedDateTime ;
28- import java .util .Collections ;
2928
3029import org .neo4j .driver .internal .types .TypeConstructor ;
3130import org .neo4j .driver .v1 .Value ;
32- import org .neo4j .driver .v1 .Values ;
3331import org .neo4j .driver .v1 .util .Function ;
3432
33+ import static java .util .Collections .emptyList ;
34+ import static java .util .Collections .emptyMap ;
3535import static org .hamcrest .MatcherAssert .assertThat ;
3636import static org .hamcrest .Matchers .equalTo ;
37- import static org .hamcrest .Matchers .nullValue ;
3837import static org .junit .Assert .assertTrue ;
38+ import static org .neo4j .driver .v1 .Values .isoDuration ;
39+ import static org .neo4j .driver .v1 .Values .ofValue ;
3940import static org .neo4j .driver .v1 .Values .point ;
4041
4142public class NullValueTest
@@ -62,73 +63,84 @@ public void shouldTypeAsNull()
6263 public void shouldReturnNativeTypesAsDefaultValue () throws Throwable
6364 {
6465 Value value = NullValue .NULL ;
66+ // string
67+ assertThat ( value .asString ( "string value" ), equalTo ( "string value" ) );
68+
69+ // primitives
6570 assertThat ( value .asBoolean ( false ), equalTo ( false ) );
6671 assertThat ( value .asBoolean ( true ), equalTo ( true ) );
67- assertThat ( value .asString ( "string value" ), equalTo ( "string value" ) );
6872 assertThat ( value .asInt ( 10 ), equalTo ( 10 ) );
6973 assertThat ( value .asLong ( 100L ), equalTo ( 100L ) );
7074 assertThat ( value .asFloat ( 10.4f ), equalTo ( 10.4f ) );
7175 assertThat ( value .asDouble ( 10.10 ), equalTo ( 10.10 ) );
76+
77+ //array, list, map
78+ assertThat ( value .asByteArray ( new byte []{1 , 2 } ), equalTo ( new byte []{1 , 2 } ) );
79+ assertThat ( value .asList ( emptyList () ), equalTo ( emptyList () ) );
80+ assertThat ( value .asList ( ofValue (), emptyList () ), equalTo ( emptyList () ) );
81+ assertThat ( value .asMap ( emptyMap () ), equalTo ( emptyMap () ) );
82+ assertThat ( value .asMap ( ofValue (), emptyMap () ), equalTo ( emptyMap () ) );
83+
84+ // spatial, temporal
85+ assertAsWithDefaultValueReturnDefault ( value ::asPoint , point ( 1234 , 1 , 2 ).asPoint () );
86+
87+ assertAsWithDefaultValueReturnDefault ( value ::asLocalDate , LocalDate .now () );
88+ assertAsWithDefaultValueReturnDefault ( value ::asOffsetTime , OffsetTime .now () );
89+ assertAsWithDefaultValueReturnDefault ( value ::asLocalTime , LocalTime .now () );
90+ assertAsWithDefaultValueReturnDefault ( value ::asLocalDateTime , LocalDateTime .now () );
91+ assertAsWithDefaultValueReturnDefault ( value ::asZonedDateTime , ZonedDateTime .now () );
92+ assertAsWithDefaultValueReturnDefault ( value ::asIsoDuration ,
93+ isoDuration ( 1 , 2 , 3 , 4 ).asIsoDuration () );
7294 }
7395
7496 @ Test
7597 public void shouldReturnAsNull () throws Throwable
7698 {
77- Value value = NullValue .NULL ;
78-
79- assertThat ( value .computeOrNull ( Value ::asObject ), nullValue () );
80- assertThat ( value .computeOrNull ( Value ::asNumber ), nullValue () );
81- assertThat ( value .computeOrNull ( Value ::asByteArray ), nullValue () );
82-
83- assertThat ( value .computeOrNull ( Value ::asEntity ), nullValue () );
84- assertThat ( value .computeOrNull ( Value ::asNode ), nullValue () );
85- assertThat ( value .computeOrNull ( Value ::asRelationship ), nullValue () );
86- assertThat ( value .computeOrNull ( Value ::asPath ), nullValue () );
87-
88- assertThat ( value .computeOrNull ( Value ::asPoint ), nullValue () );
89-
90- assertThat ( value .computeOrNull ( Value ::asLocalDate ), nullValue () );
91- assertThat ( value .computeOrNull ( Value ::asOffsetTime ), nullValue () );
92- assertThat ( value .computeOrNull ( Value ::asLocalTime ), nullValue () );
93- assertThat ( value .computeOrNull ( Value ::asLocalDateTime ), nullValue () );
94- assertThat ( value .computeOrNull ( Value ::asZonedDateTime ), nullValue () );
95- assertThat ( value .computeOrNull ( Value ::asIsoDuration ), nullValue () );
96-
97- assertThat ( value .computeOrNull ( Value ::asList ), nullValue () );
98- assertThat ( value .computeOrNull ( Value ::asMap ), nullValue () );
99+ assertComputeOrDefaultReturnNull ( Value ::asObject );
100+ assertComputeOrDefaultReturnNull ( Value ::asNumber );
101+
102+ assertComputeOrDefaultReturnNull ( Value ::asEntity );
103+ assertComputeOrDefaultReturnNull ( Value ::asNode );
104+ assertComputeOrDefaultReturnNull ( Value ::asRelationship );
105+ assertComputeOrDefaultReturnNull ( Value ::asPath );
106+
107+ assertComputeOrDefaultReturnNull ( Value ::asString );
108+ assertComputeOrDefaultReturnNull ( Value ::asByteArray );
109+ assertComputeOrDefaultReturnNull ( Value ::asList );
110+ assertComputeOrDefaultReturnNull ( v -> v .asList ( ofValue () ) );
111+ assertComputeOrDefaultReturnNull ( Value ::asMap );
112+ assertComputeOrDefaultReturnNull ( v -> v .asMap ( ofValue () ) );
113+
114+ assertComputeOrDefaultReturnNull ( Value ::asPoint );
115+
116+ assertComputeOrDefaultReturnNull ( Value ::asLocalDate );
117+ assertComputeOrDefaultReturnNull ( Value ::asOffsetTime );
118+ assertComputeOrDefaultReturnNull ( Value ::asLocalTime );
119+ assertComputeOrDefaultReturnNull ( Value ::asLocalDateTime );
120+ assertComputeOrDefaultReturnNull ( Value ::asZonedDateTime );
121+ assertComputeOrDefaultReturnNull ( Value ::asIsoDuration );
99122 }
100123
101124 @ Test
102125 public void shouldReturnAsDefaultValue () throws Throwable
103126 {
104- Value value = NullValue .NULL ;
105-
106- assertThat ( value .computeOrDefault ( Value ::asObject , "null" ), equalTo ( "null" ) );
107- assertThat ( value .computeOrDefault ( Value ::asNumber , 10 ), equalTo ( 10 ) );
108- assertThat ( value .computeOrDefault ( Value ::asByteArray , new byte [0 ] ), equalTo ( new byte [0 ] ) );
109-
110- assertThat ( value .computeOrDefault ( Value ::asEntity , null ), nullValue () );
111- assertThat ( value .computeOrDefault ( Value ::asNode , null ), nullValue () );
112- assertThat ( value .computeOrDefault ( Value ::asRelationship , null ), nullValue () );
113- assertThat ( value .computeOrDefault ( Value ::asPath , null ), nullValue () );
114-
115- assertComputeOrDefaultReturnsDefaultValue ( Value ::asPoint , point ( 1234 , 1 , 2 ) );
127+ assertComputeOrDefaultReturnDefault ( Value ::asObject , "null string" );
128+ assertComputeOrDefaultReturnDefault ( Value ::asNumber , 10 );
129+ }
116130
117- assertComputeOrDefaultReturnsDefaultValue ( Value ::asLocalDate , LocalDate .now () );
118- assertComputeOrDefaultReturnsDefaultValue ( Value ::asOffsetTime , OffsetTime .now () );
119- assertComputeOrDefaultReturnsDefaultValue ( Value ::asLocalTime , LocalTime .now () );
120- assertComputeOrDefaultReturnsDefaultValue ( Value ::asLocalDateTime , LocalDateTime .now () );
121- assertComputeOrDefaultReturnsDefaultValue ( Value ::asZonedDateTime , ZonedDateTime .now () );
122- assertComputeOrDefaultReturnsDefaultValue ( Value ::asIsoDuration , Values .isoDuration ( 1 , 2 , 3 , 4 ) );
131+ private <T > void assertComputeOrDefaultReturnDefault ( Function <Value ,T > f , T defaultAndExpectedValue )
132+ {
133+ Value value = NullValue .NULL ;
134+ assertThat ( value .computeOrDefault ( f , defaultAndExpectedValue ), equalTo ( defaultAndExpectedValue ) );
135+ }
123136
124- assertThat ( value .computeOrDefault ( Value ::asList , Collections .emptyList () ), equalTo ( Collections .emptyList () ) );
125- assertThat ( value .computeOrDefault ( Value ::asMap , Collections .emptyMap () ), equalTo ( Collections .emptyMap () ) );
137+ private <T > void assertComputeOrDefaultReturnNull ( Function <Value ,T > f )
138+ {
139+ assertComputeOrDefaultReturnDefault ( f , null );
126140 }
127141
128- private <T > void assertComputeOrDefaultReturnsDefaultValue ( Function <Value , T > f , T defaultAndExpectedValue )
142+ private <T > void assertAsWithDefaultValueReturnDefault ( Function <T , T > map , T defaultValue )
129143 {
130- Value value = NullValue .NULL ;
131- T returned = value .computeOrDefault ( f , defaultAndExpectedValue );
132- assertThat ( returned , equalTo ( defaultAndExpectedValue ) );
144+ assertThat ( map .apply ( defaultValue ), equalTo ( defaultValue ) );
133145 }
134146}
0 commit comments