github.com/ewagmig/fabric@v2.1.1+incompatible/core/ledger/kvledger/txmgmt/statedb/stateleveldb/value_encoding_test.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package stateleveldb
     8  
     9  import (
    10  	"fmt"
    11  	"testing"
    12  
    13  	"github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/statedb"
    14  	"github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/version"
    15  	"github.com/stretchr/testify/assert"
    16  )
    17  
    18  func TestEncodeDecodeVersionedValues(t *testing.T) {
    19  	testdata := []*statedb.VersionedValue{
    20  		{
    21  			Value:   []byte("value0"),
    22  			Version: version.NewHeight(0, 0),
    23  		},
    24  		{
    25  			Value:   []byte("value1"),
    26  			Version: version.NewHeight(1, 2),
    27  		},
    28  
    29  		{
    30  			Value:   []byte{},
    31  			Version: version.NewHeight(50, 50),
    32  		},
    33  		{
    34  			Value:    []byte{},
    35  			Version:  version.NewHeight(50, 50),
    36  			Metadata: []byte("sample-metadata"),
    37  		},
    38  	}
    39  
    40  	for i, testdatum := range testdata {
    41  		t.Run(fmt.Sprintf("testcase-newfmt-%d", i),
    42  			func(t *testing.T) { testEncodeDecodeVersionedValues(t, testdatum) },
    43  		)
    44  	}
    45  }
    46  
    47  func testEncodeDecodeVersionedValues(t *testing.T, v *statedb.VersionedValue) {
    48  	encodedVal, err := encodeValue(v)
    49  	assert.NoError(t, err)
    50  	decodedVal, err := decodeValue(encodedVal)
    51  	assert.NoError(t, err)
    52  	assert.Equal(t, v, decodedVal)
    53  }