File tree Expand file tree Collapse file tree 2 files changed +27
-0
lines changed
Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -657,6 +657,7 @@ impl<I: SliceIterator<Interval>> RunIter<I> {
657657 self . forward_offset = value;
658658 } else {
659659 self . intervals . next ( ) ;
660+ self . forward_offset = 0 ;
660661 return ;
661662 }
662663 let total_offset = u64:: from ( self . forward_offset )
@@ -676,6 +677,7 @@ impl<I: SliceIterator<Interval>> RunIter<I> {
676677 self . backward_offset = value;
677678 } else {
678679 self . intervals . next_back ( ) ;
680+ self . backward_offset = 0 ;
679681 return ;
680682 }
681683 let total_offset = u64:: from ( self . backward_offset )
Original file line number Diff line number Diff line change @@ -210,6 +210,31 @@ fn interleaved_bitmap() {
210210 assert ! ( outside_in( values) . eq( outside_in( bitmap) ) ) ;
211211}
212212
213+ #[ test]
214+ fn run_nth_max ( ) {
215+ let mut bitmap = RoaringBitmap :: new ( ) ;
216+ bitmap. insert_range ( 0 ..0x1_0000 ) ;
217+ let mut iter = bitmap. iter ( ) ;
218+ assert_eq ! ( iter. nth( 0x0_FFFF ) , Some ( 0x0_FFFF ) ) ;
219+ assert_eq ! ( iter. len( ) , 0 ) ;
220+ #[ allow( clippy:: iter_nth_zero) ]
221+ {
222+ assert_eq ! ( iter. nth( 0 ) , None ) ;
223+ }
224+ assert_eq ! ( iter. next( ) , None ) ;
225+ }
226+
227+ #[ test]
228+ fn run_nth_back_max ( ) {
229+ let mut bitmap = RoaringBitmap :: new ( ) ;
230+ bitmap. insert_range ( 0 ..0x1_0000 ) ;
231+ let mut iter = bitmap. iter ( ) ;
232+ assert_eq ! ( iter. nth_back( 0x0_FFFF ) , Some ( 0 ) ) ;
233+ assert_eq ! ( iter. len( ) , 0 ) ;
234+ assert_eq ! ( iter. nth_back( 0 ) , None ) ;
235+ assert_eq ! ( iter. next_back( ) , None ) ;
236+ }
237+
213238proptest ! {
214239 #[ test]
215240 fn interleaved_iter( values in btree_set( any:: <u32 >( ) , 50_000 ..=100_000 ) ) {
You can’t perform that action at this time.
0 commit comments