github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/auth/keeper/account_test.go (about)

     1  package keeper_test
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	ethcmn "github.com/ethereum/go-ethereum/common"
     8  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     9  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/exported"
    10  	abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func Test_IterateAccounts(t *testing.T) {
    15  	var cases = []struct {
    16  		num int
    17  	}{
    18  		{0},
    19  		{1},
    20  		{100},
    21  	}
    22  
    23  	for i, c := range cases {
    24  		t.Run(fmt.Sprintf("test-%d", i), func(t *testing.T) {
    25  			app, ctx := createTestAppWithHeight(false, 10)
    26  
    27  			addrs := make(map[ethcmn.Address]struct{}, c.num)
    28  			for i := 0; i < c.num; i++ {
    29  				arr := []byte{byte((i & 0xFF0000) >> 16), byte((i & 0xFF00) >> 8), byte(i & 0xFF)}
    30  				addr := sdk.AccAddress(arr)
    31  				addrs[ethcmn.BytesToAddress(arr)] = struct{}{}
    32  				acc := app.AccountKeeper.NewAccountWithAddress(ctx, addr)
    33  				app.AccountKeeper.SetAccount(ctx, acc)
    34  			}
    35  			app.Commit(abci.RequestCommit{})
    36  
    37  			count := 0
    38  			iAddrs := make(map[ethcmn.Address]struct{}, c.num)
    39  			app.AccountKeeper.IterateAccounts(ctx, func(acc exported.Account) bool {
    40  				addr := ethcmn.BytesToAddress(acc.GetAddress())
    41  				if _, ok := addrs[addr]; ok {
    42  					iAddrs[addr] = struct{}{}
    43  					count++
    44  				}
    45  				return false
    46  			})
    47  			require.EqualValues(t, addrs, iAddrs)
    48  			require.Equal(t, len(iAddrs), count)
    49  			require.Equal(t, c.num, count)
    50  		})
    51  	}
    52  }