Skip to content

Commit 378371a

Browse files
blockifier_test_utils: add block_info_test_contract contracts
1 parent 29e8b8f commit 378371a

File tree

6 files changed

+5230
-0
lines changed

6 files changed

+5230
-0
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
%lang starknet
2+
from starkware.cairo.common.bool import FALSE, TRUE
3+
from starkware.cairo.common.math import assert_not_equal, unsigned_div_rem
4+
from starkware.starknet.common.syscalls import get_block_number, get_block_timestamp
5+
6+
func test_block_info{syscall_ptr: felt*, range_check_ptr}(is_validate: felt) {
7+
alloc_locals;
8+
let (block_number) = get_block_number();
9+
let (block_timestamp) = get_block_timestamp();
10+
local syscall_ptr: felt* = syscall_ptr;
11+
test_given_block_info(
12+
block_number=block_number, block_timestamp=block_timestamp, is_validate=is_validate
13+
);
14+
return ();
15+
}
16+
17+
func test_given_block_info{range_check_ptr}(
18+
block_number: felt, block_timestamp: felt, is_validate: felt
19+
) {
20+
let (divided_block_number, _) = unsigned_div_rem(block_number, 100);
21+
tempvar block_number_for_validate = divided_block_number * 100;
22+
let (divided_block_timestamp, _) = unsigned_div_rem(block_timestamp, 3600);
23+
tempvar block_timestamp_for_validate = divided_block_timestamp * 3600;
24+
25+
if (is_validate == TRUE) {
26+
assert block_number = block_number_for_validate;
27+
assert block_timestamp = block_timestamp_for_validate;
28+
return ();
29+
}
30+
31+
assert is_validate = FALSE;
32+
// We assume that the block info members are not rounded in the test.
33+
assert_not_equal(block_number, block_number_for_validate);
34+
assert_not_equal(block_timestamp, block_timestamp_for_validate);
35+
return ();
36+
}
37+
38+
@external
39+
func __validate_declare__{syscall_ptr: felt*, range_check_ptr}(class_hash: felt) {
40+
test_block_info(is_validate=TRUE);
41+
return ();
42+
}
43+
44+
@external
45+
func __validate_deploy__{syscall_ptr: felt*, range_check_ptr}(
46+
class_hash: felt, contract_address_salt: felt, is_validate: felt
47+
) {
48+
test_block_info(is_validate=TRUE);
49+
return ();
50+
}
51+
52+
@external
53+
func __validate__{syscall_ptr: felt*, range_check_ptr}(
54+
contract_address: felt, selector: felt, calldata_len: felt, calldata: felt*
55+
) {
56+
test_block_info(is_validate=TRUE);
57+
return ();
58+
}
59+
60+
@external
61+
func __execute__{syscall_ptr: felt*, range_check_ptr}(
62+
contract_address, selector: felt, calldata_len: felt, calldata: felt*
63+
) {
64+
test_block_info(is_validate=FALSE);
65+
return ();
66+
}
67+
68+
@constructor
69+
func constructor{syscall_ptr: felt*, range_check_ptr}(is_validate: felt) {
70+
test_block_info(is_validate=is_validate);
71+
return ();
72+
}

0 commit comments

Comments
 (0)