@@ -452,3 +452,64 @@ def test_window() -> None:
452452    assert  [0 , 1 , 2 ] ==  list (win )
453453    win  =  buffer .window (dt (0 ), dt (3 ), force_copy = False )
454454    assert  [0 , 1 , 2 ] ==  list (win )
455+ 
456+ 
457+ def  test_wrapped_buffer_window () ->  None :
458+     """Test the wrapped buffer window function.""" 
459+     wbw  =  OrderedRingBuffer ._wrapped_buffer_window   # pylint: disable=protected-access 
460+ 
461+     # 
462+     # Tests for list buffer 
463+     # 
464+     buffer  =  [0.0 , 1.0 , 2.0 , 3.0 , 4.0 ]
465+     # start = end 
466+     assert  [0 , 1 , 2 , 3 , 4 ] ==  wbw (buffer , 0 , 0 , force_copy = False )
467+     assert  [4 , 0 , 1 , 2 , 3 ] ==  wbw (buffer , 4 , 4 , force_copy = False )
468+     # start < end 
469+     assert  [0 ] ==  wbw (buffer , 0 , 1 , force_copy = False )
470+     assert  [0 , 1 , 2 , 3 , 4 ] ==  wbw (buffer , 0 , 5 , force_copy = False )
471+     # start > end, end = 0 
472+     assert  [4 ] ==  wbw (buffer , 4 , 0 , force_copy = False )
473+     # start > end, end > 0 
474+     assert  [4 , 0 , 1 ] ==  wbw (buffer , 4 , 2 , force_copy = False )
475+ 
476+     # Lists are always shallow copies 
477+     res_copy  =  wbw (buffer , 0 , 5 , force_copy = False )
478+     assert  [0 , 1 , 2 , 3 , 4 ] ==  res_copy 
479+     buffer [0 ] =  9 
480+     assert  [0 , 1 , 2 , 3 , 4 ] ==  res_copy 
481+ 
482+     # 
483+     # Tests for array buffer 
484+     # 
485+     buffer  =  np .array ([0 , 1 , 2 , 3 , 4 ])  # type: ignore 
486+     # start = end 
487+     assert  [0 , 1 , 2 , 3 , 4 ] ==  list (wbw (buffer , 0 , 0 , force_copy = False ))
488+     assert  [4 , 0 , 1 , 2 , 3 ] ==  list (wbw (buffer , 4 , 4 , force_copy = False ))
489+     # start < end 
490+     assert  [0 ] ==  list (wbw (buffer , 0 , 1 , force_copy = False ))
491+     assert  [0 , 1 , 2 , 3 , 4 ] ==  list (wbw (buffer , 0 , 5 , force_copy = False ))
492+     # start > end, end = 0 
493+     assert  [4 ] ==  list (wbw (buffer , 4 , 0 , force_copy = False ))
494+     # start > end, end > 0 
495+     assert  [4 , 0 , 1 ] ==  list (wbw (buffer , 4 , 2 , force_copy = False ))
496+ 
497+     # Get a view and a copy before modifying the buffer 
498+     res1_view  =  wbw (buffer , 3 , 5 , force_copy = False )
499+     res1_copy  =  wbw (buffer , 3 , 5 , force_copy = True )
500+     res2_view  =  wbw (buffer , 3 , 0 , force_copy = False )
501+     res2_copy  =  wbw (buffer , 3 , 0 , force_copy = True )
502+     res3_copy  =  wbw (buffer , 4 , 1 , force_copy = False )
503+     assert  [3 , 4 ] ==  list (res1_view )
504+     assert  [3 , 4 ] ==  list (res1_copy )
505+     assert  [3 , 4 ] ==  list (res2_view )
506+     assert  [3 , 4 ] ==  list (res2_copy )
507+     assert  [4 , 0 ] ==  list (res3_copy )
508+ 
509+     # Modify the buffer and check that only the view is updated 
510+     buffer [4 ] =  9 
511+     assert  [3 , 9 ] ==  list (res1_view )
512+     assert  [3 , 4 ] ==  list (res1_copy )
513+     assert  [3 , 9 ] ==  list (res2_view )
514+     # assert [3, 4] == list(res2_copy) #Fails because of a bug 
515+     assert  [4 , 0 ] ==  list (res3_copy )
0 commit comments