diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2017-02-21 16:08:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-21 16:08:57 +0100 |
commit | e26a605c93d8085dfff8e440838fd3c43b63cff6 (patch) | |
tree | 7022e74d0fa7a3ab542eaa2df851e7f625e8f1ff /plumbing/cache/object_test.go | |
parent | 73855d0a5f617bcda1f33e730f3bc7cf8afbef6c (diff) | |
parent | 6e15f9cb0dbac68992eb242282e725784fe72b32 (diff) | |
download | go-git-e26a605c93d8085dfff8e440838fd3c43b63cff6.tar.gz |
Merge pull request #278 from ajnavarro/improvement/move-cache-to-plumbing
cache: move package to plumbing
Diffstat (limited to 'plumbing/cache/object_test.go')
-rw-r--r-- | plumbing/cache/object_test.go | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/plumbing/cache/object_test.go b/plumbing/cache/object_test.go new file mode 100644 index 0000000..7d00970 --- /dev/null +++ b/plumbing/cache/object_test.go @@ -0,0 +1,85 @@ +package cache + +import ( + "io" + "testing" + + "srcd.works/go-git.v4/plumbing" + + . "gopkg.in/check.v1" +) + +func Test(t *testing.T) { TestingT(t) } + +type ObjectSuite struct { + c *ObjectFIFO + aObject plumbing.EncodedObject + bObject plumbing.EncodedObject + cObject plumbing.EncodedObject + dObject plumbing.EncodedObject +} + +var _ = Suite(&ObjectSuite{}) + +func (s *ObjectSuite) SetUpTest(c *C) { + s.aObject = newObject("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 1*Byte) + s.bObject = newObject("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", 3*Byte) + s.cObject = newObject("cccccccccccccccccccccccccccccccccccccccc", 1*Byte) + s.dObject = newObject("dddddddddddddddddddddddddddddddddddddddd", 1*Byte) + + s.c = NewObjectFIFO(2 * Byte) +} + +func (s *ObjectSuite) TestAdd_SameObject(c *C) { + s.c.Add(s.aObject) + c.Assert(s.c.actualSize, Equals, int64(1*Byte)) + s.c.Add(s.aObject) + c.Assert(s.c.actualSize, Equals, int64(1*Byte)) +} + +func (s *ObjectSuite) TestAdd_BigObject(c *C) { + s.c.Add(s.bObject) + c.Assert(s.c.actualSize, Equals, int64(0)) + c.Assert(len(s.c.objects), Equals, 0) +} + +func (s *ObjectSuite) TestAdd_CacheOverflow(c *C) { + s.c.Add(s.aObject) + c.Assert(s.c.actualSize, Equals, int64(1*Byte)) + s.c.Add(s.cObject) + c.Assert(len(s.c.objects), Equals, 2) + s.c.Add(s.dObject) + c.Assert(len(s.c.objects), Equals, 2) + + c.Assert(s.c.Get(s.aObject.Hash()), IsNil) + c.Assert(s.c.Get(s.cObject.Hash()), NotNil) + c.Assert(s.c.Get(s.dObject.Hash()), NotNil) +} + +func (s *ObjectSuite) TestClear(c *C) { + s.c.Add(s.aObject) + c.Assert(s.c.actualSize, Equals, int64(1*Byte)) + s.c.Clear() + c.Assert(s.c.actualSize, Equals, int64(0)) + c.Assert(s.c.Get(s.aObject.Hash()), IsNil) +} + +type dummyObject struct { + hash plumbing.Hash + size int64 +} + +func newObject(hash string, size int64) plumbing.EncodedObject { + return &dummyObject{ + hash: plumbing.NewHash(hash), + size: size, + } +} + +func (d *dummyObject) Hash() plumbing.Hash { return d.hash } +func (*dummyObject) Type() plumbing.ObjectType { return plumbing.InvalidObject } +func (*dummyObject) SetType(plumbing.ObjectType) {} +func (d *dummyObject) Size() int64 { return d.size } +func (*dummyObject) SetSize(s int64) {} +func (*dummyObject) Reader() (io.ReadCloser, error) { return nil, nil } +func (*dummyObject) Writer() (io.WriteCloser, error) { return nil, nil } |