github.com/ava-labs/avalanchego@v1.11.11/vms/components/avax/asset_test.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package avax
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/require"
    10  
    11  	"github.com/ava-labs/avalanchego/codec"
    12  	"github.com/ava-labs/avalanchego/codec/linearcodec"
    13  	"github.com/ava-labs/avalanchego/ids"
    14  )
    15  
    16  func TestAssetVerifyNil(t *testing.T) {
    17  	id := (*Asset)(nil)
    18  	err := id.Verify()
    19  	require.ErrorIs(t, err, errNilAssetID)
    20  }
    21  
    22  func TestAssetVerifyEmpty(t *testing.T) {
    23  	id := Asset{}
    24  	err := id.Verify()
    25  	require.ErrorIs(t, err, errEmptyAssetID)
    26  }
    27  
    28  func TestAssetID(t *testing.T) {
    29  	require := require.New(t)
    30  
    31  	c := linearcodec.NewDefault()
    32  	manager := codec.NewDefaultManager()
    33  	require.NoError(manager.RegisterCodec(codecVersion, c))
    34  
    35  	id := Asset{
    36  		ID: ids.ID{
    37  			0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
    38  			0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
    39  			0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
    40  			0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
    41  		},
    42  	}
    43  
    44  	require.NoError(id.Verify())
    45  
    46  	bytes, err := manager.Marshal(codecVersion, &id)
    47  	require.NoError(err)
    48  
    49  	newID := Asset{}
    50  	_, err = manager.Unmarshal(bytes, &newID)
    51  	require.NoError(err)
    52  
    53  	require.NoError(newID.Verify())
    54  
    55  	require.Equal(id.AssetID(), newID.AssetID())
    56  }