blocks_test.go 1.17 KB
Newer Older
1
package blockservice
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
2 3 4

import (
	"bytes"
5 6
	"testing"

7
	ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go"
8
	blocks "github.com/jbenet/go-ipfs/blocks"
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
9 10 11 12 13
	u "github.com/jbenet/go-ipfs/util"
)

func TestBlocks(t *testing.T) {
	d := ds.NewMapDatastore()
14
	bs, err := NewBlockService(d, nil)
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
15 16 17 18 19
	if err != nil {
		t.Error("failed to construct block service", err)
		return
	}

20
	b, err := blocks.NewBlock([]byte("beep boop"))
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
21 22 23 24 25
	if err != nil {
		t.Error("failed to construct block", err)
		return
	}

Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
26
	h := u.Hash([]byte("beep boop"))
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
27 28 29 30 31 32 33 34
	if !bytes.Equal(b.Multihash, h) {
		t.Error("Block Multihash and data multihash not equal")
	}

	if b.Key() != u.Key(h) {
		t.Error("Block key and data multihash key not equal")
	}

Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
35
	k, err := bs.AddBlock(b)
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
36 37 38 39 40
	if err != nil {
		t.Error("failed to add block to BlockService", err)
		return
	}

Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
41 42 43 44
	if k != b.Key() {
		t.Error("returned key is not equal to block key", err)
	}

Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
45 46 47 48 49 50 51 52 53 54 55 56 57 58
	b2, err := bs.GetBlock(b.Key())
	if err != nil {
		t.Error("failed to retrieve block from BlockService", err)
		return
	}

	if b.Key() != b2.Key() {
		t.Error("Block keys not equal.")
	}

	if !bytes.Equal(b.Data, b2.Data) {
		t.Error("Block data is not equal.")
	}
}