@@ -844,6 +844,53 @@ mod tests_context {
844844 "No context with last_id failed"
845845 ) ;
846846 }
847+
848+ #[ test]
849+ fn test_iter_frames_context_scope_with_last_id ( ) {
850+ let temp_dir = tempfile:: tempdir ( ) . unwrap ( ) ;
851+ let store = Store :: new ( temp_dir. path ( ) . to_path_buf ( ) ) ;
852+
853+ // Create two distinct contexts
854+ let ctx1 = store
855+ . append ( Frame :: builder ( "xs.context" , ZERO_CONTEXT ) . build ( ) )
856+ . unwrap ( )
857+ . id ;
858+ let ctx2 = store
859+ . append ( Frame :: builder ( "xs.context" , ZERO_CONTEXT ) . build ( ) )
860+ . unwrap ( )
861+ . id ;
862+
863+ // Add frames in context 1
864+ let ctx1_frame1 = store. append ( Frame :: builder ( "test" , ctx1) . build ( ) ) . unwrap ( ) ;
865+ let ctx1_frame2 = store. append ( Frame :: builder ( "test" , ctx1) . build ( ) ) . unwrap ( ) ;
866+
867+ // Add frames in context 2
868+ let ctx2_frame1 = store. append ( Frame :: builder ( "test" , ctx2) . build ( ) ) . unwrap ( ) ;
869+ let ctx2_frame2 = store. append ( Frame :: builder ( "test" , ctx2) . build ( ) ) . unwrap ( ) ;
870+
871+ // Attempt to iterate from ctx1_frame1 in ctx1
872+ let frames_ctx1: Vec < _ > = store
873+ . iter_frames ( Some ( ctx1) , Some ( & ctx1_frame1. id ) )
874+ . collect ( ) ;
875+
876+ // Verify we ONLY get ctx1_frame2
877+ assert_eq ! ( frames_ctx1, vec![ ctx1_frame2. clone( ) ] ) ;
878+
879+ // Attempt to iterate from ctx1_frame1 but incorrectly across contexts
880+ let frames_cross_context: Vec < _ > = store
881+ . iter_frames ( Some ( ctx1) , Some ( & ctx1_frame2. id ) )
882+ . collect ( ) ;
883+
884+ // This should yield NO frames, as ctx1_frame2 is the last in ctx1
885+ assert ! (
886+ frames_cross_context. is_empty( ) ,
887+ "Iterator incorrectly traversed beyond context boundary"
888+ ) ;
889+
890+ // Additionally, ensure iterating in ctx2 doesn't return frames from ctx1
891+ let frames_ctx2: Vec < _ > = store. iter_frames ( Some ( ctx2) , None ) . collect ( ) ;
892+ assert_eq ! ( frames_ctx2, vec![ ctx2_frame1, ctx2_frame2] ) ;
893+ }
847894}
848895
849896mod tests_ttl_expire {
0 commit comments