Store package ref list in separate entity and load it only on demand.

This commit is contained in:
Andrey Smirnov
2013-12-20 16:38:50 +04:00
parent 7940f5e698
commit e4defeb2fd
5 changed files with 169 additions and 11 deletions
+30 -5
View File
@@ -6,8 +6,8 @@ import (
)
type PackageListSuite struct {
list *PackageList
p1, p2, p3, p4 *Package
list *PackageList
p1, p2, p3, p4, p5, p6 *Package
}
var _ = Suite(&PackageListSuite{})
@@ -31,6 +31,12 @@ func (s *PackageListSuite) SetUpTest(c *C) {
para = paraGen()
para["Size"] = "42"
s.p4 = NewPackageFromControlFile(para)
para = paraGen()
para["Package"] = "lonely-strangers"
s.p5 = NewPackageFromControlFile(para)
para = paraGen()
para["Version"] = "99.1"
s.p6 = NewPackageFromControlFile(para)
}
func (s *PackageListSuite) TestAddLen(c *C) {
@@ -59,9 +65,28 @@ func (s *PackageListSuite) TestForeach(c *C) {
func (s *PackageListSuite) TestNewPackageRefList(c *C) {
s.list.Add(s.p1)
s.list.Add(s.p3)
s.list.Add(s.p5)
s.list.Add(s.p6)
reflist := NewPackageRefListFromPackageList(s.list)
c.Assert(reflist.Len(), Equals, 2)
c.Assert(reflist.Refs[0], DeepEquals, []byte(s.p1.Key()))
c.Assert(reflist.Refs[1], DeepEquals, []byte(s.p3.Key()))
c.Assert(reflist.Len(), Equals, 4)
c.Check(reflist.Refs[0], DeepEquals, []byte(s.p1.Key()))
c.Check(reflist.Refs[1], DeepEquals, []byte(s.p6.Key()))
c.Check(reflist.Refs[2], DeepEquals, []byte(s.p5.Key()))
c.Check(reflist.Refs[3], DeepEquals, []byte(s.p3.Key()))
}
func (s *PackageListSuite) TestPackageRefListEncodeDecode(c *C) {
s.list.Add(s.p1)
s.list.Add(s.p3)
s.list.Add(s.p5)
s.list.Add(s.p6)
reflist := NewPackageRefListFromPackageList(s.list)
reflist2 := &PackageRefList{}
err := reflist2.Decode(reflist.Encode())
c.Assert(err, IsNil)
c.Check(reflist2.Len(), Equals, reflist.Len())
c.Check(reflist2.Refs, DeepEquals, reflist.Refs)
}