@@ -6,15 +6,17 @@ mod tests {
66
77 use fuels:: {
88 accounts:: predicate:: Predicate ,
9- core:: { codec:: ABIEncoder , traits:: Tokenizable , Configurables } ,
9+ core:: { codec:: ABIEncoder , traits:: Tokenizable } ,
1010 macros:: wasm_abigen,
1111 types:: { bech32:: Bech32Address , errors:: Result } ,
1212 } ;
1313 use wasm_bindgen_test:: wasm_bindgen_test;
1414
15- wasm_abigen ! ( Contract (
16- name = "no_name" ,
17- abi = r#"
15+ #[ wasm_bindgen_test]
16+ fn decoding_and_encoding ( ) -> Result < ( ) > {
17+ wasm_abigen ! ( Contract (
18+ name = "no_name" ,
19+ abi = r#"
1820 {
1921 "types": [
2022 {
@@ -106,10 +108,8 @@ mod tests {
106108 "messagesTypes": [],
107109 "configurables": []
108110 }"#
109- ) ) ;
111+ ) ) ;
110112
111- #[ wasm_bindgen_test]
112- fn decoding_and_encoding ( ) -> Result < ( ) > {
113113 let original = SomeEnum :: V2 ( SomeStruct { a : 123 , b : false } ) ;
114114
115115 let bytes = ABIEncoder :: encode ( & [ original. clone ( ) . into_token ( ) ] ) ?. resolve ( 0 ) ;
@@ -122,19 +122,84 @@ mod tests {
122122 }
123123
124124 #[ wasm_bindgen_test]
125- fn predicate_from_code_with_configurables ( ) -> Result < ( ) > {
126- let code = vec ! [ 0 , 1 , 2 , 3 ] ;
127- let chain_id = 0 ;
128- let configurables = Configurables :: new ( vec ! [ ( 1 , vec![ 5 , 6 ] ) ] ) ;
125+ fn predicate_abigen ( ) -> Result < ( ) > {
126+ wasm_abigen ! ( Predicate (
127+ name = "MyPredicate" ,
128+ abi = r#"
129+ {
130+ "types": [
131+ {
132+ "typeId": 0,
133+ "type": "bool",
134+ "components": null,
135+ "typeParameters": null
136+ },
137+ {
138+ "typeId": 1,
139+ "type": "u64",
140+ "components": null,
141+ "typeParameters": null
142+ }
143+ ],
144+ "functions": [
145+ {
146+ "inputs": [
147+ {
148+ "name": "arg",
149+ "type": 1,
150+ "typeArguments": null
151+ }
152+ ],
153+ "name": "main",
154+ "output": {
155+ "name": "",
156+ "type": 0,
157+ "typeArguments": null
158+ },
159+ "attributes": null
160+ }
161+ ],
162+ "loggedTypes": [],
163+ "messagesTypes": [],
164+ "configurables": [
165+ {
166+ "name": "U64",
167+ "configurableType": {
168+ "name": "",
169+ "type": 1,
170+ "typeArguments": null
171+ },
172+ "offset": 100
173+ }
174+ ]
175+ }"#
176+ ) ) ;
177+
178+ let code = vec ! [
179+ 116 , 0 , 0 , 3 , 71 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 100 , 93 , 252 , 192 , 1 , 16 , 255 , 243 , 0 ,
180+ 26 , 236 , 80 , 0 , 145 , 0 , 0 , 0 , 113 , 68 , 0 , 3 , 97 , 73 , 17 , 1 , 118 , 72 , 0 , 2 , 97 , 65 , 17 ,
181+ 13 , 116 , 0 , 0 , 7 , 114 , 76 , 0 , 2 , 19 , 73 , 36 , 192 , 90 , 73 , 32 , 1 , 118 , 72 , 0 , 2 , 97 , 65 ,
182+ 17 , 31 , 116 , 0 , 0 , 1 , 36 , 0 , 0 , 0 , 93 , 65 , 0 , 0 , 93 , 71 , 240 , 0 , 19 , 65 , 4 , 64 , 36 , 64 ,
183+ 0 , 0 , 71 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 42 ,
184+ ] ;
185+ let value = 128 ;
186+
187+ let predicate_data = MyPredicateEncoder :: encode_data ( value) ;
188+ let configurables = MyPredicateConfigurables :: new ( ) . with_U64 ( value) ;
129189
130- let predicate = Predicate :: from_code ( code, chain_id) . with_configurables ( configurables) ;
190+ let predicate: Predicate = Predicate :: from_code ( code. clone ( ) , 0 )
191+ . with_data ( predicate_data)
192+ . with_configurables ( configurables) ;
193+
194+ let mut expected_code = code. clone ( ) ;
195+ * expected_code. last_mut ( ) . unwrap ( ) = value as u8 ;
131196
132- let expected_code = vec ! [ 0u8 , 5 , 6 , 3 ] ;
133197 assert_eq ! ( * predicate. code( ) , expected_code) ;
134198
135199 let expected_address = Bech32Address :: from_str (
136- "fuel1cc9jrur8n535cnh205qdjd8jpxzhy8efpxr9zfjm8lyzjspa262scpm0ww " ,
200+ "fuel1z62vtmg8a3p5nlpmfkjundcd9aus2kpwaapuez0tf9yyq0a8kvsqtdesqq " ,
137201 ) ?;
202+
138203 assert_eq ! ( * predicate. address( ) , expected_address) ;
139204
140205 Ok ( ( ) )
0 commit comments