@@ -129,8 +129,29 @@ fn unsigned_int_works() {
129
129
130
130
#[ test]
131
131
fn string_works ( ) {
132
+ // String
132
133
test_case ! ( String , String :: from( "" ) ) ;
133
134
test_case ! ( String , String :: from( "Hello, world!" ) ) ;
135
+
136
+ // `Box<str>`
137
+ test_case ! (
138
+ Box <str >,
139
+ Box :: from( "" ) ,
140
+ String ,
141
+ SolValue ,
142
+ String :: from( "" ) ,
143
+ [ . unwrap( ) . as_ref( ) ] ,
144
+ [ . unwrap( ) . as_str( ) ]
145
+ ) ;
146
+ test_case ! (
147
+ Box <str >,
148
+ Box :: from( "Hello, world!" ) ,
149
+ String ,
150
+ SolValue ,
151
+ String :: from( "Hello, world!" ) ,
152
+ [ . unwrap( ) . as_ref( ) ] ,
153
+ [ . unwrap( ) . as_str( ) ]
154
+ ) ;
134
155
}
135
156
136
157
#[ test]
@@ -180,12 +201,32 @@ fn fixed_array_works() {
180
201
fn dynamic_array_works ( ) {
181
202
test_case ! ( Vec <bool >, vec![ true , false , false , true ] ) ;
182
203
204
+ test_case ! (
205
+ Box <[ bool ] >,
206
+ Box :: from( [ true , false , false , true ] ) ,
207
+ Vec <bool >,
208
+ SolValue ,
209
+ vec![ true , false , false , true ] ,
210
+ [ . unwrap( ) . as_ref( ) ] ,
211
+ [ . unwrap( ) . as_slice( ) ]
212
+ ) ;
213
+
183
214
test_case ! ( Vec <i8 >, Vec :: from( [ 100i8 ; 8 ] ) ) ;
184
215
test_case ! ( Vec <i16 >, Vec :: from( [ -10_000i16 ; 16 ] ) ) ;
185
216
test_case ! ( Vec <i32 >, Vec :: from( [ 1_000_000i32 ; 32 ] ) ) ;
186
217
test_case ! ( Vec <i64 >, Vec :: from( [ -1_000_000_000i64 ; 64 ] ) ) ;
187
218
test_case ! ( Vec <i128 >, Vec :: from( [ 1_000_000_000_000i128 ; 128 ] ) ) ;
188
219
220
+ test_case ! (
221
+ Box <[ i8 ] >,
222
+ Box :: from( [ 100i8 ; 8 ] ) ,
223
+ Vec <i8 >,
224
+ SolValue ,
225
+ Vec :: from( [ 100i8 ; 8 ] ) ,
226
+ [ . unwrap( ) . as_ref( ) ] ,
227
+ [ . unwrap( ) . as_slice( ) ]
228
+ ) ;
229
+
189
230
// `SolValue` for `Vec<u8>` maps to `bytes`.
190
231
test_case ! (
191
232
Vec <u8 >,
@@ -203,6 +244,16 @@ fn dynamic_array_works() {
203
244
vec![ String :: from( "" ) , String :: from( "Hello, world!" ) ]
204
245
) ;
205
246
247
+ test_case ! (
248
+ Box <[ String ] >,
249
+ Box :: from( [ String :: from( "" ) , String :: from( "Hello, world!" ) ] ) ,
250
+ Vec <String >,
251
+ SolValue ,
252
+ vec![ String :: from( "" ) , String :: from( "Hello, world!" ) ] ,
253
+ [ . unwrap( ) . as_ref( ) ] ,
254
+ [ . unwrap( ) . as_slice( ) ]
255
+ ) ;
256
+
206
257
test_case ! (
207
258
Vec <Address >, Vec :: from( [ Address :: from( [ 1 ; 20 ] ) ; 4 ] ) ,
208
259
Vec <AlloyAddress >, SolValue , Vec :: from( [ AlloyAddress :: from( [ 1 ; 20 ] ) ; 4 ] ) ,
@@ -219,16 +270,16 @@ fn fixed_bytes_works() {
219
270
) ;
220
271
221
272
macro_rules! fixed_bytes_test_case {
222
- ( $( $size: literal) ,+ $( , ) * ) => {
223
- $(
224
- test_case!(
225
- SolBytes <[ u8 ; $size] >, SolBytes ( [ 100u8 ; $size] ) ,
226
- AlloyFixedBytes <$size>, SolValue , AlloyFixedBytes ( [ 100u8 ; $size] ) ,
227
- [ . unwrap( ) . 0 ] , [ . unwrap( ) . 0 ]
228
- ) ;
229
- ) +
230
- } ;
231
- }
273
+ ( $( $size: literal) ,+ $( , ) * ) => {
274
+ $(
275
+ test_case!(
276
+ SolBytes <[ u8 ; $size] >, SolBytes ( [ 100u8 ; $size] ) ,
277
+ AlloyFixedBytes <$size>, SolValue , AlloyFixedBytes ( [ 100u8 ; $size] ) ,
278
+ [ . unwrap( ) . 0 ] , [ . unwrap( ) . 0 ]
279
+ ) ;
280
+ ) +
281
+ } ;
282
+ }
232
283
233
284
fixed_bytes_test_case ! (
234
285
1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 ,
@@ -239,23 +290,30 @@ fn fixed_bytes_works() {
239
290
#[ test]
240
291
fn bytes_works ( ) {
241
292
macro_rules! bytes_test_case {
242
- ( $( $fixture_size: literal) ,+ $( , ) * ) => {
243
- $(
244
- let data = Vec :: from( [ 100u8 ; $fixture_size] ) ;
245
- let bytes = SolBytes ( data. clone( ) ) ;
246
- let sol_bytes = AlloyBytes :: from( data) ;
247
-
248
- test_case!(
249
- SolBytes <Vec <u8 >>, bytes,
250
- AlloyBytes , SolValue , sol_bytes,
251
- [ . unwrap( ) . as_slice( ) ] , [ . unwrap( ) . as_ref( ) ]
252
- ) ;
253
- ) +
254
- } ;
255
- }
293
+ ( $( $fixture_size: literal) ,+ $( , ) * ) => {
294
+ $(
295
+ let data = Vec :: from( [ 100u8 ; $fixture_size] ) ;
296
+ let vec_bytes = SolBytes ( data. clone( ) ) ;
297
+ let sol_bytes = AlloyBytes :: from( data) ;
298
+
299
+ test_case!(
300
+ SolBytes <Vec <u8 >>, vec_bytes,
301
+ AlloyBytes , SolValue , sol_bytes,
302
+ [ . unwrap( ) . as_slice( ) ] , [ . unwrap( ) . as_ref( ) ]
303
+ ) ;
304
+
305
+ let box_bytes = SolBytes ( Box :: from( [ 100u8 ; $fixture_size] ) ) ;
306
+ test_case!(
307
+ SolBytes <Box <[ u8 ] >>, box_bytes,
308
+ AlloyBytes , SolValue , sol_bytes,
309
+ [ . unwrap( ) . 0 . as_ref( ) ] , [ . unwrap( ) . as_ref( ) ]
310
+ ) ;
311
+ ) +
312
+ } ;
313
+ }
256
314
257
315
// Number/size is the dynamic size of the `Vec`.
258
- bytes_test_case ! ( 0 , 1 , 10 , 20 , 30 , 40 , 50 , 60 , 70 ) ;
316
+ bytes_test_case ! ( 0 , 1 , 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90 , 100 ) ;
259
317
}
260
318
261
319
#[ test]
0 commit comments