github.com/0chain/gosdk@v1.17.11/core/common/time_test.go (about) 1 package common 2 3 import ( 4 "errors" 5 "testing" 6 "time" 7 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestParseTime(t *testing.T) { 12 13 now := time.Date(2022, 3, 22, 0, 0, 0, 0, time.Now().UTC().Location()) 14 null := time.Now() 15 16 tests := []struct { 17 name string 18 input string 19 exceptedTime time.Time 20 exceptedErr error 21 }{ 22 { 23 name: "duration", 24 input: "+1h30m", 25 exceptedTime: now.Add(90 * time.Minute), 26 }, 27 { 28 name: "seconds", 29 input: "+30", 30 exceptedTime: now.Add(30 * time.Second), 31 }, 32 { 33 name: "Unix timestamp", 34 input: "1647858200", 35 exceptedTime: time.Unix(1647858200, 0), 36 }, 37 { 38 name: "YYYY-MM-dd HH:mm:ss", 39 input: "1647858200", 40 exceptedTime: time.Unix(1647858200, 0), 41 }, 42 { 43 name: "empty input", 44 input: "", 45 exceptedTime: null, 46 exceptedErr: ErrInvalidTime, 47 }, 48 { 49 name: "invaid input", 50 input: "s", 51 exceptedTime: null, 52 exceptedErr: ErrInvalidTime, 53 }, 54 } 55 56 for _, test := range tests { 57 58 t.Run(test.name, func(t *testing.T) { 59 60 v, err := ParseTime(now, test.input) 61 62 if test.exceptedTime.Equal(null) { 63 require.Nil(t, v) 64 } else { 65 require.NotNil(t, v) 66 require.True(t, v.Equal(test.exceptedTime)) 67 } 68 69 if test.exceptedErr == nil { 70 require.Nil(t, err) 71 } else { 72 require.True(t, errors.Is(err, test.exceptedErr)) 73 } 74 }) 75 } 76 77 }