github.com/okex/exchain@v1.8.0/libs/tendermint/version/version_test.go (about)

     1  package version
     2  
     3  import (
     4  	"math"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  	"github.com/tendermint/go-amino"
     9  )
    10  
    11  var consensusTestCases = []Consensus{
    12  	{},
    13  	{1234, 5678},
    14  	{math.MaxUint64, math.MaxUint64},
    15  }
    16  
    17  var cdc = amino.NewCodec()
    18  
    19  func TestConsensusAmino(t *testing.T) {
    20  	for _, cons := range consensusTestCases {
    21  		expectData, err := cdc.MarshalBinaryBare(cons)
    22  		require.NoError(t, err)
    23  
    24  		var expectValue Consensus
    25  		err = cdc.UnmarshalBinaryBare(expectData, &expectValue)
    26  		require.NoError(t, err)
    27  
    28  		var actualValue Consensus
    29  		err = actualValue.UnmarshalFromAmino(cdc, expectData)
    30  		require.NoError(t, err)
    31  
    32  		require.EqualValues(t, expectValue, actualValue)
    33  		require.EqualValues(t, len(expectData), cons.AminoSize())
    34  	}
    35  }
    36  
    37  func BenchmarkConsensusAminoUnmarshal(b *testing.B) {
    38  	var testData = make([][]byte, len(consensusTestCases))
    39  	for i, cons := range consensusTestCases {
    40  		data, err := cdc.MarshalBinaryBare(cons)
    41  		require.NoError(b, err)
    42  		testData[i] = data
    43  	}
    44  	b.ResetTimer()
    45  
    46  	b.Run("amino", func(b *testing.B) {
    47  		b.ReportAllocs()
    48  		for i := 0; i < b.N; i++ {
    49  			for _, data := range testData {
    50  				var value Consensus
    51  				err := cdc.UnmarshalBinaryBare(data, &value)
    52  				if err != nil {
    53  					b.Fatal(err)
    54  				}
    55  			}
    56  		}
    57  	})
    58  	b.Run("unmarshaller", func(b *testing.B) {
    59  		b.ReportAllocs()
    60  		for i := 0; i < b.N; i++ {
    61  			for _, data := range testData {
    62  				var value Consensus
    63  				err := value.UnmarshalFromAmino(cdc, data)
    64  				if err != nil {
    65  					b.Fatal(err)
    66  				}
    67  			}
    68  		}
    69  	})
    70  }