Skip to content

Commit

Permalink
suggestions
Browse files Browse the repository at this point in the history
  • Loading branch information
piotmag769 committed Jul 4, 2023
1 parent a4535b9 commit 2dd04d9
Showing 1 changed file with 13 additions and 91 deletions.
104 changes: 13 additions & 91 deletions corelib/src/cheatcodes.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ use starknet::testing::cheatcode;
struct PreparedContract {
contract_address: felt252,
class_hash: felt252,
constructor_calldata: Array::<felt252>,
constructor_calldata: @Array::<felt252>,
}

#[derive(Drop, Clone)]
struct RevertedTransaction {
panic_data: Array::<felt252>,
panic_data: Array::<felt252>,
}

trait RevertedTransactionTrait {
Expand All @@ -42,22 +42,21 @@ fn declare(contract: felt252) -> Result::<felt252, felt252> {
}

fn deploy(prepared_contract: PreparedContract) -> Result::<felt252, RevertedTransaction> {
let PreparedContract { contract_address, class_hash, mut constructor_calldata } =
let PreparedContract { contract_address, class_hash, constructor_calldata } =
prepared_contract;
let mut inputs = array![contract_address, class_hash];

let calldata_len = constructor_calldata.len().into();
inputs.append(calldata_len);
let calldata_len_felt = constructor_calldata.len().into();
inputs.append(calldata_len_felt);

let calldata_len = constructor_calldata.len();
let mut i = 0;
loop {
match constructor_calldata.pop_front() {
Option::Some(value) => {
inputs.append(value);
},
Option::None(_) => {
break ();
},
};
if calldata_len == i {
break ();
}
inputs.append(*constructor_calldata[i]);
i += 1;
};

let outputs = cheatcode::<'deploy'>(inputs.span());
Expand All @@ -78,87 +77,10 @@ fn deploy(prepared_contract: PreparedContract) -> Result::<felt252, RevertedTran
if panic_data_len + offset == i {
break ();
}
let value = *outputs[i];
panic_data.append(value);
panic_data.append(*outputs[i]);
i += 1;
};

Result::<felt252, RevertedTransaction>::Err(RevertedTransaction { panic_data })
}
}

// Old code commented out for future reference - signatures etc.

// fn deploy_contract(
// contract: felt252, calldata: @Array::<felt252>
// ) -> Result::<felt252, RevertedTransaction> {
// let mut class_hash: Option::<felt252> = Option::None(());
// match declare(contract) {
// Result::Ok(x) => {
// class_hash = Option::Some(x);
// },
// Result::Err(x) => {
// let mut panic_data = ArrayTrait::new();
// panic_data.append(x);

// return Result::<felt252, RevertedTransaction>::Err(RevertedTransaction { panic_data });
// }
// }

// let mut prepared_contract: Option::<PreparedContract> = Option::None(());
// match prepare(class_hash.unwrap(), calldata) {
// Result::Ok(x) => {
// prepared_contract = Option::Some(x);
// },
// Result::Err(x) => {
// let mut panic_data = ArrayTrait::new();
// panic_data.append(x);

// return Result::<felt252, RevertedTransaction>::Err(RevertedTransaction { panic_data });
// }
// }
// deploy(prepared_contract.unwrap())
// }

// fn prepare(
// class_hash: felt252, calldata: @Array::<felt252>
// ) -> Result::<PreparedContract, felt252> nopanic {
// match prepare_impl(class_hash, calldata) {
// Result::Ok((
// constructor_calldata, contract_address, class_hash
// )) => Result::<PreparedContract, felt252>::Ok(
// PreparedContract {
// constructor_calldata: @constructor_calldata,
// contract_address: contract_address,
// class_hash: class_hash,
// }
// ),
// Result::Err(x) => Result::<PreparedContract, felt252>::Err(x)
// }
// }

// extern fn prepare_impl(
// class_hash: felt252, calldata: @Array::<felt252>
// ) -> Result::<(Array::<felt252>, felt252, felt252), felt252> nopanic;

// extern fn mock_call(
// contract_address: felt252, function_name: felt252, response: @Array::<felt252>
// ) -> Result::<(), felt252> nopanic;

// extern fn start_roll(
// block_number: felt252, target_contract_address: felt252
// ) -> Result::<(), felt252> nopanic;

// extern fn stop_roll(target_contract_address: felt252) -> Result::<(), felt252> nopanic;

// extern fn start_warp(
// block_timestamp: felt252, target_contract_address: felt252
// ) -> Result::<(), felt252> nopanic;

// extern fn stop_warp(target_contract_address: felt252) -> Result::<(), felt252> nopanic;

// extern fn start_prank(
// caller_address: felt252, target_contract_address: felt252
// ) -> Result::<(), felt252> nopanic;

// extern fn stop_prank(target_contract_address: felt252) -> Result::<(), felt252> nopanic;

0 comments on commit 2dd04d9

Please sign in to comment.