20
20
21
21
import org .junit .Test ;
22
22
23
+ import java .time .LocalDate ;
24
+ import java .time .LocalDateTime ;
25
+ import java .time .LocalTime ;
26
+ import java .time .OffsetTime ;
27
+ import java .time .ZonedDateTime ;
28
+ import java .util .Collections ;
29
+
23
30
import org .neo4j .driver .internal .types .TypeConstructor ;
31
+ import org .neo4j .driver .v1 .Value ;
32
+ import org .neo4j .driver .v1 .Values ;
33
+ import org .neo4j .driver .v1 .util .Function ;
24
34
25
35
import static org .hamcrest .MatcherAssert .assertThat ;
26
36
import static org .hamcrest .Matchers .equalTo ;
37
+ import static org .hamcrest .Matchers .nullValue ;
27
38
import static org .junit .Assert .assertTrue ;
39
+ import static org .neo4j .driver .v1 .Values .point ;
28
40
29
41
public class NullValueTest
30
42
{
@@ -45,4 +57,78 @@ public void shouldTypeAsNull()
45
57
{
46
58
assertThat ( ((InternalValue ) NullValue .NULL ).typeConstructor (), equalTo ( TypeConstructor .NULL ) );
47
59
}
60
+
61
+ @ Test
62
+ public void shouldReturnNativeTypesAsDefaultValue () throws Throwable
63
+ {
64
+ Value value = NullValue .NULL ;
65
+ assertThat ( value .asBoolean ( false ), equalTo ( false ) );
66
+ assertThat ( value .asBoolean ( true ), equalTo ( true ) );
67
+ assertThat ( value .asString ( "string value" ), equalTo ( "string value" ) );
68
+ assertThat ( value .asInt ( 10 ), equalTo ( 10 ) );
69
+ assertThat ( value .asLong ( 100L ), equalTo ( 100L ) );
70
+ assertThat ( value .asFloat ( 10.4f ), equalTo ( 10.4f ) );
71
+ assertThat ( value .asDouble ( 10.10 ), equalTo ( 10.10 ) );
72
+ }
73
+
74
+ @ Test
75
+ public void shouldReturnAsNull () throws Throwable
76
+ {
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
+ }
100
+
101
+ @ Test
102
+ public void shouldReturnAsDefaultValue () throws Throwable
103
+ {
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 ) );
116
+
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 ) );
123
+
124
+ assertThat ( value .computeOrDefault ( Value ::asList , Collections .emptyList () ), equalTo ( Collections .emptyList () ) );
125
+ assertThat ( value .computeOrDefault ( Value ::asMap , Collections .emptyMap () ), equalTo ( Collections .emptyMap () ) );
126
+ }
127
+
128
+ private <T > void assertComputeOrDefaultReturnsDefaultValue ( Function <Value , T > f , T defaultAndExpectedValue )
129
+ {
130
+ Value value = NullValue .NULL ;
131
+ T returned = value .computeOrDefault ( f , defaultAndExpectedValue );
132
+ assertThat ( returned , equalTo ( defaultAndExpectedValue ) );
133
+ }
48
134
}
0 commit comments