From 6b7c2fe2a987ef834dcea441504512fe2f16d577 Mon Sep 17 00:00:00 2001 From: Jeromy Date: Tue, 23 Aug 2016 12:30:10 -0700 Subject: [PATCH] improve test coverage on merkledag package License: MIT Signed-off-by: Jeromy --- merkledag/merkledag_test.go | 25 ++++++++++++ merkledag/node_test.go | 79 ++++++++++++++++++++++++++++++++++++- 2 files changed, 103 insertions(+), 1 deletion(-) diff --git a/merkledag/merkledag_test.go b/merkledag/merkledag_test.go index 05ba260f10a..38545ac126f 100644 --- a/merkledag/merkledag_test.go +++ b/merkledag/merkledag_test.go @@ -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" @@ -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() +} diff --git a/merkledag/node_test.go b/merkledag/node_test.go index 75aa4c98866..d248ad35965 100644 --- a/merkledag/node_test.go +++ b/merkledag/node_test.go @@ -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) { @@ -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") + } +}