@@ -24,6 +24,8 @@ import timesSeries from 'async/timesSeries';
24
24
import _ from 'lodash' ;
25
25
26
26
const RANDOM_VALUES_TO_TEST = 2000 ;
27
+ const MIN_TEMPORAL_ARRAY_LENGTH = 20 ;
28
+ const MAX_TEMPORAL_ARRAY_LENGTH = 1000 ;
27
29
const MAX_NANO_OF_SECOND = 999999999 ;
28
30
const MAX_YEAR = 999999999 ;
29
31
const MIN_YEAR = - MAX_YEAR ;
@@ -91,17 +93,15 @@ describe('temporal-types', () => {
91
93
return ;
92
94
}
93
95
94
- const valueGenerator = ( ) => {
95
- const sign = _ . sample ( [ true , false ] ) ? 1 : - 1 ; // duration can be negative
96
- return duration (
97
- sign * _ . random ( 0 , Number . MAX_SAFE_INTEGER ) ,
98
- sign * _ . random ( 0 , Number . MAX_SAFE_INTEGER ) ,
99
- sign * _ . random ( 0 , Number . MAX_SAFE_INTEGER ) ,
100
- sign * _ . random ( 0 , MAX_NANO_OF_SECOND ) ,
101
- ) ;
102
- } ;
96
+ testSendAndReceiveRandomTemporalValues ( ( ) => randomDuration ( ) , done ) ;
97
+ } ) ;
98
+
99
+ it ( 'should send and receive array of Duration' , done => {
100
+ if ( neo4jDoesNotSupportTemporalTypes ( done ) ) {
101
+ return ;
102
+ }
103
103
104
- testSendAndReceiveRandomTemporalValues ( valueGenerator , done ) ;
104
+ testSendAndReceiveArrayOfRandomTemporalValues ( ( ) => randomDuration ( ) , done ) ;
105
105
} ) ;
106
106
107
107
it ( 'should receive LocalTime' , done => {
@@ -136,9 +136,15 @@ describe('temporal-types', () => {
136
136
return ;
137
137
}
138
138
139
- const valueGenerator = ( ) => randomLocalTime ( ) ;
139
+ testSendAndReceiveRandomTemporalValues ( ( ) => randomLocalTime ( ) , done ) ;
140
+ } ) ;
141
+
142
+ it ( 'should send and receive array of LocalTime' , done => {
143
+ if ( neo4jDoesNotSupportTemporalTypes ( done ) ) {
144
+ return ;
145
+ }
140
146
141
- testSendAndReceiveRandomTemporalValues ( valueGenerator , done ) ;
147
+ testSendAndReceiveArrayOfRandomTemporalValues ( ( ) => randomLocalTime ( ) , done ) ;
142
148
} ) ;
143
149
144
150
it ( 'should receive Time' , done => {
@@ -173,9 +179,15 @@ describe('temporal-types', () => {
173
179
return ;
174
180
}
175
181
176
- const valueGenerator = ( ) => randomTime ( ) ;
182
+ testSendAndReceiveRandomTemporalValues ( ( ) => randomTime ( ) , done ) ;
183
+ } ) ;
184
+
185
+ it ( 'should send and receive array of Time' , done => {
186
+ if ( neo4jDoesNotSupportTemporalTypes ( done ) ) {
187
+ return ;
188
+ }
177
189
178
- testSendAndReceiveRandomTemporalValues ( valueGenerator , done ) ;
190
+ testSendAndReceiveArrayOfRandomTemporalValues ( ( ) => randomTime ( ) , done ) ;
179
191
} ) ;
180
192
181
193
it ( 'should receive Date' , done => {
@@ -210,9 +222,15 @@ describe('temporal-types', () => {
210
222
return ;
211
223
}
212
224
213
- const valueGenerator = ( ) => randomDate ( ) ;
225
+ testSendAndReceiveRandomTemporalValues ( ( ) => randomDate ( ) , done ) ;
226
+ } ) ;
214
227
215
- testSendAndReceiveRandomTemporalValues ( valueGenerator , done ) ;
228
+ it ( 'should send and receive array of Date' , done => {
229
+ if ( neo4jDoesNotSupportTemporalTypes ( done ) ) {
230
+ return ;
231
+ }
232
+
233
+ testSendAndReceiveArrayOfRandomTemporalValues ( ( ) => randomDate ( ) , done ) ;
216
234
} ) ;
217
235
218
236
it ( 'should receive LocalDateTime' , done => {
@@ -247,9 +265,15 @@ describe('temporal-types', () => {
247
265
return ;
248
266
}
249
267
250
- const valueGenerator = ( ) => randomLocalDateTime ( ) ;
268
+ testSendAndReceiveRandomTemporalValues ( ( ) => randomLocalDateTime ( ) , done ) ;
269
+ } ) ;
270
+
271
+ it ( 'should send and receive random LocalDateTime' , done => {
272
+ if ( neo4jDoesNotSupportTemporalTypes ( done ) ) {
273
+ return ;
274
+ }
251
275
252
- testSendAndReceiveRandomTemporalValues ( valueGenerator , done ) ;
276
+ testSendAndReceiveArrayOfRandomTemporalValues ( ( ) => randomLocalDateTime ( ) , done ) ;
253
277
} ) ;
254
278
255
279
it ( 'should receive DateTimeWithZoneOffset' , done => {
@@ -284,9 +308,15 @@ describe('temporal-types', () => {
284
308
return ;
285
309
}
286
310
287
- const valueGenerator = ( ) => randomDateTimeWithZoneOffset ( ) ;
311
+ testSendAndReceiveRandomTemporalValues ( ( ) => randomDateTimeWithZoneOffset ( ) , done ) ;
312
+ } ) ;
288
313
289
- testSendAndReceiveRandomTemporalValues ( valueGenerator , done ) ;
314
+ it ( 'should send and receive array of DateTimeWithZoneOffset' , done => {
315
+ if ( neo4jDoesNotSupportTemporalTypes ( done ) ) {
316
+ return ;
317
+ }
318
+
319
+ testSendAndReceiveArrayOfRandomTemporalValues ( ( ) => randomDateTimeWithZoneOffset ( ) , done ) ;
290
320
} ) ;
291
321
292
322
it ( 'should receive DateTimeWithZoneId' , done => {
@@ -321,9 +351,15 @@ describe('temporal-types', () => {
321
351
return ;
322
352
}
323
353
324
- const valueGenerator = ( ) => randomDateTimeWithZoneId ( ) ;
354
+ testSendAndReceiveRandomTemporalValues ( ( ) => randomDateTimeWithZoneId ( ) , done ) ;
355
+ } ) ;
356
+
357
+ it ( 'should send and receive array of DateTimeWithZoneId' , done => {
358
+ if ( neo4jDoesNotSupportTemporalTypes ( done ) ) {
359
+ return ;
360
+ }
325
361
326
- testSendAndReceiveRandomTemporalValues ( valueGenerator , done ) ;
362
+ testSendAndReceiveArrayOfRandomTemporalValues ( ( ) => randomDateTimeWithZoneId ( ) , done ) ;
327
363
} ) ;
328
364
329
365
it ( 'should convert Duration to ISO string' , ( ) => {
@@ -436,6 +472,15 @@ describe('temporal-types', () => {
436
472
timesSeries ( RANDOM_VALUES_TO_TEST , asyncFunction , doneFunction ) ;
437
473
}
438
474
475
+ function testSendAndReceiveArrayOfRandomTemporalValues ( valueGenerator , done ) {
476
+ const arrayLength = _ . random ( MIN_TEMPORAL_ARRAY_LENGTH , MAX_TEMPORAL_ARRAY_LENGTH ) ;
477
+ const values = _ . range ( arrayLength ) . map ( ( ) => valueGenerator ( ) ) ;
478
+
479
+ console . log ( 'Generated: ' + values ) ;
480
+
481
+ testSendReceiveTemporalValue ( values , done ) ;
482
+ }
483
+
439
484
function testReceiveTemporalValue ( query , expectedValue , done ) {
440
485
session . run ( query ) . then ( result => {
441
486
const records = result . records ;
@@ -474,6 +519,16 @@ describe('temporal-types', () => {
474
519
return false ;
475
520
}
476
521
522
+ function randomDuration ( ) {
523
+ const sign = _ . sample ( [ true , false ] ) ? 1 : - 1 ; // duration can be negative
524
+ return duration (
525
+ sign * _ . random ( 0 , Number . MAX_SAFE_INTEGER ) ,
526
+ sign * _ . random ( 0 , Number . MAX_SAFE_INTEGER ) ,
527
+ sign * _ . random ( 0 , Number . MAX_SAFE_INTEGER ) ,
528
+ sign * _ . random ( 0 , MAX_NANO_OF_SECOND ) ,
529
+ ) ;
530
+ }
531
+
477
532
function randomDateTimeWithZoneOffset ( ) {
478
533
const dateTime = randomDstSafeLocalDateTime ( ) ;
479
534
return new neo4j . DateTimeWithZoneOffset ( dateTime . year , dateTime . month , dateTime . day , dateTime . hour , dateTime . minute , dateTime . second , dateTime . nanosecond ,
0 commit comments