github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/exchange/offline/offline_test.go (about) 1 package offline 2 3 import ( 4 "testing" 5 6 ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore" 7 ds_sync "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore/sync" 8 context "github.com/ipfs/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context" 9 blocks "github.com/ipfs/go-ipfs/blocks" 10 "github.com/ipfs/go-ipfs/blocks/blockstore" 11 "github.com/ipfs/go-ipfs/blocks/blocksutil" 12 key "github.com/ipfs/go-ipfs/blocks/key" 13 ) 14 15 func TestBlockReturnsErr(t *testing.T) { 16 off := Exchange(bstore()) 17 _, err := off.GetBlock(context.Background(), key.Key("foo")) 18 if err != nil { 19 return // as desired 20 } 21 t.Fail() 22 } 23 24 func TestHasBlockReturnsNil(t *testing.T) { 25 store := bstore() 26 ex := Exchange(store) 27 block := blocks.NewBlock([]byte("data")) 28 29 err := ex.HasBlock(context.Background(), block) 30 if err != nil { 31 t.Fail() 32 } 33 34 if _, err := store.Get(block.Key()); err != nil { 35 t.Fatal(err) 36 } 37 } 38 39 func TestGetBlocks(t *testing.T) { 40 store := bstore() 41 ex := Exchange(store) 42 g := blocksutil.NewBlockGenerator() 43 44 expected := g.Blocks(2) 45 46 for _, b := range expected { 47 if err := ex.HasBlock(context.Background(), b); err != nil { 48 t.Fail() 49 } 50 } 51 52 request := func() []key.Key { 53 var ks []key.Key 54 55 for _, b := range expected { 56 ks = append(ks, b.Key()) 57 } 58 return ks 59 }() 60 61 received, err := ex.GetBlocks(context.Background(), request) 62 if err != nil { 63 t.Fatal(err) 64 } 65 66 var count int 67 for _ = range received { 68 count++ 69 } 70 if len(expected) != count { 71 t.Fail() 72 } 73 } 74 75 func bstore() blockstore.Blockstore { 76 return blockstore.NewBlockstore(ds_sync.MutexWrap(ds.NewMapDatastore())) 77 }