1package merkletrie_test 2 3import ( 4 "github.com/go-git/go-git/v5/utils/merkletrie" 5 "github.com/go-git/go-git/v5/utils/merkletrie/internal/fsnoder" 6 "github.com/go-git/go-git/v5/utils/merkletrie/noder" 7 8 . "gopkg.in/check.v1" 9) 10 11type ChangeSuite struct{} 12 13var _ = Suite(&ChangeSuite{}) 14 15func (s *ChangeSuite) TestActionString(c *C) { 16 action := merkletrie.Insert 17 c.Assert(action.String(), Equals, "Insert") 18 19 action = merkletrie.Delete 20 c.Assert(action.String(), Equals, "Delete") 21 22 action = merkletrie.Modify 23 c.Assert(action.String(), Equals, "Modify") 24} 25 26func (s *ChangeSuite) TestUnsupportedAction(c *C) { 27 a := merkletrie.Action(42) 28 c.Assert(a.String, PanicMatches, "unsupported action.*") 29} 30 31func (s ChangeSuite) TestNewInsert(c *C) { 32 tree, err := fsnoder.New("(a(b(z<>)))") 33 c.Assert(err, IsNil) 34 path := find(c, tree, "z") 35 change := merkletrie.NewInsert(path) 36 c.Assert(change.String(), Equals, "<Insert a/b/z>") 37 38 shortPath := noder.Path([]noder.Noder{path.Last()}) 39 change = merkletrie.NewInsert(shortPath) 40 c.Assert(change.String(), Equals, "<Insert z>") 41} 42 43func (s ChangeSuite) TestNewDelete(c *C) { 44 tree, err := fsnoder.New("(a(b(z<>)))") 45 c.Assert(err, IsNil) 46 path := find(c, tree, "z") 47 change := merkletrie.NewDelete(path) 48 c.Assert(change.String(), Equals, "<Delete a/b/z>") 49 50 shortPath := noder.Path([]noder.Noder{path.Last()}) 51 change = merkletrie.NewDelete(shortPath) 52 c.Assert(change.String(), Equals, "<Delete z>") 53} 54 55func (s ChangeSuite) TestNewModify(c *C) { 56 tree1, err := fsnoder.New("(a(b(z<>)))") 57 c.Assert(err, IsNil) 58 path1 := find(c, tree1, "z") 59 60 tree2, err := fsnoder.New("(a(b(z<1>)))") 61 c.Assert(err, IsNil) 62 path2 := find(c, tree2, "z") 63 64 change := merkletrie.NewModify(path1, path2) 65 c.Assert(change.String(), Equals, "<Modify a/b/z>") 66 67 shortPath1 := noder.Path([]noder.Noder{path1.Last()}) 68 shortPath2 := noder.Path([]noder.Noder{path2.Last()}) 69 change = merkletrie.NewModify(shortPath1, shortPath2) 70 c.Assert(change.String(), Equals, "<Modify z>") 71} 72 73func (s ChangeSuite) TestMalformedChange(c *C) { 74 change := merkletrie.Change{} 75 c.Assert(change.String, PanicMatches, "malformed change.*") 76} 77