github.com/vipernet-xyz/tm@v0.34.24/abci/types/messages_test.go (about)

     1  package types
     2  
     3  import (
     4  	"bytes"
     5  	"encoding/json"
     6  	"strings"
     7  	"testing"
     8  
     9  	"github.com/gogo/protobuf/proto"
    10  	"github.com/stretchr/testify/assert"
    11  
    12  	tmproto "github.com/vipernet-xyz/tm/proto/tendermint/types"
    13  )
    14  
    15  func TestMarshalJSON(t *testing.T) {
    16  	b, err := json.Marshal(&ResponseDeliverTx{})
    17  	assert.Nil(t, err)
    18  	// include empty fields.
    19  	assert.True(t, strings.Contains(string(b), "code"))
    20  	r1 := ResponseCheckTx{
    21  		Code:      1,
    22  		Data:      []byte("hello"),
    23  		GasWanted: 43,
    24  		Events: []Event{
    25  			{
    26  				Type: "testEvent",
    27  				Attributes: []EventAttribute{
    28  					{Key: []byte("pho"), Value: []byte("bo")},
    29  				},
    30  			},
    31  		},
    32  	}
    33  	b, err = json.Marshal(&r1)
    34  	assert.Nil(t, err)
    35  
    36  	var r2 ResponseCheckTx
    37  	err = json.Unmarshal(b, &r2)
    38  	assert.Nil(t, err)
    39  	assert.Equal(t, r1, r2)
    40  }
    41  
    42  func TestWriteReadMessageSimple(t *testing.T) {
    43  	cases := []proto.Message{
    44  		&RequestEcho{
    45  			Message: "Hello",
    46  		},
    47  	}
    48  
    49  	for _, c := range cases {
    50  		buf := new(bytes.Buffer)
    51  		err := WriteMessage(c, buf)
    52  		assert.Nil(t, err)
    53  
    54  		msg := new(RequestEcho)
    55  		err = ReadMessage(buf, msg)
    56  		assert.Nil(t, err)
    57  
    58  		assert.True(t, proto.Equal(c, msg))
    59  	}
    60  }
    61  
    62  func TestWriteReadMessage(t *testing.T) {
    63  	cases := []proto.Message{
    64  		&tmproto.Header{
    65  			Height:  4,
    66  			ChainID: "test",
    67  		},
    68  		// TODO: add the rest
    69  	}
    70  
    71  	for _, c := range cases {
    72  		buf := new(bytes.Buffer)
    73  		err := WriteMessage(c, buf)
    74  		assert.Nil(t, err)
    75  
    76  		msg := new(tmproto.Header)
    77  		err = ReadMessage(buf, msg)
    78  		assert.Nil(t, err)
    79  
    80  		assert.True(t, proto.Equal(c, msg))
    81  	}
    82  }
    83  
    84  func TestWriteReadMessage2(t *testing.T) {
    85  	phrase := "hello-world"
    86  	cases := []proto.Message{
    87  		&ResponseCheckTx{
    88  			Data:      []byte(phrase),
    89  			Log:       phrase,
    90  			GasWanted: 10,
    91  			Events: []Event{
    92  				{
    93  					Type: "testEvent",
    94  					Attributes: []EventAttribute{
    95  						{Key: []byte("abc"), Value: []byte("def")},
    96  					},
    97  				},
    98  			},
    99  		},
   100  		// TODO: add the rest
   101  	}
   102  
   103  	for _, c := range cases {
   104  		buf := new(bytes.Buffer)
   105  		err := WriteMessage(c, buf)
   106  		assert.Nil(t, err)
   107  
   108  		msg := new(ResponseCheckTx)
   109  		err = ReadMessage(buf, msg)
   110  		assert.Nil(t, err)
   111  
   112  		assert.True(t, proto.Equal(c, msg))
   113  	}
   114  }