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  }