diff --git a/cast_test.go b/cast_test.go index f9a24df..2c4e421 100644 --- a/cast_test.go +++ b/cast_test.go @@ -6,9 +6,9 @@ package cast import ( - "testing" - "html/template" + "testing" + "time" "github.com/stretchr/testify/assert" ) @@ -151,3 +151,12 @@ func TestIndirectPointers(t *testing.T) { assert.Equal(t, ToInt(y), 13) assert.Equal(t, ToInt(z), 13) } + +func TestToDuration(t *testing.T) { + a := time.Second * 5 + ai := int64(a) + b := time.Second * 5 + bf := float64(b) + assert.Equal(t, ToDuration(ai), a) + assert.Equal(t, ToDuration(bf), b) +} diff --git a/caste.go b/caste.go index b8e6044..5401c0b 100644 --- a/caste.go +++ b/caste.go @@ -43,6 +43,12 @@ func ToDurationE(i interface{}) (d time.Duration, err error) { switch s := i.(type) { case time.Duration: return s, nil + case int64: + d = time.Duration(s) + return + case float64: + d = time.Duration(s) + return case string: d, err = time.ParseDuration(s) return