Skip to content

Commit

Permalink
Add test for hint FieldSqrt (lambdaclass#1162)
Browse files Browse the repository at this point in the history
* Implement TryFrom<CasmContractClass> 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 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 cairo-1-hints to test workflow

* Add Cairo 1 considerations for Gitignore and Makefile (lambdaclass#1144)

* Add ignore for casm and sierra files

* Add libfunc experimental for cairo 1 compilation

* Add new enty to CHANGELOG

* Add test for RandomEcPoint hint

* Add rust test for Cairo 1 program

* Fix Cairo 1 program

* Change contract & Add activate feature for Cairo 1

* Add new entry to Changelog

* Restore CHANGELOG.md

* Restore Cargo.toml

* Add eof new line

* Add more coverage to the test

* Refactor contract test

* Fix LinearSplit hint

* Add fix entry to the CHANGELOG

* Remove outdated comment

* Add test for FieldSqrt

* Remove CHANGELOG entry

* Fix Cairo 1 contract & test

* Add new line EOF Cairo 1 contract

---------

Co-authored-by: Federica <[email protected]>
Co-authored-by: fmoletta <[email protected]>
Co-authored-by: Pedro Fontana <[email protected]>
  • Loading branch information
4 people authored and kariy committed Jun 23, 2023
1 parent 14cb620 commit 73b233c
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
19 changes: 19 additions & 0 deletions cairo_programs/cairo-1-contracts/field_sqrt.cairo
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#[contract]
mod FieldSqrt {
use core::traits::Into;
use option::OptionTrait;
use ec::ec_point_from_x;
use ec::ec_point_non_zero;
use ec::ec_point_unwrap;

#[external]
fn field_sqrt() -> felt252 {
let p = ec_point_from_x(10).unwrap();
let p_nz = ec_point_non_zero(p);

let (qx, _) = ec_point_unwrap(p_nz);

assert(qx == 10, 'bad finalize x');
qx
}
}
7 changes: 7 additions & 0 deletions src/tests/cairo_1_run_from_entrypoint_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -520,3 +520,10 @@ fn widelmul128_test() {
&[1_usize.into()],
);
}

#[test]
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
fn field_sqrt_test() {
let program_data = include_bytes!("../../cairo_programs/cairo-1-contracts/field_sqrt.casm");
run_cairo_1_entrypoint(program_data.as_slice(), 0, &[], &[10.into()]);
}

0 comments on commit 73b233c

Please sign in to comment.