29
29
import java .time .ZoneId ;
30
30
import java .time .ZoneOffset ;
31
31
import java .time .ZonedDateTime ;
32
- import java .util .function .Function ;
32
+ import java .util .function .Supplier ;
33
33
34
34
import org .neo4j .driver .v1 .Record ;
35
35
import org .neo4j .driver .v1 .Value ;
36
- import org .neo4j .driver .v1 .Values ;
37
36
import org .neo4j .driver .v1 .types .Duration ;
37
+ import org .neo4j .driver .v1 .util .Function ;
38
+ import org .neo4j .driver .v1 .util .TemporalUtil ;
38
39
import org .neo4j .driver .v1 .util .TestNeo4jSession ;
39
40
40
41
import static java .time .Month .MARCH ;
41
42
import static java .util .Collections .singletonMap ;
42
43
import static org .junit .Assert .assertEquals ;
43
44
import static org .junit .Assume .assumeTrue ;
44
45
import static org .neo4j .driver .internal .util .ServerVersion .v3_4_0 ;
46
+ import static org .neo4j .driver .v1 .Values .duration ;
45
47
46
48
public class TemporalTypesIT
47
49
{
50
+ private static final int RANDOM_VALUES_TO_TEST = 1_000 ;
51
+
48
52
@ Rule
49
53
public final TestNeo4jSession session = new TestNeo4jSession ();
50
54
@@ -74,6 +78,12 @@ public void shouldSendAndReceiveDate()
74
78
testSendAndReceiveValue ( LocalDate .now (), Value ::asLocalDate );
75
79
}
76
80
81
+ @ Test
82
+ public void shouldSendAndReceiveRandomDate ()
83
+ {
84
+ testSendAndReceiveRandomValues ( TemporalUtil ::randomLocalDate , Value ::asLocalDate );
85
+ }
86
+
77
87
@ Test
78
88
public void shouldSendTime ()
79
89
{
@@ -94,6 +104,12 @@ public void shouldSendAndReceiveTime()
94
104
testSendAndReceiveValue ( OffsetTime .now (), Value ::asOffsetTime );
95
105
}
96
106
107
+ @ Test
108
+ public void shouldSendAndReceiveRandomTime ()
109
+ {
110
+ testSendAndReceiveRandomValues ( TemporalUtil ::randomOffsetTime , Value ::asOffsetTime );
111
+ }
112
+
97
113
@ Test
98
114
public void shouldSendLocalTime ()
99
115
{
@@ -114,6 +130,12 @@ public void shouldSendAndReceiveLocalTime()
114
130
testSendAndReceiveValue ( LocalTime .now (), Value ::asLocalTime );
115
131
}
116
132
133
+ @ Test
134
+ public void shouldSendAndReceiveRandomLocalTime ()
135
+ {
136
+ testSendAndReceiveRandomValues ( TemporalUtil ::randomLocalTime , Value ::asLocalTime );
137
+ }
138
+
117
139
@ Test
118
140
public void shouldSendLocalDateTime ()
119
141
{
@@ -134,6 +156,12 @@ public void shouldSendAndReceiveLocalDateTime()
134
156
testSendAndReceiveValue ( LocalDateTime .now (), Value ::asLocalDateTime );
135
157
}
136
158
159
+ @ Test
160
+ public void shouldSendAndReceiveRandomLocalDateTime ()
161
+ {
162
+ testSendAndReceiveRandomValues ( TemporalUtil ::randomLocalDateTime , Value ::asLocalDateTime );
163
+ }
164
+
137
165
@ Test
138
166
public void shouldSendDateTimeWithZoneOffset ()
139
167
{
@@ -157,6 +185,12 @@ public void shouldSendAndReceiveDateTimeWithZoneOffset()
157
185
testSendAndReceiveValue ( ZonedDateTime .of ( 2017 , 3 , 9 , 11 , 12 , 13 , 14 , offset ), Value ::asZonedDateTime );
158
186
}
159
187
188
+ @ Test
189
+ public void shouldSendAndReceiveRandomDateTimeWithZoneOffset ()
190
+ {
191
+ testSendAndReceiveRandomValues ( TemporalUtil ::randomZonedDateTimeWithOffset , Value ::asZonedDateTime );
192
+ }
193
+
160
194
@ Test
161
195
public void shouldSendDateTimeWithZoneId ()
162
196
{
@@ -180,6 +214,12 @@ public void shouldSendAndReceiveDateTimeWithZoneId()
180
214
testSendAndReceiveValue ( ZonedDateTime .of ( 2099 , 12 , 29 , 12 , 59 , 59 , 59 , zoneId ), Value ::asZonedDateTime );
181
215
}
182
216
217
+ @ Test
218
+ public void shouldSendAndReceiveRandomDateTimeWithZoneId ()
219
+ {
220
+ testSendAndReceiveRandomValues ( TemporalUtil ::randomZonedDateTimeWithZoneId , Value ::asZonedDateTime );
221
+ }
222
+
183
223
@ Test
184
224
public void shouldSendDuration ()
185
225
{
@@ -200,6 +240,20 @@ public void shouldSendAndReceiveDuration()
200
240
testSendAndReceiveValue ( newDuration ( 7 , 7 , 88 , 999_999 ), Value ::asDuration );
201
241
}
202
242
243
+ @ Test
244
+ public void shouldSendAndReceiveRandomDuration ()
245
+ {
246
+ testSendAndReceiveRandomValues ( TemporalUtil ::randomDuration , Value ::asDuration );
247
+ }
248
+
249
+ private <T > void testSendAndReceiveRandomValues ( Supplier <T > supplier , Function <Value ,T > converter )
250
+ {
251
+ for ( int i = 0 ; i < RANDOM_VALUES_TO_TEST ; i ++ )
252
+ {
253
+ testSendAndReceiveValue ( supplier .get (), converter );
254
+ }
255
+ }
256
+
203
257
private <T > void testSendValue ( T value , Function <Value ,T > converter )
204
258
{
205
259
Record record1 = session .run ( "CREATE (n:Node {value: $value}) RETURN 42" , singletonMap ( "value" , value ) ).single ();
@@ -223,6 +277,6 @@ private <T> void testSendAndReceiveValue( T value, Function<Value,T> converter )
223
277
224
278
private static Duration newDuration ( long months , long days , long seconds , long nanoseconds )
225
279
{
226
- return Values . duration ( months , days , seconds , nanoseconds ).asDuration ();
280
+ return duration ( months , days , seconds , nanoseconds ).asDuration ();
227
281
}
228
282
}
0 commit comments