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