From 6770a32f65b5bc6fe0ecd31b8b1e776edf10b5b2 Mon Sep 17 00:00:00 2001 From: Tyler Power Date: Mon, 23 Nov 2015 09:21:13 +1300 Subject: [PATCH] Add int64 and float64 type coercion in ToDuration --- cast_test.go | 13 +++++++++++-- caste.go | 6 ++++++ 2 files changed, 17 insertions(+), 2 deletions(-) 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