func (*tagSuite) TestParseTag(c *gc.C) { for i, test := range parseTagTests { c.Logf("test %d: %q expectKind %q", i, test.tag, test.expectKind) kind, id, err := names.ParseTag(test.tag, test.expectKind) if test.resultErr != "" { c.Assert(err, gc.ErrorMatches, test.resultErr) c.Assert(kind, gc.Equals, "") c.Assert(id, gc.Equals, "") // If the tag has a valid kind which matches the // expected kind, test that using an empty // expectKind does not change the error message. if tagKind, err := names.TagKind(test.tag); err == nil && tagKind == test.expectKind { kind, id, err := names.ParseTag(test.tag, "") c.Assert(err, gc.ErrorMatches, test.resultErr) c.Assert(kind, gc.Equals, "") c.Assert(id, gc.Equals, "") } } else { c.Assert(err, gc.IsNil) c.Assert(id, gc.Equals, test.resultId) if test.expectKind != "" { c.Assert(kind, gc.Equals, test.expectKind) } else { expectKind, err := names.TagKind(test.tag) c.Assert(err, gc.IsNil) c.Assert(kind, gc.Equals, expectKind) } // Check that it's reversible. if f := makeTag[kind]; f != nil { reversed := f(id) c.Assert(reversed, gc.Equals, test.tag) } // Check that it parses ok without an expectKind. kind1, id1, err1 := names.ParseTag(test.tag, "") c.Assert(err1, gc.IsNil) c.Assert(kind1, gc.Equals, test.expectKind) c.Assert(id1, gc.Equals, id) } } }
func (*tagSuite) TestTagKind(c *gc.C) { for i, test := range tagKindTests { c.Logf("test %d: %q -> %q", i, test.tag, test.kind) kind, err := names.TagKind(test.tag) if test.err == "" { c.Assert(test.kind, gc.Equals, kind) c.Assert(err, gc.IsNil) } else { c.Assert(kind, gc.Equals, "") c.Assert(err, gc.ErrorMatches, test.err) } } }