@@ -11,12 +11,13 @@ use starknet_api::execution_resources::GasAmount;
11
11
use starknet_api:: felt;
12
12
use starknet_api:: rpc_transaction:: RpcTransaction ;
13
13
use starknet_api:: test_utils:: invoke:: rpc_invoke_tx;
14
+ use starknet_api:: transaction:: fields:: TransactionSignature ;
14
15
15
16
use crate :: common:: { end_to_end_flow, validate_tx_count, TestScenario } ;
16
17
17
18
mod common;
18
19
19
- const CUSTOM_CAIRO_0_INVOKE_TX_COUNT : usize = 3 ;
20
+ const CUSTOM_CAIRO_0_INVOKE_TX_COUNT : usize = 4 ;
20
21
21
22
#[ tokio:: test]
22
23
async fn custom_cairo0_txs ( ) {
@@ -32,18 +33,20 @@ async fn custom_cairo0_txs() {
32
33
33
34
fn create_custom_cairo0_txs_scenario ( ) -> Vec < TestScenario > {
34
35
vec ! [ TestScenario {
35
- create_rpc_txs_fn: create_cairo_0_syscall_test_txs ,
36
+ create_rpc_txs_fn: create_custom_cairo0_test_txs ,
36
37
create_l1_to_l2_messages_args_fn: |_| vec![ ] ,
37
38
test_tx_hashes_fn: |tx_hashes| validate_tx_count( tx_hashes, CUSTOM_CAIRO_0_INVOKE_TX_COUNT ) ,
38
39
} ]
39
40
}
40
41
41
- fn create_cairo_0_syscall_test_txs (
42
+ /// Creates a set of transactions that test the Cairo 0 functionality.
43
+ fn create_custom_cairo0_test_txs (
42
44
tx_generator : & mut MultiAccountTransactionGenerator ,
43
45
) -> Vec < RpcTransaction > {
44
46
let account_tx_generator = tx_generator. account_with_id_mut ( CAIRO0_ACCOUNT_ID ) ;
45
47
let mut txs = vec ! [ ] ;
46
48
txs. extend ( generate_direct_test_contract_invoke_txs_cairo_0_syscall ( account_tx_generator) ) ;
49
+ txs. extend ( generate_invoke_txs_with_signature_cairo_0_syscall ( account_tx_generator) ) ;
47
50
48
51
txs
49
52
}
@@ -79,3 +82,19 @@ fn generate_direct_test_contract_invoke_txs_cairo_0_syscall(
79
82
} )
80
83
. collect ( )
81
84
}
85
+
86
+ fn generate_invoke_txs_with_signature_cairo_0_syscall (
87
+ account_tx_generator : & mut AccountTransactionGenerator ,
88
+ ) -> Vec < RpcTransaction > {
89
+ let test_contract = FeatureContract :: TestContract ( CairoVersion :: Cairo0 ) ;
90
+
91
+ let fn_name = "add_signature_to_counters" ;
92
+ let fn_args = vec ! [ felt!( 2021_u64 ) ] ;
93
+ let calldata = create_calldata ( test_contract. get_instance_address ( 0 ) , fn_name, & fn_args) ;
94
+
95
+ let signature = TransactionSignature ( vec ! [ felt!( 100_u64 ) , felt!( 200_u64 ) ] . into ( ) ) ;
96
+
97
+ vec ! [ rpc_invoke_tx(
98
+ account_tx_generator. build_invoke_tx_args( ) . calldata( calldata) . signature( signature) ,
99
+ ) ]
100
+ }
0 commit comments