github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/types/result_test.go (about)

     1  package types
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  
     9  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec"
    10  )
    11  
    12  func TestParseABCILog(t *testing.T) {
    13  	logs := `[{"log":"","msg_index":1,"success":true}]`
    14  
    15  	res, err := ParseABCILogs(logs)
    16  	require.NoError(t, err)
    17  	require.Len(t, res, 1)
    18  	require.Equal(t, res[0].Log, "")
    19  	require.Equal(t, res[0].MsgIndex, uint16(1))
    20  }
    21  
    22  func TestABCIMessageLog(t *testing.T) {
    23  	events := Events{NewEvent("transfer", NewAttribute("sender", "foo"))}
    24  	msgLog := NewABCIMessageLog(0, "", events)
    25  
    26  	msgLogs := ABCIMessageLogs{msgLog}
    27  	bz, err := codec.Cdc.MarshalJSON(msgLogs)
    28  	require.NoError(t, err)
    29  	require.Equal(t, string(bz), msgLogs.String())
    30  }
    31  
    32  func TestABCIMessageLogJson(t *testing.T) {
    33  	events := Events{NewEvent("transfer", NewAttribute("sender", "foo"))}
    34  	msgLog := NewABCIMessageLog(0, "", events)
    35  
    36  	tests := []ABCIMessageLogs{
    37  		nil,
    38  		{},
    39  		{msgLog},
    40  		{
    41  			msgLog,
    42  			NewABCIMessageLog(1000, "log", nil),
    43  			NewABCIMessageLog(0, "log", Events{}),
    44  			NewABCIMessageLog(1000, "",
    45  				Events{
    46  					Event{},
    47  					NewEvent("", NewAttribute("", "")),
    48  					NewEvent(""),
    49  					NewEvent("type", NewAttribute("key", "value"), NewAttribute("", "")),
    50  				}),
    51  		},
    52  	}
    53  
    54  	for i, msgLogs := range tests {
    55  		bz, err := codec.Cdc.MarshalJSON(msgLogs)
    56  		require.NoError(t, err)
    57  
    58  		nbz, err := msgLogs.MarshalToJson()
    59  		require.NoError(t, err)
    60  		require.EqualValues(t, bz, nbz)
    61  
    62  		t.Log(fmt.Sprintf("%d passed", i))
    63  	}
    64  }
    65  
    66  func BenchmarkABCIMessageLogJson(b *testing.B) {
    67  	events := Events{NewEvent("transfer", NewAttribute("sender", "foo")), NewEvent("type", NewAttribute("key", "value"), NewAttribute("", ""))}
    68  	msgLogs := ABCIMessageLogs{NewABCIMessageLog(1000, "test log", events)}
    69  	b.ResetTimer()
    70  
    71  	b.Run("amino", func(b *testing.B) {
    72  		b.ReportAllocs()
    73  		for i := 0; i < b.N; i++ {
    74  			_, _ = codec.Cdc.MarshalJSON(msgLogs)
    75  		}
    76  	})
    77  
    78  	b.Run("marshaller", func(b *testing.B) {
    79  		b.ReportAllocs()
    80  		for i := 0; i < b.N; i++ {
    81  			_, _ = msgLogs.MarshalToJson()
    82  		}
    83  	})
    84  }