Skip to content

Commit 627c1ac

Browse files
authored
add test to filling holes (#2087)
1 parent da5dffd commit 627c1ac

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
@@ -5661,6 +5661,42 @@ mod tests {
56615661
assert!(cairo_runner.vm.segments.memory.data[8].len() as u32 % CELLS_PER_KECCAK == 0);
56625662
}
56635663

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

0 commit comments

Comments
 (0)