add duration type

This commit is contained in:
Livio Amstutz 2020-03-25 09:32:52 +01:00
parent 5cd9ca506a
commit 6bf96ecbd7
2 changed files with 61 additions and 0 deletions

View File

@ -0,0 +1,15 @@
package types
import (
"time"
)
type Duration struct {
time.Duration
}
func (d *Duration) UnmarshalText(data []byte) error {
var err error
d.Duration, err = time.ParseDuration(string(data))
return err
}

View File

@ -0,0 +1,46 @@
package types
import (
"testing"
"time"
)
func TestDuration_UnmarshalText(t *testing.T) {
type args struct {
data []byte
}
tests := []struct {
name string
args args
wantErr bool
want time.Duration
}{
{
"ok",
args{
data: []byte("10s"),
},
false,
time.Duration(10 * time.Second),
},
{
"error",
args{
data: []byte("10"),
},
true,
time.Duration(0),
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
d := &Duration{}
if err := d.UnmarshalText(tt.args.data); (err != nil) != tt.wantErr {
t.Errorf("UnmarshalText() error = %v, wantErr %v", err, tt.wantErr)
}
if d.Duration != tt.want {
t.Errorf("UnmarshalText() got = %v, want %v", d.Duration, tt.want)
}
})
}
}