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