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