Fix more ineffassign warnings.
[arvados.git] / sdk / go / arvados / duration_test.go
index ee787a6a76a2807ebfce6211db28987250bbdd89..86fe218c3361a1b986e0cd38ab09a39eac1ec9bc 100644 (file)
@@ -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)
+}