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 }