@@ -22,82 +22,63 @@ func TestBuildContractAddressClassic(t *testing.T) {
22
22
23
23
// set custom Bech32 settings
24
24
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
28
28
sdk .SetAddrCacheEnabled (false )
29
29
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 {
46
32
t .Run (fmt .Sprintf ("case %d" , i ), func (t * testing.T ) {
47
33
// when
48
- gotAddr := BuildContractAddressClassic (spec .In . CodeId , spec .In . InstanceId )
34
+ gotAddr := BuildContractAddressClassic (spec .codeId , spec .instanceId )
49
35
// then
50
- require .Equal (t , spec .Out . Address . String () , gotAddr .String ())
36
+ require .Equal (t , spec .address , gotAddr .String ())
51
37
require .NoError (t , sdk .VerifyAddressFormat (gotAddr ))
52
38
})
53
39
}
54
40
}
55
41
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
+ }
94
68
95
69
func TestBuildContractAddressPredictable (t * testing.T ) {
96
70
x , y := sdk .GetConfig ().GetBech32AccountAddrPrefix (), sdk .GetConfig ().GetBech32AccountPubPrefix ()
71
+ c := sdk .IsAddrCacheEnabled ()
97
72
t .Cleanup (func () {
98
73
sdk .GetConfig ().SetBech32PrefixForAccount (x , y )
74
+ sdk .SetAddrCacheEnabled (c )
99
75
})
76
+ // set custom Bech32 settings
100
77
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 )
101
82
102
83
// test vectors generated via cosmjs: https://github.com/cosmos/cosmjs/pull/1253/files
103
84
type Spec struct {
0 commit comments