@@ -115,3 +115,36 @@ def test_arrow_streamset_to_dataframe(conn, tmp_collection):
115115 }
116116 expected_df = pd .DataFrame (expected_dat , index = pd .DatetimeIndex (expected_times ))
117117 assert values .equals (expected_df )
118+
119+ def test_timesnap_backward_keeps_in_range (conn , tmp_collection ):
120+ sec = 10 ** 9
121+ tv = [
122+ [int (0.75 * sec ), 0.75 ],
123+ [1 * sec , 1.0 ],
124+ [2 * sec , 2.0 ],
125+ ]
126+ s = conn .create (new_uuid (), tmp_collection , tags = {"name" : "s" })
127+ s .insert (tv )
128+ ss = btrdb .stream .StreamSet ([s ]).filter (
129+ start = 1 * sec , end = 3 * sec , sampling_frequency = 1
130+ )
131+ values = ss .arrow_values ()
132+ assert [1 * sec , 2 * sec ] == [t .value for t in values ["time" ]]
133+ assert [1.0 , 2.0 ] == [v .as_py () for v in values [tmp_collection + "/s" ]]
134+
135+
136+ def test_timesnap_forward_keeps_in_range (conn , tmp_collection ):
137+ sec = 10 ** 9
138+ tv = [
139+ [1 * sec , 1.0 ],
140+ [2 * sec , 2.0 ],
141+ [int (2.75 * sec ), 2.75 ],
142+ ]
143+ s = conn .create (new_uuid (), tmp_collection , tags = {"name" : "s" })
144+ s .insert (tv )
145+ ss = btrdb .stream .StreamSet ([s ]).filter (start = 1 * sec , sampling_frequency = 1 )
146+ values = ss .filter (end = int (3.0 * sec )).arrow_values ()
147+ assert [1 * sec , 2 * sec ] == [t .value for t in values ["time" ]]
148+ assert [1.0 , 2.0 ] == [v .as_py () for v in values [tmp_collection + "/s" ]]
149+ # Same result if skipping past end instead of to end.
150+ assert values == ss .filter (end = int (2.9 * sec )).arrow_values ()
0 commit comments