Skip to content

Commit

Permalink
Merge pull request #3113 from ipfs/test/merkledag-cover
Browse files Browse the repository at this point in the history
improve test coverage on merkledag package
  • Loading branch information
whyrusleeping committed Aug 24, 2016
2 parents 8830aae + 6b7c2fe commit 3dc688a
Show file tree
Hide file tree
Showing 2 changed files with 103 additions and 1 deletion.
25 changes: 25 additions & 0 deletions merkledag/merkledag_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
imp "github.com/ipfs/go-ipfs/importer"
chunk "github.com/ipfs/go-ipfs/importer/chunk"
. "github.com/ipfs/go-ipfs/merkledag"
mdpb "github.com/ipfs/go-ipfs/merkledag/pb"
dstest "github.com/ipfs/go-ipfs/merkledag/test"
uio "github.com/ipfs/go-ipfs/unixfs/io"
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
Expand Down Expand Up @@ -354,3 +355,27 @@ func TestFetchFailure(t *testing.T) {
}
}
}

func TestUnmarshalFailure(t *testing.T) {
badData := []byte("hello world")

_, err := DecodeProtobuf(badData)
if err == nil {
t.Fatal("shouldnt succeed to parse this")
}

// now with a bad link
pbn := &mdpb.PBNode{Links: []*mdpb.PBLink{{Hash: []byte("not a multihash")}}}
badlink, err := pbn.Marshal()
if err != nil {
t.Fatal(err)
}

_, err = DecodeProtobuf(badlink)
if err == nil {
t.Fatal("should have failed to parse node with bad link")
}

n := &Node{}
n.Marshal()
}
79 changes: 78 additions & 1 deletion merkledag/node_test.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
package merkledag
package merkledag_test

import (
"testing"

. "github.com/ipfs/go-ipfs/merkledag"
mdtest "github.com/ipfs/go-ipfs/merkledag/test"

"gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
)

func TestRemoveLink(t *testing.T) {
Expand Down Expand Up @@ -52,3 +57,75 @@ func TestRemoveLink(t *testing.T) {
t.Fatal("link order wrong")
}
}

func TestFindLink(t *testing.T) {
ds := mdtest.Mock()
k, err := ds.Add(new(Node))
if err != nil {
t.Fatal(err)
}

nd := &Node{
Links: []*Link{
&Link{Name: "a", Hash: k.ToMultihash()},
&Link{Name: "c", Hash: k.ToMultihash()},
&Link{Name: "b", Hash: k.ToMultihash()},
},
}

_, err = ds.Add(nd)
if err != nil {
t.Fatal(err)
}

lnk, err := nd.GetNodeLink("b")
if err != nil {
t.Fatal(err)
}

if lnk.Name != "b" {
t.Fatal("got wrong link back")
}

_, err = nd.GetNodeLink("f")
if err != ErrLinkNotFound {
t.Fatal("shouldnt have found link")
}

_, err = nd.GetLinkedNode(context.Background(), ds, "b")
if err != nil {
t.Fatal(err)
}

outnd, err := nd.UpdateNodeLink("b", nd)
if err != nil {
t.Fatal(err)
}

olnk, err := outnd.GetNodeLink("b")
if err != nil {
t.Fatal(err)
}

if olnk.Hash.B58String() == k.B58String() {
t.Fatal("new link should have different hash")
}
}

func TestNodeCopy(t *testing.T) {
nd := &Node{
Links: []*Link{
&Link{Name: "a"},
&Link{Name: "c"},
&Link{Name: "b"},
},
}
nd.SetData([]byte("testing"))

ond := nd.Copy()
ond.SetData(nil)

if nd.Data() == nil {
t.Fatal("should be different objects")
}
}

0 comments on commit 3dc688a

Please sign in to comment.