@@ -31,6 +31,7 @@ import {
3131 compiledC210 ,
3232 compiledC210Casm ,
3333 compiledComplexSierra ,
34+ compiledHelloSierra ,
3435 getTestAccount ,
3536 getTestProvider ,
3637} from './config/fixtures' ;
@@ -673,6 +674,83 @@ describe('Cairo 1', () => {
673674 expect ( callDataFromObject ) . toStrictEqual ( expectedResult ) ;
674675 expect ( callDataFromArray ) . toStrictEqual ( expectedResult ) ;
675676 } ) ;
677+
678+ test ( 'myCallData.decodeParameters for Cairo 1' , async ( ) => {
679+ const Cairo1HelloAbi = compiledHelloSierra ;
680+ const Cairo1Abi = compiledC1v2 ;
681+ const helloCallData = new CallData ( Cairo1HelloAbi . abi ) ;
682+ const c1v2CallData = new CallData ( Cairo1Abi . abi ) ;
683+
684+ const res2 = helloCallData . decodeParameters ( 'hello::hello::UserData' , [ '0x123456' , '0x1' ] ) ;
685+ expect ( res2 ) . toEqual ( { address : 1193046n , is_claimed : true } ) ;
686+ const res3 = helloCallData . decodeParameters (
687+ [ 'hello::hello::UserData' , 'hello::hello::UserData' ] ,
688+ [ '0x123456' , '0x1' , '0x98765' , '0x0' ]
689+ ) ;
690+ expect ( res3 ) . toEqual ( [
691+ { address : 1193046n , is_claimed : true } ,
692+ { address : 624485n , is_claimed : false } ,
693+ ] ) ;
694+ const res4 = helloCallData . decodeParameters ( 'core::integer::u8' , [ '0x123456' ] ) ;
695+ expect ( res4 ) . toBe ( 1193046n ) ;
696+ const res5 = helloCallData . decodeParameters ( 'core::bool' , [ '0x1' ] ) ;
697+ expect ( res5 ) . toBe ( true ) ;
698+ const res6 = helloCallData . decodeParameters ( 'core::felt252' , [ '0x123456' ] ) ;
699+ expect ( res6 ) . toBe ( 1193046n ) ;
700+ const res7 = helloCallData . decodeParameters ( 'core::integer::u256' , [ '0x123456' , '0x789' ] ) ;
701+ expect ( num . toHex ( res7 . toString ( ) ) ) . toBe ( '0x78900000000000000000000000000123456' ) ;
702+ const res8 = helloCallData . decodeParameters ( 'core::array::Array::<core::integer::u16>' , [
703+ '2' ,
704+ '0x123456' ,
705+ '0x789' ,
706+ ] ) ;
707+ expect ( res8 ) . toEqual ( [ 1193046n , 1929n ] ) ;
708+ const res9 = helloCallData . decodeParameters ( 'core::array::Span::<core::integer::u16>' , [
709+ '2' ,
710+ '0x123456' ,
711+ '0x789' ,
712+ ] ) ;
713+ expect ( res9 ) . toEqual ( [ 1193046n , 1929n ] ) ;
714+ const res10 = helloCallData . decodeParameters ( '(core::felt252, core::integer::u16)' , [
715+ '0x123456' ,
716+ '0x789' ,
717+ ] ) ;
718+ expect ( res10 ) . toEqual ( { '0' : 1193046n , '1' : 1929n } ) ;
719+ const res11 = helloCallData . decodeParameters ( 'core::starknet::eth_address::EthAddress' , [
720+ '0x123456' ,
721+ ] ) ;
722+ expect ( res11 ) . toBe ( 1193046n ) ;
723+ const res12 = helloCallData . decodeParameters (
724+ 'core::starknet::contract_address::ContractAddress' ,
725+ [ '0x123456' ]
726+ ) ;
727+ expect ( res12 ) . toBe ( 1193046n ) ;
728+ const res13 = helloCallData . decodeParameters ( 'core::starknet::class_hash::ClassHash' , [
729+ '0x123456' ,
730+ ] ) ;
731+ expect ( res13 ) . toBe ( 1193046n ) ;
732+ const res14 = c1v2CallData . decodeParameters ( 'core::option::Option::<core::integer::u8>' , [
733+ '0' ,
734+ '0x12' ,
735+ ] ) ;
736+ expect ( res14 ) . toEqual ( { Some : 18n , None : undefined } ) ;
737+ const res15 = c1v2CallData . decodeParameters (
738+ 'core::result::Result::<hello_res_events_newTypes::hello_res_events_newTypes::Order, core::integer::u16>' ,
739+ [ '0' , '0x12' , '0x345' ]
740+ ) ;
741+ expect ( res15 ) . toEqual ( { Ok : { p1 : 18n , p2 : 837n } , Err : undefined } ) ;
742+ const res16 = c1v2CallData . decodeParameters (
743+ 'hello_res_events_newTypes::hello_res_events_newTypes::MyEnum' ,
744+ [ '0' , '0x12' , '0x5678' ]
745+ ) ;
746+ expect ( res16 ) . toEqual ( {
747+ variant : {
748+ Response : { p1 : 18n , p2 : 22136n } ,
749+ Warning : undefined ,
750+ Error : undefined ,
751+ } ,
752+ } ) ;
753+ } ) ;
676754 } ) ;
677755
678756 describe ( 'Cairo1 Account contract' , ( ) => {
0 commit comments