1package plumbing
2
3import . "gopkg.in/check.v1"
4
5type ReferenceSuite struct{}
6
7var _ = Suite(&ReferenceSuite{})
8
9const (
10	ExampleReferenceName ReferenceName = "refs/heads/v4"
11)
12
13func (s *ReferenceSuite) TestReferenceTypeString(c *C) {
14	c.Assert(SymbolicReference.String(), Equals, "symbolic-reference")
15}
16
17func (s *ReferenceSuite) TestReferenceNameShort(c *C) {
18	c.Assert(ExampleReferenceName.Short(), Equals, "v4")
19}
20
21func (s *ReferenceSuite) TestReferenceNameWithSlash(c *C) {
22	r := ReferenceName("refs/remotes/origin/feature/AllowSlashes")
23	c.Assert(r.Short(), Equals, "origin/feature/AllowSlashes")
24}
25
26func (s *ReferenceSuite) TestReferenceNameNote(c *C) {
27	r := ReferenceName("refs/notes/foo")
28	c.Assert(r.Short(), Equals, "notes/foo")
29}
30
31func (s *ReferenceSuite) TestNewReferenceFromStrings(c *C) {
32	r := NewReferenceFromStrings("refs/heads/v4", "6ecf0ef2c2dffb796033e5a02219af86ec6584e5")
33	c.Assert(r.Type(), Equals, HashReference)
34	c.Assert(r.Name(), Equals, ExampleReferenceName)
35	c.Assert(r.Hash(), Equals, NewHash("6ecf0ef2c2dffb796033e5a02219af86ec6584e5"))
36
37	r = NewReferenceFromStrings("HEAD", "ref: refs/heads/v4")
38	c.Assert(r.Type(), Equals, SymbolicReference)
39	c.Assert(r.Name(), Equals, HEAD)
40	c.Assert(r.Target(), Equals, ExampleReferenceName)
41}
42
43func (s *ReferenceSuite) TestNewSymbolicReference(c *C) {
44	r := NewSymbolicReference(HEAD, ExampleReferenceName)
45	c.Assert(r.Type(), Equals, SymbolicReference)
46	c.Assert(r.Name(), Equals, HEAD)
47	c.Assert(r.Target(), Equals, ExampleReferenceName)
48}
49
50func (s *ReferenceSuite) TestNewHashReference(c *C) {
51	r := NewHashReference(ExampleReferenceName, NewHash("6ecf0ef2c2dffb796033e5a02219af86ec6584e5"))
52	c.Assert(r.Type(), Equals, HashReference)
53	c.Assert(r.Name(), Equals, ExampleReferenceName)
54	c.Assert(r.Hash(), Equals, NewHash("6ecf0ef2c2dffb796033e5a02219af86ec6584e5"))
55}
56
57func (s *ReferenceSuite) TestNewBranchReferenceName(c *C) {
58	r := NewBranchReferenceName("foo")
59	c.Assert(r.String(), Equals, "refs/heads/foo")
60}
61
62func (s *ReferenceSuite) TestNewNoteReferenceName(c *C) {
63	r := NewNoteReferenceName("foo")
64	c.Assert(r.String(), Equals, "refs/notes/foo")
65}
66
67func (s *ReferenceSuite) TestNewRemoteReferenceName(c *C) {
68	r := NewRemoteReferenceName("bar", "foo")
69	c.Assert(r.String(), Equals, "refs/remotes/bar/foo")
70}
71
72func (s *ReferenceSuite) TestNewRemoteHEADReferenceName(c *C) {
73	r := NewRemoteHEADReferenceName("foo")
74	c.Assert(r.String(), Equals, "refs/remotes/foo/HEAD")
75}
76
77func (s *ReferenceSuite) TestNewTagReferenceName(c *C) {
78	r := NewTagReferenceName("foo")
79	c.Assert(r.String(), Equals, "refs/tags/foo")
80}
81
82func (s *ReferenceSuite) TestIsBranch(c *C) {
83	r := ExampleReferenceName
84	c.Assert(r.IsBranch(), Equals, true)
85}
86
87func (s *ReferenceSuite) TestIsNote(c *C) {
88	r := ReferenceName("refs/notes/foo")
89	c.Assert(r.IsNote(), Equals, true)
90}
91
92func (s *ReferenceSuite) TestIsRemote(c *C) {
93	r := ReferenceName("refs/remotes/origin/master")
94	c.Assert(r.IsRemote(), Equals, true)
95}
96
97func (s *ReferenceSuite) TestIsTag(c *C) {
98	r := ReferenceName("refs/tags/v3.1.")
99	c.Assert(r.IsTag(), Equals, true)
100}
101