@@ -522,3 +522,64 @@ def test_window() -> None:
522522    assert  [0 , 1 , 2 ] ==  list (win )
523523    win  =  buffer .window (dt (0 ), dt (3 ), force_copy = False )
524524    assert  [0 , 1 , 2 ] ==  list (win )
525+ 
526+ 
527+ def  test_wrapped_buffer_window () ->  None :
528+     """Test the wrapped buffer window function.""" 
529+     wbw  =  OrderedRingBuffer ._wrapped_buffer_window   # pylint: disable=protected-access 
530+ 
531+     # 
532+     # Tests for list buffer 
533+     # 
534+     buffer  =  [0.0 , 1.0 , 2.0 , 3.0 , 4.0 ]
535+     # start = end 
536+     assert  [0 , 1 , 2 , 3 , 4 ] ==  wbw (buffer , 0 , 0 , force_copy = False )
537+     assert  [4 , 0 , 1 , 2 , 3 ] ==  wbw (buffer , 4 , 4 , force_copy = False )
538+     # start < end 
539+     assert  [0 ] ==  wbw (buffer , 0 , 1 , force_copy = False )
540+     assert  [0 , 1 , 2 , 3 , 4 ] ==  wbw (buffer , 0 , 5 , force_copy = False )
541+     # start > end, end = 0 
542+     assert  [4 ] ==  wbw (buffer , 4 , 0 , force_copy = False )
543+     # start > end, end > 0 
544+     assert  [4 , 0 , 1 ] ==  wbw (buffer , 4 , 2 , force_copy = False )
545+ 
546+     # Lists are always shallow copies 
547+     res_copy  =  wbw (buffer , 0 , 5 , force_copy = False )
548+     assert  [0 , 1 , 2 , 3 , 4 ] ==  res_copy 
549+     buffer [0 ] =  9 
550+     assert  [0 , 1 , 2 , 3 , 4 ] ==  res_copy 
551+ 
552+     # 
553+     # Tests for array buffer 
554+     # 
555+     buffer  =  np .array ([0 , 1 , 2 , 3 , 4 ])  # type: ignore 
556+     # start = end 
557+     assert  [0 , 1 , 2 , 3 , 4 ] ==  list (wbw (buffer , 0 , 0 , force_copy = False ))
558+     assert  [4 , 0 , 1 , 2 , 3 ] ==  list (wbw (buffer , 4 , 4 , force_copy = False ))
559+     # start < end 
560+     assert  [0 ] ==  list (wbw (buffer , 0 , 1 , force_copy = False ))
561+     assert  [0 , 1 , 2 , 3 , 4 ] ==  list (wbw (buffer , 0 , 5 , force_copy = False ))
562+     # start > end, end = 0 
563+     assert  [4 ] ==  list (wbw (buffer , 4 , 0 , force_copy = False ))
564+     # start > end, end > 0 
565+     assert  [4 , 0 , 1 ] ==  list (wbw (buffer , 4 , 2 , force_copy = False ))
566+ 
567+     # Get a view and a copy before modifying the buffer 
568+     res1_view  =  wbw (buffer , 3 , 5 , force_copy = False )
569+     res1_copy  =  wbw (buffer , 3 , 5 , force_copy = True )
570+     res2_view  =  wbw (buffer , 3 , 0 , force_copy = False )
571+     res2_copy  =  wbw (buffer , 3 , 0 , force_copy = True )
572+     res3_copy  =  wbw (buffer , 4 , 1 , force_copy = False )
573+     assert  [3 , 4 ] ==  list (res1_view )
574+     assert  [3 , 4 ] ==  list (res1_copy )
575+     assert  [3 , 4 ] ==  list (res2_view )
576+     assert  [3 , 4 ] ==  list (res2_copy )
577+     assert  [4 , 0 ] ==  list (res3_copy )
578+ 
579+     # Modify the buffer and check that only the view is updated 
580+     buffer [4 ] =  9 
581+     assert  [3 , 9 ] ==  list (res1_view )
582+     assert  [3 , 4 ] ==  list (res1_copy )
583+     assert  [3 , 9 ] ==  list (res2_view )
584+     # assert [3, 4] == list(res2_copy) #Fails because of a bug 
585+     assert  [4 , 0 ] ==  list (res3_copy )
0 commit comments