github.com/Finschia/finschia-sdk@v0.48.1/x/bankplus/keeper/inactive_test.go (about) 1 package keeper 2 3 import ( 4 "math/rand" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 tmproto "github.com/tendermint/tendermint/proto/tendermint/types" 9 dbm "github.com/tendermint/tm-db" 10 11 "github.com/Finschia/ostracon/libs/log" 12 13 "github.com/Finschia/finschia-sdk/codec" 14 codectypes "github.com/Finschia/finschia-sdk/codec/types" 15 "github.com/Finschia/finschia-sdk/store" 16 sdk "github.com/Finschia/finschia-sdk/types" 17 accountkeeper "github.com/Finschia/finschia-sdk/x/auth/keeper" 18 accounttypes "github.com/Finschia/finschia-sdk/x/auth/types" 19 banktypes "github.com/Finschia/finschia-sdk/x/bank/types" 20 paramtypes "github.com/Finschia/finschia-sdk/x/params/types" 21 ) 22 23 func genAddress() sdk.AccAddress { 24 b := make([]byte, 20) 25 rand.Read(b) 26 return b 27 } 28 29 func setupKeeper(storeKey *sdk.KVStoreKey) BaseKeeper { 30 registry := codectypes.NewInterfaceRegistry() 31 cdc := codec.NewProtoCodec(registry) 32 amino := codec.NewLegacyAmino() 33 testTransientStoreKey := sdk.NewTransientStoreKey("test") 34 35 accountStoreKey := sdk.NewKVStoreKey(accounttypes.StoreKey) 36 accountSubspace := paramtypes.NewSubspace(cdc, amino, accountStoreKey, testTransientStoreKey, accounttypes.ModuleName) 37 accountKeeper := accountkeeper.NewAccountKeeper(cdc, accountStoreKey, accountSubspace, accounttypes.ProtoBaseAccount, nil) 38 39 bankSubspace := paramtypes.NewSubspace(cdc, amino, storeKey, testTransientStoreKey, banktypes.StoreKey) 40 return NewBaseKeeper(cdc, storeKey, accountKeeper, bankSubspace, nil, false) 41 } 42 43 func setupContext(t *testing.T, storeKey *sdk.KVStoreKey) sdk.Context { 44 db := dbm.NewMemDB() 45 stateStore := store.NewCommitMultiStore(db) 46 stateStore.MountStoreWithDB(storeKey, sdk.StoreTypeIAVL, db) 47 require.NoError(t, stateStore.LoadLatestVersion()) 48 49 return sdk.NewContext(stateStore, tmproto.Header{}, false, log.NewNopLogger()) 50 } 51 52 func TestInactiveAddr(t *testing.T) { 53 storeKey := sdk.NewKVStoreKey(banktypes.StoreKey) 54 bankKeeper := setupKeeper(storeKey) 55 ctx := setupContext(t, storeKey) 56 57 addr := genAddress() 58 59 require.Equal(t, 0, len(bankKeeper.inactiveAddrs)) 60 61 bankKeeper.addToInactiveAddr(ctx, addr) 62 require.True(t, bankKeeper.isStoredInactiveAddr(ctx, addr)) 63 64 // duplicate addition, no error expects. 65 bankKeeper.addToInactiveAddr(ctx, addr) 66 require.True(t, bankKeeper.isStoredInactiveAddr(ctx, addr)) 67 68 bankKeeper.deleteFromInactiveAddr(ctx, addr) 69 require.False(t, bankKeeper.isStoredInactiveAddr(ctx, addr)) 70 71 addr2 := genAddress() 72 require.False(t, bankKeeper.isStoredInactiveAddr(ctx, addr2)) 73 74 // expect no error 75 bankKeeper.deleteFromInactiveAddr(ctx, addr2) 76 77 // test loadAllInactiveAddrs 78 bankKeeper.addToInactiveAddr(ctx, addr) 79 bankKeeper.addToInactiveAddr(ctx, addr2) 80 require.Equal(t, 0, len(bankKeeper.inactiveAddrs)) 81 bankKeeper.loadAllInactiveAddrs(ctx) 82 require.Equal(t, 2, len(bankKeeper.inactiveAddrs)) 83 }