package offline import ( "context" "testing" u "gx/ipfs/QmNiJuT8Ja3hMVpBHXv3Q6dwmperaQ6JjLtpMQgMCD7xvx/go-ipfs-util" ds "gx/ipfs/QmXRKBQA4wXP7xWbFiZsR1GP4HV6wMDQ1aWFxZZ4uBcPX9/go-datastore" ds_sync "gx/ipfs/QmXRKBQA4wXP7xWbFiZsR1GP4HV6wMDQ1aWFxZZ4uBcPX9/go-datastore/sync" blockstore "gx/ipfs/QmaG4DZ4JaqEfvPWt5nPPgoTzhc1tr1T3f4Nu9Jpdm8ymY/go-ipfs-blockstore" cid "gx/ipfs/QmcZfnkapfECQGcLZaf9B79NRg7cRa9EnZh4LSbkCzwNvY/go-cid" blocks "gx/ipfs/Qmej7nf81hi2x2tvjRBF3mcp74sQyuDH4VMYDGd1YtXjb2/go-block-format" blocksutil "gx/ipfs/Qmf951DP11mCoctpyF3ZppPZdo2oAxuNi2vnkVDgHJ8Fqk/go-ipfs-blocksutil" ) func TestBlockReturnsErr(t *testing.T) { off := Exchange(bstore()) c := cid.NewCidV0(u.Hash([]byte("foo"))) _, err := off.GetBlock(context.Background(), c) if err != nil { return // as desired } t.Fail() } func TestHasBlockReturnsNil(t *testing.T) { store := bstore() ex := Exchange(store) block := blocks.NewBlock([]byte("data")) err := ex.HasBlock(block) if err != nil { t.Fail() } if _, err := store.Get(block.Cid()); err != nil { t.Fatal(err) } } func TestGetBlocks(t *testing.T) { store := bstore() ex := Exchange(store) g := blocksutil.NewBlockGenerator() expected := g.Blocks(2) for _, b := range expected { if err := ex.HasBlock(b); err != nil { t.Fail() } } request := func() []*cid.Cid { var ks []*cid.Cid for _, b := range expected { ks = append(ks, b.Cid()) } return ks }() received, err := ex.GetBlocks(context.Background(), request) if err != nil { t.Fatal(err) } var count int for range received { count++ } if len(expected) != count { t.Fail() } } func bstore() blockstore.Blockstore { return blockstore.NewBlockstore(ds_sync.MutexWrap(ds.NewMapDatastore())) }