@@ -192,6 +192,67 @@ def test_timestamp_ringbuffer_missing_parameter(
192192    assert  len (buffer .gaps ) ==  1 
193193
194194
195+ def  dt (i : int ) ->  datetime :  # pylint: disable=invalid-name 
196+     """Create datetime objects from indices. 
197+ 
198+     Args: 
199+         i: Index to create datetime from. 
200+ 
201+     Returns: 
202+         Datetime object. 
203+     """ 
204+     return  datetime .fromtimestamp (i , tz = timezone .utc )
205+ 
206+ 
207+ def  test_gaps () ->  None :
208+     """Test gap treatment in ordered ring buffer.""" 
209+     buffer  =  OrderedRingBuffer ([0.0 ] *  5 , ONE_SECOND )
210+     assert  len (buffer ) ==  0 
211+     assert  len (buffer .gaps ) ==  0 
212+ 
213+     buffer .update (Sample (dt (0 ), Quantity (0 )))
214+     assert  len (buffer ) ==  1 
215+     assert  len (buffer .gaps ) ==  1 
216+ 
217+     buffer .update (Sample (dt (6 ), Quantity (0 )))
218+     assert  len (buffer ) ==  1 
219+     assert  len (buffer .gaps ) ==  1 
220+ 
221+     buffer .update (Sample (dt (2 ), Quantity (2 )))
222+     buffer .update (Sample (dt (3 ), Quantity (3 )))
223+     buffer .update (Sample (dt (4 ), Quantity (4 )))
224+     assert  len (buffer ) ==  4 
225+     assert  len (buffer .gaps ) ==  1 
226+ 
227+     buffer .update (Sample (dt (3 ), None ))
228+     assert  len (buffer ) ==  3 
229+     assert  len (buffer .gaps ) ==  2 
230+ 
231+     buffer .update (Sample (dt (3 ), Quantity (np .nan )))
232+     assert  len (buffer ) ==  4   # should be 3 
233+     assert  len (buffer .gaps ) ==  1   # should be 2 
234+ 
235+     buffer .update (Sample (dt (2 ), Quantity (np .nan )))
236+     assert  len (buffer ) ==  4   # should be 2 
237+     assert  len (buffer .gaps ) ==  1   # should be 2 
238+ 
239+     buffer .update (Sample (dt (3 ), Quantity (3 )))
240+     assert  len (buffer ) ==  4   # should be 3 
241+     assert  len (buffer .gaps ) ==  1   # should be 2 
242+ 
243+     buffer .update (Sample (dt (2 ), Quantity (2 )))
244+     assert  len (buffer ) ==  4 
245+     assert  len (buffer .gaps ) ==  1 
246+ 
247+     buffer .update (Sample (dt (5 ), Quantity (5 )))
248+     assert  len (buffer ) ==  5 
249+     assert  len (buffer .gaps ) ==  0 
250+ 
251+     buffer .update (Sample (dt (99 ), None ))
252+     assert  len (buffer ) ==  4   # bug: should be 0 (whole range gap) 
253+     assert  len (buffer .gaps ) ==  1 
254+ 
255+ 
195256@pytest .mark .parametrize ( 
196257    "buffer" , 
197258    [ 
0 commit comments