From 1b4817eaca49c51c37b8301de56f90710d363cb7 Mon Sep 17 00:00:00 2001 From: Jeromy <jeromyj@gmail.com> Date: Wed, 18 Mar 2015 16:48:06 -0700 Subject: [PATCH] test for pinning semantics --- pin_test.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/pin_test.go b/pin_test.go index c8d18f0..12db39b 100644 --- a/pin_test.go +++ b/pin_test.go @@ -152,3 +152,41 @@ func TestPinnerBasic(t *testing.T) { t.Fatal("could not find recursively pinned node") } } + +func TestDuplicateSemantics(t *testing.T) { + dstore := dssync.MutexWrap(ds.NewMapDatastore()) + bstore := blockstore.NewBlockstore(dstore) + bserv, err := bs.New(bstore, offline.Exchange(bstore)) + if err != nil { + t.Fatal(err) + } + + dserv := mdag.NewDAGService(bserv) + + // TODO does pinner need to share datastore with blockservice? + p := NewPinner(dstore, dserv) + + a, _ := randNode() + _, err = dserv.Add(a) + if err != nil { + t.Fatal(err) + } + + // pin is recursively + err = p.Pin(a, true) + if err != nil { + t.Fatal(err) + } + + // pinning directly should fail + err = p.Pin(a, false) + if err == nil { + t.Fatal("expected direct pin to fail") + } + + // pinning recursively again should succeed + err = p.Pin(a, true) + if err != nil { + t.Fatal(err) + } +} -- GitLab