Skip to content

Commit 100f082

Browse files
Stavbegabrielbosio
authored andcommitted
add test to filling holes (#2087)
1 parent e7be0d8 commit 100f082

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
%builtins poseidon
2+
from starkware.cairo.common.cairo_builtins import PoseidonBuiltin
3+
from starkware.cairo.common.poseidon_state import PoseidonBuiltinState
4+
5+
func main{poseidon_ptr: PoseidonBuiltin*}() {
6+
assert poseidon_ptr[0].input = PoseidonBuiltinState(1, 2, 3);
7+
let result = poseidon_ptr[0].output;
8+
let poseidon_ptr = poseidon_ptr + PoseidonBuiltin.SIZE;
9+
assert result.s0 = 442682200349489646213731521593476982257703159825582578145778919623645026501;
10+
assert result.s2 = 2512222140811166287287541003826449032093371832913959128171347018667852712082;
11+
return ();
12+
}

vm/src/vm/runners/cairo_runner.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5665,6 +5665,42 @@ mod tests {
56655665
assert!(cairo_runner.vm.segments.memory.data[8].len() as u32 % CELLS_PER_KECCAK == 0);
56665666
}
56675667

5668+
#[test]
5669+
// TODO(Stav): add another test that checks filling holes in the middle of the segment.
5670+
fn end_run_fill_middle_holes() {
5671+
let program = Program::from_bytes(
5672+
include_bytes!("../../../../cairo_programs/proof_programs/poseidon_builtin_hole.json"),
5673+
Some("main"),
5674+
)
5675+
.unwrap();
5676+
5677+
let mut hint_processor = BuiltinHintProcessor::new_empty();
5678+
let mut cairo_runner = cairo_runner!(program, LayoutName::all_cairo, true, true);
5679+
5680+
let end = cairo_runner.initialize(false).unwrap();
5681+
cairo_runner
5682+
.run_until_pc(end, &mut hint_processor)
5683+
.expect("Call to `CairoRunner::run_until_pc()` failed.");
5684+
5685+
// Before end run
5686+
assert!(cairo_runner.vm.segments.memory.data[9][4].is_none());
5687+
5688+
assert_matches!(
5689+
cairo_runner.end_run(false, false, &mut hint_processor),
5690+
Ok(())
5691+
);
5692+
5693+
// After end run
5694+
assert!(!cairo_runner.vm.segments.memory.data[9][4].is_none());
5695+
5696+
// // Check prover input info
5697+
let prover_input = cairo_runner
5698+
.get_prover_input_info()
5699+
.expect("Failed to get prover input info");
5700+
assert!(prover_input.relocatable_memory[9][4].is_some());
5701+
assert!(prover_input.builtins_segments.get(&9) == Some(&BuiltinName::poseidon));
5702+
}
5703+
56685704
#[rstest]
56695705
#[case(include_bytes!("../../../../cairo_programs/proof_programs/fibonacci.json"))]
56705706
#[case(include_bytes!("../../../../cairo_programs/proof_programs/bitwise_output.json"))]

0 commit comments

Comments
 (0)