File tree Expand file tree Collapse file tree 4 files changed +94
-0
lines changed
data/simple_package_with_cheats Expand file tree Collapse file tree 4 files changed +94
-0
lines changed Original file line number Diff line number Diff line change
1
+ [package ]
2
+ name = " simple_package_with_cheats"
3
+ version = " 0.1.0"
4
+ edition = " 2024_07"
5
+
6
+ [dependencies ]
7
+ starknet = " 2.12.0"
8
+
9
+ [dev-dependencies ]
10
+ snforge_std = { path = " ../../../../../snforge_std" }
11
+
12
+ [[target .starknet-contract ]]
13
+
14
+ [tool .snforge ]
15
+ exit_first = false
Original file line number Diff line number Diff line change
1
+ #[starknet:: interface]
2
+ pub trait IHelloStarknet <TContractState > {
3
+ fn increase_balance (ref self : TContractState , amount : felt252 );
4
+ fn get_balance (self : @ TContractState ) -> felt252 ;
5
+ fn get_block_number (self : @ TContractState ) -> u64 ;
6
+ }
7
+
8
+ #[starknet:: contract]
9
+ pub mod HelloStarknet {
10
+ use core :: array :: ArrayTrait ;
11
+ use starknet :: get_block_number;
12
+ use starknet :: storage :: {StoragePointerReadAccess , StoragePointerWriteAccess };
13
+
14
+ #[storage]
15
+ struct Storage {
16
+ balance : felt252 ,
17
+ }
18
+
19
+ #[abi(embed_v0)]
20
+ impl IHelloStarknetImpl of super :: IHelloStarknet <ContractState > {
21
+ // Increases the balance by the given amount
22
+ fn increase_balance (ref self : ContractState , amount : felt252 ) {
23
+ self . balance. write (self . balance. read () + amount );
24
+ }
25
+
26
+ // Returns the current balance
27
+ fn get_balance (self : @ ContractState ) -> felt252 {
28
+ self . balance. read ()
29
+ }
30
+
31
+ fn get_block_number (self : @ ContractState ) -> u64 {
32
+ get_block_number ()
33
+ }
34
+ }
35
+ }
Original file line number Diff line number Diff line change
1
+ use core :: array :: ArrayTrait ;
2
+ use core :: result :: ResultTrait ;
3
+ use simple_package_with_cheats :: {IHelloStarknetDispatcher , IHelloStarknetDispatcherTrait };
4
+ use snforge_std :: cheatcodes :: contract_class :: DeclareResultTrait ;
5
+ use snforge_std :: {ContractClassTrait , declare, start_cheat_block_number_global};
6
+
7
+ #[test]
8
+ fn call_and_invoke () {
9
+ let contract = declare (" HelloStarknet" ). unwrap (). contract_class ();
10
+ let constructor_calldata = @ ArrayTrait :: new ();
11
+ let (contract_address , _ ) = contract . deploy (constructor_calldata ). unwrap ();
12
+ let dispatcher = IHelloStarknetDispatcher { contract_address };
13
+
14
+ let block_number = dispatcher . get_block_number ();
15
+ println! (" block number {}" , block_number );
16
+ // TODO investigate why the default is 2000
17
+ assert (block_number == 2000 , ' block_info == 2000' );
18
+
19
+ start_cheat_block_number_global (123 );
20
+
21
+ let block_number = dispatcher . get_block_number ();
22
+ assert (block_number == 123 , ' block_info == 123' );
23
+ }
Original file line number Diff line number Diff line change @@ -51,6 +51,27 @@ fn simple_package() {
51
51
) ;
52
52
}
53
53
54
+ #[ test]
55
+ fn simple_package_with_cheats ( ) {
56
+ let temp = setup_package ( "simple_package_with_cheats" ) ;
57
+ let output = test_runner ( & temp) . assert ( ) . code ( 0 ) ;
58
+
59
+ assert_stdout_contains (
60
+ output,
61
+ indoc ! { r"
62
+ [..]Compiling[..]
63
+ [..]Finished[..]
64
+
65
+
66
+ Collected 1 test(s) from simple_package_with_cheats package
67
+ Running 0 test(s) from src/
68
+ Running 1 test(s) from tests/
69
+ [PASS] simple_package_with_cheats_integrationtest::contract::call_and_invoke [..]
70
+ " } ,
71
+ ) ;
72
+ }
73
+
74
+
54
75
#[ test]
55
76
fn simple_package_with_git_dependency ( ) {
56
77
let temp = setup_package ( "simple_package" ) ;
You can’t perform that action at this time.
0 commit comments