Skip to content

Commit b532fd5

Browse files
committed
test(precompile/common): improve unit test for balance handler
1 parent ea887e0 commit b532fd5

File tree

1 file changed

+99
-38
lines changed

1 file changed

+99
-38
lines changed

precompiles/common/balance_handler_test.go

Lines changed: 99 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -31,47 +31,108 @@ func setupBalanceHandlerTest(t *testing.T) {
3131
}
3232

3333
func TestParseHexAddress(t *testing.T) {
34-
setupBalanceHandlerTest(t)
35-
36-
_, addrs, err := testutil.GeneratePrivKeyAddressPairs(1)
37-
require.NoError(t, err)
38-
accAddr := addrs[0]
39-
40-
// valid address
41-
ev := sdk.NewEvent("bank", sdk.NewAttribute(banktypes.AttributeKeySpender, accAddr.String()))
42-
addr, err := parseHexAddress(ev, banktypes.AttributeKeySpender)
43-
require.NoError(t, err)
44-
require.Equal(t, common.Address(accAddr.Bytes()), addr)
45-
46-
// missing attribute
47-
ev = sdk.NewEvent("bank")
48-
_, err = parseHexAddress(ev, banktypes.AttributeKeySpender)
49-
require.Error(t, err)
50-
51-
// invalid address
52-
ev = sdk.NewEvent("bank", sdk.NewAttribute(banktypes.AttributeKeySpender, "invalid"))
53-
_, err = parseHexAddress(ev, banktypes.AttributeKeySpender)
54-
require.Error(t, err)
34+
var accAddr sdk.AccAddress
35+
36+
testCases := []struct {
37+
name string
38+
maleate func() sdk.Event
39+
key string
40+
expAddr common.Address
41+
expError bool
42+
}{
43+
{
44+
name: "valid address",
45+
maleate: func() sdk.Event {
46+
return sdk.NewEvent("bank", sdk.NewAttribute(banktypes.AttributeKeySpender, accAddr.String()))
47+
},
48+
key: banktypes.AttributeKeySpender,
49+
expError: false,
50+
},
51+
{
52+
name: "missing attribute",
53+
maleate: func() sdk.Event {
54+
return sdk.NewEvent("bank")
55+
},
56+
key: banktypes.AttributeKeySpender,
57+
expError: true,
58+
},
59+
{
60+
name: "invalid address",
61+
maleate: func() sdk.Event {
62+
return sdk.NewEvent("bank", sdk.NewAttribute(banktypes.AttributeKeySpender, "invalid"))
63+
},
64+
key: banktypes.AttributeKeySpender,
65+
expError: true,
66+
},
67+
}
68+
69+
for _, tc := range testCases {
70+
t.Run(tc.name, func(t *testing.T) {
71+
setupBalanceHandlerTest(t)
72+
73+
_, addrs, err := testutil.GeneratePrivKeyAddressPairs(1)
74+
require.NoError(t, err)
75+
accAddr = addrs[0]
76+
77+
event := tc.maleate()
78+
79+
addr, err := parseHexAddress(event, tc.key)
80+
if tc.expError {
81+
require.Error(t, err)
82+
return
83+
}
84+
85+
require.NoError(t, err)
86+
require.Equal(t, common.Address(accAddr.Bytes()), addr)
87+
})
88+
}
5589
}
5690

5791
func TestParseAmount(t *testing.T) {
58-
setupBalanceHandlerTest(t)
59-
60-
coinStr := sdk.NewCoins(sdk.NewInt64Coin(evmtypes.GetEVMCoinDenom(), 5)).String()
61-
ev := sdk.NewEvent("bank", sdk.NewAttribute(sdk.AttributeKeyAmount, coinStr))
62-
amt, err := parseAmount(ev)
63-
require.NoError(t, err)
64-
require.True(t, amt.Eq(uint256.NewInt(5)))
65-
66-
// missing amount
67-
ev = sdk.NewEvent("bank")
68-
_, err = parseAmount(ev)
69-
require.Error(t, err)
70-
71-
// invalid coins
72-
ev = sdk.NewEvent("bank", sdk.NewAttribute(sdk.AttributeKeyAmount, "invalid"))
73-
_, err = parseAmount(ev)
74-
require.Error(t, err)
92+
testCases := []struct {
93+
name string
94+
maleate func() sdk.Event
95+
expAmt *uint256.Int
96+
expError bool
97+
}{
98+
{
99+
name: "valid amount",
100+
maleate: func() sdk.Event {
101+
coinStr := sdk.NewCoins(sdk.NewInt64Coin(evmtypes.GetEVMCoinDenom(), 5)).String()
102+
return sdk.NewEvent("bank", sdk.NewAttribute(sdk.AttributeKeyAmount, coinStr))
103+
},
104+
expAmt: uint256.NewInt(5),
105+
},
106+
{
107+
name: "missing amount",
108+
maleate: func() sdk.Event {
109+
return sdk.NewEvent("bank")
110+
},
111+
expError: true,
112+
},
113+
{
114+
name: "invalid coins",
115+
maleate: func() sdk.Event {
116+
return sdk.NewEvent("bank", sdk.NewAttribute(sdk.AttributeKeyAmount, "invalid"))
117+
},
118+
expError: true,
119+
},
120+
}
121+
122+
for _, tc := range testCases {
123+
t.Run(tc.name, func(t *testing.T) {
124+
setupBalanceHandlerTest(t)
125+
126+
amt, err := parseAmount(tc.maleate())
127+
if tc.expError {
128+
require.Error(t, err)
129+
return
130+
}
131+
132+
require.NoError(t, err)
133+
require.True(t, amt.Eq(tc.expAmt))
134+
})
135+
}
75136
}
76137

77138
func TestAfterBalanceChange(t *testing.T) {

0 commit comments

Comments
 (0)