From 39f4c3a0767a9453eda1252dca785ef12dcfd9be Mon Sep 17 00:00:00 2001 From: mmsc2 <88055861+mmsc2@users.noreply.github.com> Date: Fri, 12 May 2023 18:10:09 -0300 Subject: [PATCH] Alloc felt dict test (#1125) * Implement TryFrom for Program * Add cairo1hintprocessor dependency * Map hints to pc * Add Cairo1HintProcessor * Move cairo-1-hint-processor to cairo-rs crate * fixes * Fix test helper * Remove allow * fix test func * Add builtins to test * Extract builtins from contract_class * Add _builtin to builtin names in etrypoint data * Copy logic from cairo1 contract execution in starknet * Remove unused code * Use lower initial_gas value * Add program segment size argument * Check return values in run_cairo_1_entrypoint fn * Remove debug prints * Add basic fibonacci test * Add another fibonacci case * Always verify secure * Clippy * Compile casm contracts when running test target * Remove unwrap from cell_ref_to_relocatable * Remove paniking macro from extract_buffer * Misc improvements * Misc improvements * Misc improvements * Misc improvements * Remove unwraps & asserts from DictSquashExecScope::pop_current_key * Remove unwraps & asserts from DictManagerExecScope::new_default_dict * Remove expect from get_dict_tracker * Add constants for cairo 1 compiler binaries in makefile * Add cairo 1 compiler to deps target in makefile * Add cairo folder to clean target * Remove todo from execute method * Separate helper functions from Cairo1HintProcessor implementation * Add untracked file * Fix * Add changelog entry * Add a job to compile cairo 1 contracts in ci * Add job dependency * Fix yml syntax * Fix yml syntax * Temporarily extempt cairo-1-hint-processor from codecov * Fix yml syntax * Fix workflow * Remove cache code from new job * Fix yml syntax * Fix wrong path * Fix makefile * Build only compiler binaries * Add cairo-1-contracts-cache * Fetch contracts cache in jobs that need them * Use no-std version of HashMap * Import stdlib::prelude::* * Wrap print in not-wasm block * Remove std path * use slices instead of vec * Make DictSquashExecScope fields private * Import hint processor dependencies without default features * -Clippy * Add type * Compile cairo 1 contracts in build-programs job * Rename cache * Use target dependency instead of explicit $(MAKE) * Fix yml syntax * Check for cairo folder before cloning cairo repo * Ommit folder name * Swap paths * Add cairo-1-hints feature flag * Add alloc dict hint test * Modify .gitignore * Add compile-hint feature to tests run in workflow * Add cairo-1-hints to test_utils * Add cairo-1-hints to test_utils * Use both paths when fetching compiled test data * Remove cairo-1-hints feature from test_utils feature * Move dependencies to cairo-1-hints feature * Update CHANGELOG.md * Fix cfg directive * Add new lines at the end of the files and modify Changelog * Add cairo-1-hints to test workflow * Add Cairo 1 considerations for Gitignore and Makefile (#1144) * Add ignore for casm and sierra files * Add libfunc experimental for cairo 1 compilation * Add new enty to CHANGELOG * Add feature cairo-1-hint to test * Fix changelog * Change contract name and move test to other file * Delete submodule cairo * restore hint_processor.rs * cargo clippy * cargo clippy --------- Co-authored-by: Federica Co-authored-by: fmoletta <99273364+fmoletta@users.noreply.github.com> Co-authored-by: Roberto Catalan Co-authored-by: Pedro Fontana --- cairo_programs/cairo-1-contracts/felt_252_dict.cairo | 12 ++++++++++++ src/tests/cairo_1_run_from_entrypoint_tests.rs | 7 +++++++ 2 files changed, 19 insertions(+) create mode 100644 cairo_programs/cairo-1-contracts/felt_252_dict.cairo diff --git a/cairo_programs/cairo-1-contracts/felt_252_dict.cairo b/cairo_programs/cairo-1-contracts/felt_252_dict.cairo new file mode 100644 index 0000000000..8dabb27bb2 --- /dev/null +++ b/cairo_programs/cairo-1-contracts/felt_252_dict.cairo @@ -0,0 +1,12 @@ +#[contract] +mod Felt252Dict { + +use dict::{felt252_dict_entry_finalize, Felt252DictTrait}; + /// An external method that requires the `segment_arena` builtin. + #[external] + fn squash_empty_dict() -> bool { + let x = felt252_dict_new::(); + x.squash(); + return true; + } +} diff --git a/src/tests/cairo_1_run_from_entrypoint_tests.rs b/src/tests/cairo_1_run_from_entrypoint_tests.rs index 286fd045a8..35ad3dc2ad 100644 --- a/src/tests/cairo_1_run_from_entrypoint_tests.rs +++ b/src/tests/cairo_1_run_from_entrypoint_tests.rs @@ -467,6 +467,13 @@ fn linear_split() { ); } +#[test] +#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] +fn alloc_felt_252_dict() { + let program_data = include_bytes!("../../cairo_programs/cairo-1-contracts/felt_252_dict.casm"); + run_cairo_1_entrypoint(program_data.as_slice(), 0, &[], &[1.into()]); +} + #[test] #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] fn random_ec_point() {