@@ -182,7 +182,7 @@ class SegmentedUberStoreTest extends NiceTest {
182182 }
183183
184184 describe(" foldLeftRange" ) {
185- it(" should reflect livedir's nextSeq " ) {
185+ it(" should include livedir's events " ) {
186186 createSegment(dir, " 1" )
187187 createSegment(dir, " 5" )
188188 createSegment(dir, " 10" )
@@ -197,6 +197,38 @@ class SegmentedUberStoreTest extends NiceTest {
197197 }
198198 }
199199
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+
200232 describe(" parallelForeach" ) {
201233 it(" should bootstrap the uberstore in parallel" ) {
202234 createPopulatedSegment(dir, " 1" , Range .inclusive(1 , 3 ).toList, isApplied = true )
0 commit comments