@@ -5696,6 +5696,42 @@ mod tests {
56965696 assert ! ( cairo_runner. vm. segments. memory. data[ 8 ] . len( ) as u32 % CELLS_PER_KECCAK == 0 ) ;
56975697 }
56985698
5699+ #[ test]
5700+ // TODO(Stav): add another test that checks filling holes in the middle of the segment.
5701+ fn end_run_fill_middle_holes ( ) {
5702+ let program = Program :: from_bytes (
5703+ include_bytes ! ( "../../../../cairo_programs/proof_programs/poseidon_builtin_hole.json" ) ,
5704+ Some ( "main" ) ,
5705+ )
5706+ . unwrap ( ) ;
5707+
5708+ let mut hint_processor = BuiltinHintProcessor :: new_empty ( ) ;
5709+ let mut cairo_runner = cairo_runner ! ( program, LayoutName :: all_cairo, true , true ) ;
5710+
5711+ let end = cairo_runner. initialize ( false ) . unwrap ( ) ;
5712+ cairo_runner
5713+ . run_until_pc ( end, & mut hint_processor)
5714+ . expect ( "Call to `CairoRunner::run_until_pc()` failed." ) ;
5715+
5716+ // Before end run
5717+ assert ! ( cairo_runner. vm. segments. memory. data[ 9 ] [ 4 ] . is_none( ) ) ;
5718+
5719+ assert_matches ! (
5720+ cairo_runner. end_run( false , false , & mut hint_processor) ,
5721+ Ok ( ( ) )
5722+ ) ;
5723+
5724+ // After end run
5725+ assert ! ( !cairo_runner. vm. segments. memory. data[ 9 ] [ 4 ] . is_none( ) ) ;
5726+
5727+ // // Check prover input info
5728+ let prover_input = cairo_runner
5729+ . get_prover_input_info ( )
5730+ . expect ( "Failed to get prover input info" ) ;
5731+ assert ! ( prover_input. relocatable_memory[ 9 ] [ 4 ] . is_some( ) ) ;
5732+ assert ! ( prover_input. builtins_segments. get( & 9 ) == Some ( & BuiltinName :: poseidon) ) ;
5733+ }
5734+
56995735 #[ rstest]
57005736 #[ case( include_bytes!( "../../../../cairo_programs/proof_programs/fibonacci.json" ) ) ]
57015737 #[ case( include_bytes!( "../../../../cairo_programs/proof_programs/bitwise_output.json" ) ) ]
0 commit comments