@@ -907,3 +907,38 @@ fn test_decode_transfer_from() {
907907 assert! (* decoded . at (2 ) == expected_to . into ());
908908 assert! (* decoded . at (3 ) == expected_amount . into ());
909909}
910+
911+ #[test]
912+ fn test_decode_multiple_bytes32 () {
913+ let mut data : ByteArray = Default :: default ();
914+
915+ data . append_u256 (0x1111111111111111111111111111111111111111111111111111111111111111 );
916+ data . append_u256 (0x2222222222222222222222222222222222222222222222222222222222222222 );
917+ data . append_u256 (0x3333333333333333333333333333333333333333333333333333333333333333 );
918+ data . append_u256 (0x4444444444444444444444444444444444444444444444444444444444444444 );
919+
920+ let mut calldata = cd (data );
921+
922+ let decoded = calldata
923+ . decode (
924+ array! [EVMTypes :: Bytes32 , EVMTypes :: Bytes32 , EVMTypes :: Bytes32 , EVMTypes :: Bytes32 ]
925+ . span (),
926+ );
927+
928+ assert! (* decoded . at (0 ) == 1 );
929+ assert! (* decoded . at (1 ) == 0x11111111111111111111111111111111111111111111111111111111111111 );
930+ assert! (* decoded . at (2 ) == 0x11 );
931+ assert! (* decoded . at (3 ) == 1 );
932+ assert! (* decoded . at (4 ) == 1 );
933+ assert! (* decoded . at (5 ) == 0x22222222222222222222222222222222222222222222222222222222222222 );
934+ assert! (* decoded . at (6 ) == 0x22 );
935+ assert! (* decoded . at (7 ) == 1 );
936+ assert! (* decoded . at (8 ) == 1 );
937+ assert! (* decoded . at (9 ) == 0x33333333333333333333333333333333333333333333333333333333333333 );
938+ assert! (* decoded . at (10 ) == 0x33 );
939+ assert! (* decoded . at (11 ) == 1 );
940+ assert! (* decoded . at (12 ) == 1 );
941+ assert! (* decoded . at (13 ) == 0x44444444444444444444444444444444444444444444444444444444444444 );
942+ assert! (* decoded . at (14 ) == 0x44 );
943+ assert! (* decoded . at (15 ) == 1 );
944+ }
0 commit comments