github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/config/types/duration_test.go (about) 1 package types 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "testing" 7 "time" 8 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestDurationUnmarshal(t *testing.T) { 13 type testCase struct { 14 name string 15 input string 16 expectedResult *Duration 17 expectedErr error 18 } 19 20 testCases := []testCase{ 21 { 22 name: "valid duration", 23 input: "60s", 24 expectedResult: &Duration{Duration: time.Minute}, 25 }, 26 { 27 name: "int value", 28 input: "60", 29 expectedErr: fmt.Errorf("time: missing unit in duration \"60\""), 30 }, 31 { 32 name: "no duration value", 33 input: "abc", 34 expectedErr: fmt.Errorf("time: invalid duration \"abc\""), 35 }, 36 } 37 38 for _, testCase := range testCases { 39 t.Run(testCase.name, func(t *testing.T) { 40 var d Duration 41 input, err := json.Marshal(testCase.input) 42 require.NoError(t, err) 43 err = json.Unmarshal(input, &d) 44 45 if testCase.expectedResult != nil { 46 require.Equal(t, (*testCase.expectedResult).Nanoseconds(), d.Nanoseconds()) 47 } 48 49 if err != nil { 50 require.Equal(t, testCase.expectedErr.Error(), err.Error()) 51 } 52 }) 53 } 54 }