X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/fdadf2969c54edc7314ca50a629f3912998087b4..9833a2b9be1a722bd9aad08baf48ca072bde7ca7:/sdk/go/arvados/duration_test.go diff --git a/sdk/go/arvados/duration_test.go b/sdk/go/arvados/duration_test.go index ee787a6a76..86fe218c33 100644 --- a/sdk/go/arvados/duration_test.go +++ b/sdk/go/arvados/duration_test.go @@ -23,6 +23,7 @@ func (s *DurationSuite) TestMarshalJSON(c *check.C) { c.Check(err, check.IsNil) c.Check(d.D, check.Equals, Duration(time.Second+234*time.Millisecond)) buf, err := json.Marshal(d) + c.Check(err, check.IsNil) c.Check(string(buf), check.Equals, `{"D":"1.234s"}`) for _, trial := range []struct { @@ -43,3 +44,20 @@ func (s *DurationSuite) TestMarshalJSON(c *check.C) { c.Check(string(buf), check.Equals, `"`+trial.out+`"`) } } + +func (s *DurationSuite) TestUnmarshalJSON(c *check.C) { + var d struct { + D Duration + } + err := json.Unmarshal([]byte(`{"D":1.234}`), &d) + c.Check(err, check.ErrorMatches, `missing unit in duration 1.234`) + err = json.Unmarshal([]byte(`{"D":"1.234"}`), &d) + c.Check(err, check.ErrorMatches, `.*missing unit in duration 1.234`) + err = json.Unmarshal([]byte(`{"D":"1"}`), &d) + c.Check(err, check.ErrorMatches, `.*missing unit in duration 1`) + err = json.Unmarshal([]byte(`{"D":"foobar"}`), &d) + c.Check(err, check.ErrorMatches, `.*invalid duration foobar`) + err = json.Unmarshal([]byte(`{"D":"60s"}`), &d) + c.Check(err, check.IsNil) + c.Check(d.D.Duration(), check.Equals, time.Minute) +}