7 "github.com/davecgh/go-spew/spew"
9 "github.com/vapor/protocol/bc"
10 "github.com/vapor/protocol/bc/types"
13 var testBlock = &types.Block{
14 BlockHeader: types.BlockHeader{
17 Timestamp: 1528945000000,
18 BlockCommitment: types.BlockCommitment{
19 TransactionsMerkleRoot: bc.Hash{V0: uint64(0x11)},
20 TransactionStatusHash: bc.Hash{V0: uint64(0x55)},
25 func TestBlockMessage(t *testing.T) {
26 blockMsg, err := NewBlockMessage(testBlock)
28 t.Fatalf("create new block msg err:%s", err)
31 gotBlock, err := blockMsg.GetBlock()
33 t.Fatalf("got block err:%s", err)
36 if !reflect.DeepEqual(gotBlock.BlockHeader, testBlock.BlockHeader) {
37 t.Errorf("block msg test err: got %s\nwant %s", spew.Sdump(gotBlock.BlockHeader), spew.Sdump(testBlock.BlockHeader))
40 blockMsg.RawBlock[1] = blockMsg.RawBlock[1] + 0x1
41 _, err = blockMsg.GetBlock()
43 t.Fatalf("get mine block err")
47 var testHeaders = []*types.BlockHeader{
51 Timestamp: 1528945000000,
52 BlockCommitment: types.BlockCommitment{
53 TransactionsMerkleRoot: bc.Hash{V0: uint64(0x11)},
54 TransactionStatusHash: bc.Hash{V0: uint64(0x55)},
60 Timestamp: 1528945000000,
61 BlockCommitment: types.BlockCommitment{
62 TransactionsMerkleRoot: bc.Hash{V0: uint64(0x11)},
63 TransactionStatusHash: bc.Hash{V0: uint64(0x55)},
69 Timestamp: 1528945000000,
70 BlockCommitment: types.BlockCommitment{
71 TransactionsMerkleRoot: bc.Hash{V0: uint64(0x11)},
72 TransactionStatusHash: bc.Hash{V0: uint64(0x55)},
77 func TestHeadersMessage(t *testing.T) {
78 headersMsg, err := NewHeadersMessage(testHeaders)
80 t.Fatalf("create headers msg err:%s", err)
83 gotHeaders, err := headersMsg.GetHeaders()
85 t.Fatalf("got headers err:%s", err)
88 if !reflect.DeepEqual(gotHeaders, testHeaders) {
89 t.Errorf("headers msg test err: got %s\nwant %s", spew.Sdump(gotHeaders), spew.Sdump(testHeaders))
93 func TestGetBlockMessage(t *testing.T) {
94 getBlockMsg := GetBlockMessage{RawHash: [32]byte{0x01}}
95 gotHash := getBlockMsg.GetHash()
97 if !reflect.DeepEqual(gotHash.Byte32(), getBlockMsg.RawHash) {
98 t.Errorf("get block msg test err: got %s\nwant %s", spew.Sdump(gotHash.Byte32()), spew.Sdump(getBlockMsg.RawHash))
102 type testGetHeadersMessage struct {
103 blockLocator []*bc.Hash
107 func TestGetHeadersMessage(t *testing.T) {
108 testMsg := testGetHeadersMessage{
109 blockLocator: []*bc.Hash{{V0: 0x01}, {V0: 0x02}, {V0: 0x03}},
110 stopHash: &bc.Hash{V0: 0xaa, V2: 0x55},
112 getHeadersMsg := NewGetHeadersMessage(testMsg.blockLocator, testMsg.stopHash)
113 gotBlockLocator := getHeadersMsg.GetBlockLocator()
114 gotStopHash := getHeadersMsg.GetStopHash()
116 if !reflect.DeepEqual(testMsg.blockLocator, gotBlockLocator) {
117 t.Errorf("get headers msg test err: got %s\nwant %s", spew.Sdump(gotBlockLocator), spew.Sdump(testMsg.blockLocator))
120 if !reflect.DeepEqual(testMsg.stopHash, gotStopHash) {
121 t.Errorf("get headers msg test err: got %s\nwant %s", spew.Sdump(gotStopHash), spew.Sdump(testMsg.stopHash))
125 var testBlocks = []*types.Block{
127 BlockHeader: types.BlockHeader{
130 Timestamp: 1528945000000,
131 BlockCommitment: types.BlockCommitment{
132 TransactionsMerkleRoot: bc.Hash{V0: uint64(0x11)},
133 TransactionStatusHash: bc.Hash{V0: uint64(0x55)},
138 BlockHeader: types.BlockHeader{
141 Timestamp: 1528945000000,
142 BlockCommitment: types.BlockCommitment{
143 TransactionsMerkleRoot: bc.Hash{V0: uint64(0x11)},
144 TransactionStatusHash: bc.Hash{V0: uint64(0x55)},
150 func TestBlocksMessage(t *testing.T) {
151 blocksMsg, err := NewBlocksMessage(testBlocks)
153 t.Fatalf("create blocks msg err:%s", err)
155 gotBlocks, err := blocksMsg.GetBlocks()
157 t.Fatalf("get blocks err:%s", err)
160 for _, gotBlock := range gotBlocks {
161 if !reflect.DeepEqual(gotBlock.BlockHeader, testBlock.BlockHeader) {
162 t.Errorf("block msg test err: got %s\nwant %s", spew.Sdump(gotBlock.BlockHeader), spew.Sdump(testBlock.BlockHeader))
167 func TestStatusMessage(t *testing.T) {
168 statusResponseMsg := NewStatusMessage(&testBlock.BlockHeader)
169 gotHash := statusResponseMsg.GetHash()
170 if !reflect.DeepEqual(*gotHash, testBlock.Hash()) {
171 t.Errorf("status response msg test err: got %s\nwant %s", spew.Sdump(*gotHash), spew.Sdump(testBlock.Hash()))