@@ -293,6 +293,78 @@ func TestIsolationLevelMapping(t *testing.T) {
293293 }
294294}
295295
296+ func TestAppendDateTime (t * testing.T ) {
297+ tests := []struct {
298+ t time.Time
299+ str string
300+ }{
301+ {
302+ t : time .Date (2020 , 05 , 30 , 0 , 0 , 0 , 0 , time .UTC ),
303+ str : "2020-05-30" ,
304+ },
305+ {
306+ t : time .Date (2020 , 05 , 30 , 22 , 0 , 0 , 0 , time .UTC ),
307+ str : "2020-05-30 22:00:00" ,
308+ },
309+ {
310+ t : time .Date (2020 , 05 , 30 , 22 , 33 , 0 , 0 , time .UTC ),
311+ str : "2020-05-30 22:33:00" ,
312+ },
313+ {
314+ t : time .Date (2020 , 05 , 30 , 22 , 33 , 44 , 0 , time .UTC ),
315+ str : "2020-05-30 22:33:44" ,
316+ },
317+ {
318+ t : time .Date (2020 , 05 , 30 , 22 , 33 , 44 , 550000000 , time .UTC ),
319+ str : "2020-05-30 22:33:44.550000" ,
320+ },
321+ {
322+ t : time .Date (2020 , 05 , 30 , 22 , 33 , 44 , 550000499 , time .UTC ),
323+ str : "2020-05-30 22:33:44.550000" ,
324+ },
325+ {
326+ t : time .Date (2020 , 05 , 30 , 22 , 33 , 44 , 550000500 , time .UTC ),
327+ str : "2020-05-30 22:33:44.550001" ,
328+ },
329+ {
330+ t : time .Date (2020 , 05 , 30 , 22 , 33 , 44 , 550000567 , time .UTC ),
331+ str : "2020-05-30 22:33:44.550001" ,
332+ },
333+ {
334+ t : time .Date (2020 , 05 , 30 , 22 , 33 , 44 , 999999567 , time .UTC ),
335+ str : "2020-05-30 22:33:45" ,
336+ },
337+ }
338+ for _ , v := range tests {
339+ buf := make ([]byte , 0 , 32 )
340+ buf , _ = appendDateTime (buf , v .t )
341+ if str := string (buf ); str != v .str {
342+ t .Errorf ("appendDateTime(%v), have: %s, want: %s" , v .t , str , v .str )
343+ return
344+ }
345+ }
346+
347+ // year out of range
348+ {
349+ v := time .Date (0 , 1 , 1 , 0 , 0 , 0 , 0 , time .UTC )
350+ buf := make ([]byte , 0 , 32 )
351+ _ , err := appendDateTime (buf , v )
352+ if err == nil {
353+ t .Error ("want an error" )
354+ return
355+ }
356+ }
357+ {
358+ v := time .Date (10000 , 1 , 1 , 0 , 0 , 0 , 0 , time .UTC )
359+ buf := make ([]byte , 0 , 32 )
360+ _ , err := appendDateTime (buf , v )
361+ if err == nil {
362+ t .Error ("want an error" )
363+ return
364+ }
365+ }
366+ }
367+
296368func TestParseDateTime (t * testing.T ) {
297369 cases := []struct {
298370 name string
0 commit comments