@@ -115,3 +115,36 @@ def test_arrow_streamset_to_dataframe(conn, tmp_collection):
115
115
}
116
116
expected_df = pd .DataFrame (expected_dat , index = pd .DatetimeIndex (expected_times ))
117
117
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