Skip to content

Commit cdce605

Browse files
cptarturksew1
authored andcommitted
Add test for get_block_hash syscall
1 parent 2af90bc commit cdce605

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

crates/forge/tests/data/simple_package_with_cheats/src/lib.cairo

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ pub trait IHelloStarknet<TContractState> {
55
fn increase_balance(ref self: TContractState, amount: felt252);
66
fn get_balance(self: @TContractState) -> felt252;
77
fn get_block_number(self: @TContractState) -> u64;
8+
fn get_block_hash(self: @TContractState) -> felt252;
89
}
910

1011
#[starknet::interface]
@@ -91,8 +92,9 @@ pub mod HelloStarknetProxy {
9192
#[starknet::contract]
9293
pub mod HelloStarknet {
9394
use core::array::ArrayTrait;
94-
use starknet::get_block_number;
9595
use starknet::storage::{StoragePointerReadAccess, StoragePointerWriteAccess};
96+
use starknet::syscalls::get_block_hash_syscall;
97+
use starknet::{SyscallResultTrait, get_block_number};
9698

9799
#[storage]
98100
struct Storage {
@@ -114,5 +116,9 @@ pub mod HelloStarknet {
114116
fn get_block_number(self: @ContractState) -> u64 {
115117
get_block_number()
116118
}
119+
120+
fn get_block_hash(self: @ContractState) -> felt252 {
121+
get_block_hash_syscall(100).unwrap_syscall()
122+
}
117123
}
118124
}

crates/forge/tests/data/simple_package_with_cheats/tests/contract.cairo

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ use simple_package_with_cheats::{
66
IHelloStarknetProxyDispatcherTrait,
77
};
88
use snforge_std::cheatcodes::contract_class::DeclareResultTrait;
9-
use snforge_std::{ContractClassTrait, declare, start_cheat_block_number_global};
9+
use snforge_std::{
10+
ContractClassTrait, declare, start_cheat_block_hash_global, start_cheat_block_number_global,
11+
};
1012
use starknet::contract_address;
1113

1214
#[test]
@@ -95,3 +97,19 @@ fn deploy_syscall() {
9597
let block_number = cheated_constructor_dispatcher.get_stored_block_number();
9698
assert(block_number == 123, 'block_number == 123');
9799
}
100+
101+
#[test]
102+
fn block_hash() {
103+
let contract = declare("HelloStarknet").unwrap().contract_class();
104+
let constructor_calldata = @ArrayTrait::new();
105+
let (contract_address, _) = contract.deploy(constructor_calldata).unwrap();
106+
let dispatcher = IHelloStarknetDispatcher { contract_address };
107+
108+
let block_hash = dispatcher.get_block_hash();
109+
assert(block_hash == 0, 'bloch_hash == 0');
110+
111+
start_cheat_block_hash_global(100, 111);
112+
113+
let block_hash = dispatcher.get_block_hash();
114+
assert(block_hash == 111, 'bloch_hash == 111');
115+
}

0 commit comments

Comments
 (0)