@@ -5661,6 +5661,42 @@ mod tests {
5661
5661
assert ! ( cairo_runner. vm. segments. memory. data[ 8 ] . len( ) as u32 % CELLS_PER_KECCAK == 0 ) ;
5662
5662
}
5663
5663
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
+
5664
5700
#[ rstest]
5665
5701
#[ case( include_bytes!( "../../../../cairo_programs/proof_programs/fibonacci.json" ) ) ]
5666
5702
#[ case( include_bytes!( "../../../../cairo_programs/proof_programs/bitwise_output.json" ) ) ]
0 commit comments