@@ -369,3 +369,61 @@ func Test_Column_Enum16(t *testing.T) {
369
369
}
370
370
}
371
371
}
372
+
373
+ func Test_Column_Date (t * testing.T ) {
374
+ var (
375
+ buf bytes.Buffer
376
+ timeNow = time .Now ().Truncate (24 * time .Hour )
377
+ encoder = binary .NewEncoder (& buf )
378
+ decoder = binary .NewDecoder (& buf )
379
+ )
380
+ if column , err := columns .Factory ("column_name" , "Date" , time .Local ); assert .NoError (t , err ) {
381
+ if err := column .Write (encoder , timeNow ); assert .NoError (t , err ) {
382
+ if v , err := column .Read (decoder ); assert .NoError (t , err ) {
383
+ assert .Equal (t , timeNow , v )
384
+ }
385
+ }
386
+ if err := column .Write (encoder , timeNow .In (time .UTC ).Format ("2006-01-02" )); assert .NoError (t , err ) {
387
+ if v , err := column .Read (decoder ); assert .NoError (t , err ) {
388
+ assert .Equal (t , timeNow , v )
389
+ }
390
+ }
391
+ if assert .Equal (t , "column_name" , column .Name ()) && assert .Equal (t , "Date" , column .CHType ()) {
392
+ assert .Equal (t , reflect .TypeOf (time.Time {}).Kind (), column .ScanType ().Kind ())
393
+ }
394
+ if err := column .Write (encoder , int8 (0 )); assert .Error (t , err ) {
395
+ if e , ok := err .(* columns.ErrUnexpectedType ); assert .True (t , ok ) {
396
+ assert .Equal (t , int8 (0 ), e .T )
397
+ }
398
+ }
399
+ }
400
+ }
401
+
402
+ func Test_Column_DateTime (t * testing.T ) {
403
+ var (
404
+ buf bytes.Buffer
405
+ timeNow = time .Now ().Truncate (time .Second )
406
+ encoder = binary .NewEncoder (& buf )
407
+ decoder = binary .NewDecoder (& buf )
408
+ )
409
+ if column , err := columns .Factory ("column_name" , "DateTime" , time .Local ); assert .NoError (t , err ) {
410
+ if err := column .Write (encoder , timeNow ); assert .NoError (t , err ) {
411
+ if v , err := column .Read (decoder ); assert .NoError (t , err ) {
412
+ assert .Equal (t , timeNow , v )
413
+ }
414
+ }
415
+ if err := column .Write (encoder , timeNow .In (time .UTC ).Format ("2006-01-02 15:04:05" )); assert .NoError (t , err ) {
416
+ if v , err := column .Read (decoder ); assert .NoError (t , err ) {
417
+ assert .Equal (t , timeNow , v )
418
+ }
419
+ }
420
+ if assert .Equal (t , "column_name" , column .Name ()) && assert .Equal (t , "DateTime" , column .CHType ()) {
421
+ assert .Equal (t , reflect .TypeOf (time.Time {}).Kind (), column .ScanType ().Kind ())
422
+ }
423
+ if err := column .Write (encoder , int8 (0 )); assert .Error (t , err ) {
424
+ if e , ok := err .(* columns.ErrUnexpectedType ); assert .True (t , ok ) {
425
+ assert .Equal (t , int8 (0 ), e .T )
426
+ }
427
+ }
428
+ }
429
+ }
0 commit comments