X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a95f899d7ac84f29b3d019aa410d265bb40833e5..5dd128f5a57e704e3b3ea5225130ca85bd3bb84c:/sdk/go/arvados/resource_list_test.go diff --git a/sdk/go/arvados/resource_list_test.go b/sdk/go/arvados/resource_list_test.go index b5e6e7da47..e4d89d62ad 100644 --- a/sdk/go/arvados/resource_list_test.go +++ b/sdk/go/arvados/resource_list_test.go @@ -1,21 +1,63 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: Apache-2.0 + package arvados import ( - "bytes" "encoding/json" - "testing" "time" + + check "gopkg.in/check.v1" ) -func TestMarshalFiltersWithNanoseconds(t *testing.T) { +var _ = check.Suite(&filterEncodingSuite{}) + +type filterEncodingSuite struct{} + +func (s *filterEncodingSuite) TestMarshalNanoseconds(c *check.C) { t0 := time.Now() t0str := t0.Format(time.RFC3339Nano) buf, err := json.Marshal([]Filter{ {Attr: "modified_at", Operator: "=", Operand: t0}}) - if err != nil { - t.Fatal(err) - } - if expect := []byte(`[["modified_at","=","` + t0str + `"]]`); 0 != bytes.Compare(buf, expect) { - t.Errorf("Encoded as %q, expected %q", buf, expect) - } + c.Assert(err, check.IsNil) + c.Check(string(buf), check.Equals, `[["modified_at","=","`+t0str+`"]]`) +} + +func (s *filterEncodingSuite) TestMarshalNil(c *check.C) { + buf, err := json.Marshal([]Filter{ + {Attr: "modified_at", Operator: "=", Operand: nil}}) + c.Assert(err, check.IsNil) + c.Check(string(buf), check.Equals, `[["modified_at","=",null]]`) +} + +func (s *filterEncodingSuite) TestUnmarshalNil(c *check.C) { + buf := []byte(`["modified_at","=",null]`) + var f Filter + err := f.UnmarshalJSON(buf) + c.Assert(err, check.IsNil) + c.Check(f, check.DeepEquals, Filter{Attr: "modified_at", Operator: "=", Operand: nil}) +} + +func (s *filterEncodingSuite) TestMarshalBoolean(c *check.C) { + buf, err := json.Marshal([]Filter{ + {Attr: "is_active", Operator: "=", Operand: true}}) + c.Assert(err, check.IsNil) + c.Check(string(buf), check.Equals, `[["is_active","=",true]]`) +} + +func (s *filterEncodingSuite) TestUnmarshalBoolean(c *check.C) { + buf := []byte(`["is_active","=",true]`) + var f Filter + err := f.UnmarshalJSON(buf) + c.Assert(err, check.IsNil) + c.Check(f, check.DeepEquals, Filter{Attr: "is_active", Operator: "=", Operand: true}) +} + +func (s *filterEncodingSuite) TestUnmarshalBooleanExpression(c *check.C) { + buf := []byte(`"(foo < bar)"`) + var f Filter + err := f.UnmarshalJSON(buf) + c.Assert(err, check.IsNil) + c.Check(f, check.DeepEquals, Filter{Attr: "(foo < bar)", Operator: "=", Operand: true}) }