Skip to content

Commit

Permalink
works
Browse files Browse the repository at this point in the history
  • Loading branch information
piotmag769 committed Jul 3, 2023
1 parent d7501ee commit 2a42af4
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 10 deletions.
2 changes: 1 addition & 1 deletion cairo
15 changes: 8 additions & 7 deletions protostar-rust/src/cheatcodes_hint_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -363,21 +363,22 @@ fn match_cheatcode_by_selector(
.expect("Failed to execute declare transaction");
// result_segment.
let felt_class_hash = felt252_from_hex_string(&class_hash.to_string()).unwrap();
insert_at_pointer(vm, &mut result_segment_ptr, felt_class_hash).unwrap();

// TODO https://github.com/software-mansion/protostar/issues/2024
// in case of errors above, consider not panicking, set an error and return it here
// instead
// in case of errors above, consider not panicking,
// set an error and return it here instead
insert_at_pointer(vm, &mut result_segment_ptr, Felt252::from(0)).unwrap();
insert_at_pointer(vm, &mut result_segment_ptr, felt_class_hash).unwrap();
}
"deploy" => {
let contract_address = inputs[0].clone();
// TODO(#1991) deploy should fail if contract address provided doesn't match calculated
// or not accept this address as argument at all.
let class_hash = inputs[1].clone();

let calldata_length: usize = inputs[2].to_biguint().to_usize().unwrap_or(0);
let calldata_length: usize = inputs[2].to_usize().unwrap_or(0);
let mut calldata = vec![];
for felt in inputs.into_iter().skip(2).take(calldata_length) {
for felt in inputs.into_iter().skip(3).take(calldata_length) {
calldata.push(felt);
}

Expand Down Expand Up @@ -417,9 +418,9 @@ fn match_cheatcode_by_selector(
.expect("Failed to get contract_address from return_data");
let contract_address = Felt252::from_bytes_be(contract_address.bytes());

insert_at_pointer(vm, &mut result_segment_ptr, contract_address).unwrap();
// todo in case of error, consider filling the panic data instead of packing in rust
// TODO: in case of error, consider filling the panic data instead of packing in rust
insert_at_pointer(vm, &mut result_segment_ptr, Felt252::from(0)).unwrap();
insert_at_pointer(vm, &mut result_segment_ptr, contract_address).unwrap();
}
"print" => {
for value in inputs {
Expand Down
5 changes: 5 additions & 0 deletions protostar-rust/tests/data/cheatcode_test/Scarb.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[package]
name = "print_test"
version = "0.1.0"

[tool.protostar]
Empty file.
14 changes: 14 additions & 0 deletions protostar-rust/tests/data/cheatcode_test/tests/test_print.cairo
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
use array::ArrayTrait;
use starknet::testing::print;

#[test]
fn test_print() {
let mut arr = ArrayTrait::new();
arr.append(152);
arr.append(124);
arr.append(149);

print(arr.span());

assert(1 == 1, 'simple check');
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use dispatchers::hello_starknet::IHelloStarknetDispatcherTrait;
#[test]
fn call_and_invoke() {
let class_hash = declare('HelloStarknet').unwrap();
let prepared = PreparedContract { contract_address: 1234, class_hash: class_hash, constructor_calldata: @ArrayTrait::new() };
let prepared = PreparedContract { contract_address: 1234, class_hash: class_hash, constructor_calldata: ArrayTrait::new().span() };
let contract_address = deploy(prepared).unwrap();
let contract_address: ContractAddress = contract_address.try_into().unwrap();
let dispatcher = IHelloStarknetDispatcher { contract_address };
Expand All @@ -40,7 +40,7 @@ fn advanced_types() {
calldata.append(1234); // recipient

let class_hash = declare('ERC20').unwrap();
let prepared = PreparedContract { contract_address: 4567, class_hash: class_hash, constructor_calldata: @calldata };
let prepared = PreparedContract { contract_address: 4567, class_hash: class_hash, constructor_calldata: calldata.span() };
let contract_address = deploy(prepared).unwrap();
let contract_address: ContractAddress = contract_address.try_into().unwrap();
let dispatcher = IERC20Dispatcher { contract_address };
Expand Down

0 comments on commit 2a42af4

Please sign in to comment.