github.com/renegr87/renegr87@v2.1.1+incompatible/core/ledger/kvledger/txmgmt/statedb/statecouchdb/version_field_encoding_test.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package statecouchdb
     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 TestEncodeDecode(t *testing.T) {
    19  	testdata := []*statedb.VersionedValue{
    20  		{
    21  			Version: version.NewHeight(1, 2),
    22  		},
    23  		{
    24  			Version: version.NewHeight(50, 50),
    25  		},
    26  		{
    27  			Version:  version.NewHeight(50, 50),
    28  			Metadata: []byte("sample-metadata"),
    29  		},
    30  	}
    31  
    32  	for i, testdatum := range testdata {
    33  		t.Run(fmt.Sprintf("testcase-newfmt-%d", i),
    34  			func(t *testing.T) { testEncodeDecode(t, testdatum) },
    35  		)
    36  	}
    37  }
    38  
    39  func testEncodeDecode(t *testing.T, v *statedb.VersionedValue) {
    40  	encodedVerField, err := encodeVersionAndMetadata(v.Version, v.Metadata)
    41  	assert.NoError(t, err)
    42  
    43  	ver, metadata, err := decodeVersionAndMetadata(encodedVerField)
    44  	assert.NoError(t, err)
    45  	assert.Equal(t, v.Version, ver)
    46  	assert.Equal(t, v.Metadata, metadata)
    47  }