@@ -6,7 +6,7 @@ use sha2::{Digest, Sha256};
6
6
7
7
use super :: querier:: MockQuerier ;
8
8
use super :: storage:: MockStorage ;
9
- use crate :: backend:: try_br ;
9
+ use crate :: backend:: unwrap_or_return_with_gas ;
10
10
use crate :: { Backend , BackendApi , BackendError , BackendResult , GasInfo } ;
11
11
12
12
pub const MOCK_CONTRACT_ADDR : & str = "cosmwasmcontract" ; // TODO: use correct address
@@ -131,19 +131,13 @@ impl BackendApi for MockApi {
131
131
externally_used : 0 ,
132
132
} ;
133
133
134
- let ( result , gas_info) = self . addr_canonicalize ( input) ;
134
+ let ( canonicalize_res , gas_info) = self . addr_canonicalize ( input) ;
135
135
gas_total += gas_info;
136
- let canonical = match result {
137
- Ok ( canonical) => canonical,
138
- Err ( err) => return ( Err ( err) , gas_total) ,
139
- } ;
136
+ let canonical = unwrap_or_return_with_gas ! ( canonicalize_res, gas_total) ;
140
137
141
- let ( result , gas_info) = self . addr_humanize ( & canonical) ;
138
+ let ( humanize_res , gas_info) = self . addr_humanize ( & canonical) ;
142
139
gas_total += gas_info;
143
- let normalized = match result {
144
- Ok ( norm) => norm,
145
- Err ( err) => return ( Err ( err) , gas_total) ,
146
- } ;
140
+ let normalized = unwrap_or_return_with_gas ! ( humanize_res, gas_total) ;
147
141
if input != normalized. as_str ( ) {
148
142
return (
149
143
Err ( BackendError :: user_err (
@@ -156,51 +150,55 @@ impl BackendApi for MockApi {
156
150
}
157
151
158
152
fn addr_canonicalize ( & self , input : & str ) -> BackendResult < Vec < u8 > > {
159
- let gas_info = GasInfo :: with_cost ( GAS_COST_CANONICALIZE ) ;
153
+ let gas_total = GasInfo :: with_cost ( GAS_COST_CANONICALIZE ) ;
160
154
161
155
// handle error case
162
156
let bech32_prefix = match self . 0 {
163
- MockApiImpl :: Error ( e) => return ( Err ( BackendError :: unknown ( e) ) , gas_info ) ,
157
+ MockApiImpl :: Error ( e) => return ( Err ( BackendError :: unknown ( e) ) , gas_total ) ,
164
158
MockApiImpl :: Bech32 { bech32_prefix } => bech32_prefix,
165
159
} ;
166
160
167
161
match decode ( input) {
168
- Ok ( ( prefix, _, _) ) if prefix != bech32_prefix => {
169
- ( Err ( BackendError :: user_err ( "Wrong bech32 prefix" ) ) , gas_info)
170
- }
162
+ Ok ( ( prefix, _, _) ) if prefix != bech32_prefix => (
163
+ Err ( BackendError :: user_err ( "Wrong bech32 prefix" ) ) ,
164
+ gas_total,
165
+ ) ,
171
166
Ok ( ( _, _, Variant :: Bech32m ) ) => (
172
167
Err ( BackendError :: user_err ( "Wrong bech32 variant" ) ) ,
173
- gas_info ,
168
+ gas_total ,
174
169
) ,
175
170
Err ( _) => (
176
171
Err ( BackendError :: user_err ( "Error decoding bech32" ) ) ,
177
- gas_info ,
172
+ gas_total ,
178
173
) ,
179
174
Ok ( ( _, decoded, Variant :: Bech32 ) ) => match Vec :: < u8 > :: from_base32 ( & decoded) {
180
175
Ok ( bytes) => {
181
- try_br ! ( ( validate_length( & bytes) , gas_info ) ) ;
182
- ( Ok ( bytes) , gas_info )
176
+ unwrap_or_return_with_gas ! ( validate_length( & bytes) , gas_total ) ;
177
+ ( Ok ( bytes) , gas_total )
183
178
}
184
- Err ( _) => ( Err ( BackendError :: user_err ( "Invalid bech32 data" ) ) , gas_info) ,
179
+ Err ( _) => (
180
+ Err ( BackendError :: user_err ( "Invalid bech32 data" ) ) ,
181
+ gas_total,
182
+ ) ,
185
183
} ,
186
184
}
187
185
}
188
186
189
187
fn addr_humanize ( & self , canonical : & [ u8 ] ) -> BackendResult < String > {
190
- let gas_info = GasInfo :: with_cost ( GAS_COST_HUMANIZE ) ;
188
+ let gas_total = GasInfo :: with_cost ( GAS_COST_HUMANIZE ) ;
191
189
192
190
// handle error case
193
191
let bech32_prefix = match self . 0 {
194
- MockApiImpl :: Error ( e) => return ( Err ( BackendError :: unknown ( e) ) , gas_info ) ,
192
+ MockApiImpl :: Error ( e) => return ( Err ( BackendError :: unknown ( e) ) , gas_total ) ,
195
193
MockApiImpl :: Bech32 { bech32_prefix } => bech32_prefix,
196
194
} ;
197
195
198
- try_br ! ( ( validate_length( canonical) , gas_info ) ) ;
196
+ unwrap_or_return_with_gas ! ( validate_length( canonical) , gas_total ) ;
199
197
200
198
let result = encode ( bech32_prefix, canonical. to_base32 ( ) , Variant :: Bech32 )
201
199
. map_err ( |_| BackendError :: user_err ( "Invalid bech32 prefix" ) ) ;
202
200
203
- ( result, gas_info )
201
+ ( result, gas_total )
204
202
}
205
203
}
206
204
0 commit comments