github.com/ava-labs/avalanchego@v1.11.11/wallet/subnet/primary/common/utxotest/utxotest.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package utxotest 5 6 import ( 7 "context" 8 "slices" 9 "testing" 10 11 "github.com/stretchr/testify/require" 12 13 "github.com/ava-labs/avalanchego/ids" 14 "github.com/ava-labs/avalanchego/utils/constants" 15 "github.com/ava-labs/avalanchego/vms/components/avax" 16 "github.com/ava-labs/avalanchego/wallet/subnet/primary/common" 17 ) 18 19 func NewDeterministicChainUTXOs(t *testing.T, utxoSets map[ids.ID][]*avax.UTXO) *DeterministicChainUTXOs { 20 globalUTXOs := common.NewUTXOs() 21 for subnetID, utxos := range utxoSets { 22 for _, utxo := range utxos { 23 require.NoError( 24 t, globalUTXOs.AddUTXO(context.Background(), subnetID, constants.PlatformChainID, utxo), 25 ) 26 } 27 } 28 return &DeterministicChainUTXOs{ 29 ChainUTXOs: common.NewChainUTXOs(constants.PlatformChainID, globalUTXOs), 30 } 31 } 32 33 type DeterministicChainUTXOs struct { 34 common.ChainUTXOs 35 } 36 37 func (c *DeterministicChainUTXOs) UTXOs(ctx context.Context, sourceChainID ids.ID) ([]*avax.UTXO, error) { 38 utxos, err := c.ChainUTXOs.UTXOs(ctx, sourceChainID) 39 if err != nil { 40 return nil, err 41 } 42 43 slices.SortFunc(utxos, func(a, b *avax.UTXO) int { 44 return a.Compare(&b.UTXOID) 45 }) 46 return utxos, nil 47 }