1package plumbing
2
3import . "gopkg.in/check.v1"
4
5type ObjectSuite struct{}
6
7var _ = Suite(&ObjectSuite{})
8
9func (s *ObjectSuite) TestObjectTypeString(c *C) {
10	c.Assert(CommitObject.String(), Equals, "commit")
11	c.Assert(TreeObject.String(), Equals, "tree")
12	c.Assert(BlobObject.String(), Equals, "blob")
13	c.Assert(TagObject.String(), Equals, "tag")
14	c.Assert(REFDeltaObject.String(), Equals, "ref-delta")
15	c.Assert(OFSDeltaObject.String(), Equals, "ofs-delta")
16	c.Assert(AnyObject.String(), Equals, "any")
17	c.Assert(ObjectType(42).String(), Equals, "unknown")
18}
19
20func (s *ObjectSuite) TestObjectTypeBytes(c *C) {
21	c.Assert(CommitObject.Bytes(), DeepEquals, []byte("commit"))
22}
23
24func (s *ObjectSuite) TestObjectTypeValid(c *C) {
25	c.Assert(CommitObject.Valid(), Equals, true)
26	c.Assert(ObjectType(42).Valid(), Equals, false)
27}
28
29func (s *ObjectSuite) TestParseObjectType(c *C) {
30	for s, e := range map[string]ObjectType{
31		"commit":    CommitObject,
32		"tree":      TreeObject,
33		"blob":      BlobObject,
34		"tag":       TagObject,
35		"ref-delta": REFDeltaObject,
36		"ofs-delta": OFSDeltaObject,
37	} {
38		t, err := ParseObjectType(s)
39		c.Assert(err, IsNil)
40		c.Assert(e, Equals, t)
41	}
42
43	t, err := ParseObjectType("foo")
44	c.Assert(err, Equals, ErrInvalidType)
45	c.Assert(t, Equals, InvalidObject)
46}
47