Skip to content

Commit 68cc601

Browse files
starknet_os_flow_tests: split test_new_class_flow experimental contract flow
1 parent fc257ac commit 68cc601

File tree

1 file changed

+47
-47
lines changed
  • crates/starknet_os_flow_tests/src

1 file changed

+47
-47
lines changed

crates/starknet_os_flow_tests/src/tests.rs

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1140,18 +1140,63 @@ async fn test_new_class_execution_info(#[values(true, false)] use_kzg_da: bool)
11401140
// Verify that the funded account, the new account and the sequencer all have changed balances.
11411141
test_output.assert_account_balance_change(*FUNDED_ACCOUNT_ADDRESS);
11421142
test_output.assert_account_balance_change(contract_address!(TEST_SEQUENCER_ADDRESS));
1143+
}
1144+
1145+
#[rstest]
1146+
#[tokio::test]
1147+
async fn test_experimental_libfuncs_contract(#[values(true, false)] use_kzg_da: bool) {
1148+
let (mut test_manager, []) =
1149+
TestManager::<DictStateReader>::new_with_default_initial_state([]).await;
1150+
1151+
// Declare the experimental contract.
1152+
let experimental_contract = FeatureContract::Experimental;
1153+
let experimental_contract_sierra = experimental_contract.get_sierra();
1154+
let experimental_class_hash = experimental_contract_sierra.calculate_class_hash();
1155+
let experimental_compiled_class_hash =
1156+
experimental_contract.get_compiled_class_hash(&HashVersion::V2);
1157+
let declare_tx_args = declare_tx_args! {
1158+
sender_address: *FUNDED_ACCOUNT_ADDRESS,
1159+
class_hash: experimental_class_hash,
1160+
compiled_class_hash: experimental_compiled_class_hash,
1161+
resource_bounds: *NON_TRIVIAL_RESOURCE_BOUNDS,
1162+
nonce: test_manager.next_nonce(*FUNDED_ACCOUNT_ADDRESS),
1163+
};
1164+
let account_declare_tx = declare_tx(declare_tx_args);
1165+
let class_info = get_class_info_of_feature_contract(experimental_contract);
1166+
let tx =
1167+
DeclareTransaction::create(account_declare_tx, class_info, &CHAIN_ID_FOR_TESTS).unwrap();
1168+
test_manager.add_cairo1_declare_tx(tx, &experimental_contract_sierra);
1169+
1170+
// Deploy it.
1171+
let salt = ContractAddressSalt(Felt::ZERO);
1172+
let (deploy_tx, _experimental_contract_address) = get_deploy_contract_tx_and_address_with_salt(
1173+
experimental_class_hash,
1174+
Calldata::default(),
1175+
test_manager.next_nonce(*FUNDED_ACCOUNT_ADDRESS),
1176+
*NON_TRIVIAL_RESOURCE_BOUNDS,
1177+
salt,
1178+
);
1179+
test_manager.add_invoke_tx(deploy_tx, None);
1180+
1181+
let test_output = test_manager
1182+
.execute_test_with_default_block_contexts(&TestParameters {
1183+
use_kzg_da,
1184+
..Default::default()
1185+
})
1186+
.await;
1187+
test_output.perform_default_validations();
11431188

11441189
// Validate poseidon usage.
11451190
// TODO(Meshi): Add blake opcode validations.
11461191
let poseidons = test_output.get_builtin_usage(&BuiltinName::poseidon);
11471192
if use_kzg_da {
11481193
expect![[r#"
1149-
104
1194+
58
11501195
"#]]
11511196
.assert_debug_eq(&poseidons);
11521197
} else {
11531198
expect![[r#"
1154-
96
1199+
49
11551200
"#]]
11561201
.assert_debug_eq(&poseidons);
11571202
}
@@ -1351,36 +1396,6 @@ async fn test_new_class_flow(#[case] use_kzg_da: bool, #[case] n_blocks_in_multi
13511396
create_calldata(main_contract_address, "test_signature_verification_secp256r1", &[]);
13521397
test_manager.add_funded_account_invoke(invoke_tx_args! { calldata });
13531398

1354-
// Declare the experimental contract.
1355-
let experimental_contract = FeatureContract::Experimental;
1356-
let experimental_contract_sierra = experimental_contract.get_sierra();
1357-
let experimental_class_hash = experimental_contract_sierra.calculate_class_hash();
1358-
let experimental_compiled_class_hash =
1359-
experimental_contract.get_compiled_class_hash(&HashVersion::V2);
1360-
let declare_tx_args = declare_tx_args! {
1361-
sender_address: *FUNDED_ACCOUNT_ADDRESS,
1362-
class_hash: experimental_class_hash,
1363-
compiled_class_hash: experimental_compiled_class_hash,
1364-
resource_bounds: *NON_TRIVIAL_RESOURCE_BOUNDS,
1365-
nonce: test_manager.next_nonce(*FUNDED_ACCOUNT_ADDRESS),
1366-
};
1367-
let account_declare_tx = declare_tx(declare_tx_args);
1368-
let class_info = get_class_info_of_feature_contract(experimental_contract);
1369-
let tx =
1370-
DeclareTransaction::create(account_declare_tx, class_info, &CHAIN_ID_FOR_TESTS).unwrap();
1371-
test_manager.add_cairo1_declare_tx(tx, &experimental_contract_sierra);
1372-
1373-
// Deploy it.
1374-
let salt = ContractAddressSalt(Felt::ZERO);
1375-
let (deploy_tx, _experimental_contract_address) = get_deploy_contract_tx_and_address_with_salt(
1376-
experimental_class_hash,
1377-
Calldata::default(),
1378-
test_manager.next_nonce(*FUNDED_ACCOUNT_ADDRESS),
1379-
*NON_TRIVIAL_RESOURCE_BOUNDS,
1380-
salt,
1381-
);
1382-
test_manager.add_invoke_tx(deploy_tx, None);
1383-
13841399
// Call test_sha256.
13851400
let calldata = create_calldata(main_contract_address, "test_sha256", &[]);
13861401
test_manager.add_funded_account_invoke(invoke_tx_args! { calldata });
@@ -1562,19 +1577,4 @@ async fn test_new_class_flow(#[case] use_kzg_da: bool, #[case] n_blocks_in_multi
15621577
test_output.assert_account_balance_change(*FUNDED_ACCOUNT_ADDRESS);
15631578
test_output.assert_account_balance_change(faulty_account_address);
15641579
test_output.assert_account_balance_change(contract_address!(TEST_SEQUENCER_ADDRESS));
1565-
1566-
// Validate poseidon usage.
1567-
// TODO(Meshi): Add blake opcode validations.
1568-
let poseidons = test_output.get_builtin_usage(&BuiltinName::poseidon);
1569-
if use_kzg_da {
1570-
expect![[r#"
1571-
598
1572-
"#]]
1573-
.assert_debug_eq(&poseidons);
1574-
} else {
1575-
expect![[r#"
1576-
490
1577-
"#]]
1578-
.assert_debug_eq(&poseidons);
1579-
}
15801580
}

0 commit comments

Comments
 (0)