@@ -22,82 +22,63 @@ func TestBuildContractAddressClassic(t *testing.T) {
2222
2323 // set custom Bech32 settings
2424 sdk .GetConfig ().SetBech32PrefixForAccount ("purple" , "purple" )
25- // disables address cache, AccAddress -> String conversion is then slower,
26- // but does not lead to errors like:
27- // runtime error: invalid memory address or nil pointer dereference
25+ // disable address cache
26+ // AccAddress -> String conversion is then slower, but does not lead to errors like this :
27+ // runtime error: invalid memory address or nil pointer dereference
2828 sdk .SetAddrCacheEnabled (false )
2929
30- // prepare test data
31- type Spec struct {
32- In struct {
33- CodeId uint64 `json:"codeId"`
34- InstanceId uint64 `json:"instanceId"`
35- } `json:"in"`
36- Out struct {
37- Address sdk.AccAddress `json:"address"`
38- } `json:"out"`
39- }
40- var specs []Spec
41- require .NoError (t , json .Unmarshal ([]byte (goldenMasterClassicContractAddr ), & specs ))
42- require .NotEmpty (t , specs )
43-
44- // run test on prepared test data
45- for i , spec := range specs {
30+ // run tests
31+ for i , spec := range classicContractAddr {
4632 t .Run (fmt .Sprintf ("case %d" , i ), func (t * testing.T ) {
4733 // when
48- gotAddr := BuildContractAddressClassic (spec .In . CodeId , spec .In . InstanceId )
34+ gotAddr := BuildContractAddressClassic (spec .codeId , spec .instanceId )
4935 // then
50- require .Equal (t , spec .Out . Address . String () , gotAddr .String ())
36+ require .Equal (t , spec .address , gotAddr .String ())
5137 require .NoError (t , sdk .VerifyAddressFormat (gotAddr ))
5238 })
5339 }
5440}
5541
56- const goldenMasterClassicContractAddr = `[
57- {
58- "in": {
59- "codeId": 0,
60- "instanceId": 0
61- },
62- "out": {
63- "address": "purple1w0w8sasnut0jx0vvsnvlc8nayq0q2ej8xgrpwgel05tn6wy4r57qfplul7"
64- }
65- },
66- {
67- "in": {
68- "codeId": 0,
69- "instanceId": 1
70- },
71- "out": {
72- "address": "purple156r47kpk4va938pmtpuee4fh77847gqcw2dmpl2nnpwztwfgz04s5cr8hj"
73- }
74- },
75- {
76- "in": {
77- "codeId": 1,
78- "instanceId": 0
79- },
80- "out": {
81- "address": "purple1mzdhwvvh22wrt07w59wxyd58822qavwkx5lcej7aqfkpqqlhaqfs5efvjk"
82- }
83- },
84- {
85- "in": {
86- "codeId": 1,
87- "instanceId": 1
88- },
89- "out": {
90- "address": "purple14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9smc2vxm"
91- }
92- }
93- ]`
42+ var classicContractAddr = []struct {
43+ codeId uint64
44+ instanceId uint64
45+ address string
46+ }{
47+ {
48+ codeId : 0 ,
49+ instanceId : 0 ,
50+ address : "purple1w0w8sasnut0jx0vvsnvlc8nayq0q2ej8xgrpwgel05tn6wy4r57qfplul7" ,
51+ },
52+ {
53+ codeId : 0 ,
54+ instanceId : 1 ,
55+ address : "purple156r47kpk4va938pmtpuee4fh77847gqcw2dmpl2nnpwztwfgz04s5cr8hj" ,
56+ },
57+ {
58+ codeId : 1 ,
59+ instanceId : 0 ,
60+ address : "purple1mzdhwvvh22wrt07w59wxyd58822qavwkx5lcej7aqfkpqqlhaqfs5efvjk" ,
61+ },
62+ {
63+ codeId : 1 ,
64+ instanceId : 1 ,
65+ address : "purple14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9smc2vxm" ,
66+ },
67+ }
9468
9569func TestBuildContractAddressPredictable (t * testing.T ) {
9670 x , y := sdk .GetConfig ().GetBech32AccountAddrPrefix (), sdk .GetConfig ().GetBech32AccountPubPrefix ()
71+ c := sdk .IsAddrCacheEnabled ()
9772 t .Cleanup (func () {
9873 sdk .GetConfig ().SetBech32PrefixForAccount (x , y )
74+ sdk .SetAddrCacheEnabled (c )
9975 })
76+ // set custom Bech32 settings
10077 sdk .GetConfig ().SetBech32PrefixForAccount ("purple" , "purple" )
78+ // disable address cache
79+ // AccAddress -> String conversion is then slower, but does not lead to errors like this:
80+ // runtime error: invalid memory address or nil pointer dereference
81+ sdk .SetAddrCacheEnabled (false )
10182
10283 // test vectors generated via cosmjs: https://github.com/cosmos/cosmjs/pull/1253/files
10384 type Spec struct {
0 commit comments