@@ -182,7 +182,7 @@ class SegmentedUberStoreTest extends NiceTest {
182
182
}
183
183
184
184
describe(" foldLeftRange" ) {
185
- it(" should reflect livedir's nextSeq " ) {
185
+ it(" should include livedir's events " ) {
186
186
createSegment(dir, " 1" )
187
187
createSegment(dir, " 5" )
188
188
createSegment(dir, " 10" )
@@ -197,6 +197,38 @@ class SegmentedUberStoreTest extends NiceTest {
197
197
}
198
198
}
199
199
200
+ describe(" foldLeftWhile" ) {
201
+ it(" should limit events based on predicate on accumulator" ) {
202
+ createPopulatedSegment(dir, " 1" , Range .inclusive(1 , 3 ).toList)
203
+ createPopulatedSegment(dir, " 5" , Range .inclusive(4 , 6 ).toList)
204
+ createPopulatedSegment(dir, " 10" , Range .inclusive(7 , 9 ).toList)
205
+ uberstore = SegmentedUberStore (dir.getAbsolutePath, new SiriusConfiguration )
206
+ uberstore.writeEntry(OrderedEvent (10L , 1L , Delete (" 10" )))
207
+ uberstore.writeEntry(OrderedEvent (11L , 1L , Delete (" 11" )))
208
+
209
+ val result = uberstore.foldLeftWhile(startSeq = 1 )(List [SiriusRequest ]())(list => list.size < 5 )(
210
+ (acc, event) => event.request +: acc
211
+ ).reverse
212
+
213
+ assert(result === List (Delete (" 1" ), Delete (" 2" ), Delete (" 3" ), Delete (" 4" ), Delete (" 5" )))
214
+ }
215
+
216
+ it(" should include livedir's events" ) {
217
+ createPopulatedSegment(dir, " 1" , Range .inclusive(1 , 3 ).toList)
218
+ createPopulatedSegment(dir, " 5" , Range .inclusive(4 , 6 ).toList)
219
+ createPopulatedSegment(dir, " 10" , Range .inclusive(7 , 9 ).toList)
220
+ uberstore = SegmentedUberStore (dir.getAbsolutePath, new SiriusConfiguration )
221
+ uberstore.writeEntry(OrderedEvent (10L , 1L , Delete (" 10" )))
222
+ uberstore.writeEntry(OrderedEvent (11L , 1L , Delete (" 11" )))
223
+
224
+ val result = uberstore.foldLeftWhile(startSeq = 9 )(List [SiriusRequest ]())(list => list.size < 2 )(
225
+ (acc, event) => event.request +: acc
226
+ ).reverse
227
+
228
+ assert(result === List (Delete (" 9" ), Delete (" 10" )))
229
+ }
230
+ }
231
+
200
232
describe(" parallelForeach" ) {
201
233
it(" should bootstrap the uberstore in parallel" ) {
202
234
createPopulatedSegment(dir, " 1" , Range .inclusive(1 , 3 ).toList, isApplied = true )
0 commit comments