25
25
import java .time .LocalTime ;
26
26
import java .time .OffsetTime ;
27
27
import java .time .ZonedDateTime ;
28
- import java .util .Collections ;
29
28
30
29
import org .neo4j .driver .internal .types .TypeConstructor ;
31
30
import org .neo4j .driver .v1 .Value ;
32
- import org .neo4j .driver .v1 .Values ;
33
31
import org .neo4j .driver .v1 .util .Function ;
34
32
33
+ import static java .util .Collections .emptyList ;
34
+ import static java .util .Collections .emptyMap ;
35
35
import static org .hamcrest .MatcherAssert .assertThat ;
36
36
import static org .hamcrest .Matchers .equalTo ;
37
- import static org .hamcrest .Matchers .nullValue ;
38
37
import static org .junit .Assert .assertTrue ;
38
+ import static org .neo4j .driver .v1 .Values .isoDuration ;
39
+ import static org .neo4j .driver .v1 .Values .ofValue ;
39
40
import static org .neo4j .driver .v1 .Values .point ;
40
41
41
42
public class NullValueTest
@@ -62,73 +63,84 @@ public void shouldTypeAsNull()
62
63
public void shouldReturnNativeTypesAsDefaultValue () throws Throwable
63
64
{
64
65
Value value = NullValue .NULL ;
66
+ // string
67
+ assertThat ( value .asString ( "string value" ), equalTo ( "string value" ) );
68
+
69
+ // primitives
65
70
assertThat ( value .asBoolean ( false ), equalTo ( false ) );
66
71
assertThat ( value .asBoolean ( true ), equalTo ( true ) );
67
- assertThat ( value .asString ( "string value" ), equalTo ( "string value" ) );
68
72
assertThat ( value .asInt ( 10 ), equalTo ( 10 ) );
69
73
assertThat ( value .asLong ( 100L ), equalTo ( 100L ) );
70
74
assertThat ( value .asFloat ( 10.4f ), equalTo ( 10.4f ) );
71
75
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 () );
72
94
}
73
95
74
96
@ Test
75
97
public void shouldReturnAsNull () throws Throwable
76
98
{
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 );
99
122
}
100
123
101
124
@ Test
102
125
public void shouldReturnAsDefaultValue () throws Throwable
103
126
{
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
+ }
116
130
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
+ }
123
136
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 );
126
140
}
127
141
128
- private <T > void assertComputeOrDefaultReturnsDefaultValue ( Function <Value , T > f , T defaultAndExpectedValue )
142
+ private <T > void assertAsWithDefaultValueReturnDefault ( Function <T , T > map , T defaultValue )
129
143
{
130
- Value value = NullValue .NULL ;
131
- T returned = value .computeOrDefault ( f , defaultAndExpectedValue );
132
- assertThat ( returned , equalTo ( defaultAndExpectedValue ) );
144
+ assertThat ( map .apply ( defaultValue ), equalTo ( defaultValue ) );
133
145
}
134
146
}
0 commit comments