github.com/elastos/Elastos.ELA.SideChain.ETH@v0.2.2/dpos/message_test.go (about)

     1  // Copyright (c) 2017-2019 The Elastos Foundation
     2  // Use of this source code is governed by an MIT
     3  // license that can be found in the LICENSE file.
     4  //
     5  
     6  package dpos
     7  
     8  import (
     9  	"bytes"
    10  	"testing"
    11  
    12  	"github.com/elastos/Elastos.ELA/common"
    13  	"github.com/elastos/Elastos.ELA/p2p/msg"
    14  
    15  	"github.com/stretchr/testify/assert"
    16  )
    17  
    18  func TestMessage_SerializeDeserialize(t *testing.T) {
    19  	ivHash, _ := common.Uint256FromHexString("8a6cb4b5ff1a4f8368c6513a536c663381e3fdeff738e9b437bd8fce3fb30b62")
    20  	ivMsg := msg.NewInv()
    21  	iv := &msg.InvVect{
    22  		Type: msg.InvTypeAddress,
    23  		Hash: *ivHash,
    24  	}
    25  	err := ivMsg.AddInvVect(iv)
    26  	assert.NoError(t, err)
    27  	ivMsgBuf := new(bytes.Buffer)
    28  	err = ivMsg.Serialize(ivMsgBuf)
    29  	assert.NoError(t, err)
    30  
    31  	elaMsg := &ElaMsg{
    32  		Type: Inv,
    33  		Msg:  ivMsgBuf.Bytes(),
    34  	}
    35  	elaMsgBuf := new(bytes.Buffer)
    36  	err = elaMsg.Serialize(elaMsgBuf)
    37  	assert.NoError(t, err)
    38  
    39  	var newElaMsg ElaMsg
    40  	err = newElaMsg.Deserialize(elaMsgBuf)
    41  	assert.NoError(t, err)
    42  	assert.Equal(t, Inv, newElaMsg.Type)
    43  	assert.Equal(t, ivMsgBuf.Bytes(), newElaMsg.Msg)
    44  }