@@ -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