253 }
254
255 @SafeVarargs
256 private final void testSliceMulti(TestData.OfRef<Integer> data,
257 int expectedSize,
258 Function<Stream<Integer>, Stream<Integer>>... ms) {
259 for (int i = 0; i < ms.length; i++) {
260 setContext("mIndex", i);
261 Function<Stream<Integer>, Stream<Integer>> m = ms[i];
262 Collection<Integer> sr = withData(data)
263 .stream(m)
264 .resultAsserter(sliceResultAsserter(data, expectedSize))
265 .exercise();
266 assertEquals(sr.size(), expectedSize);
267 }
268 }
269
270 public void testLimitSort() {
271 List<Integer> l = countTo(100);
272 Collections.reverse(l);
273 exerciseOps(l, s -> s.limit(10).sorted(Comparators.naturalOrder()));
274 }
275
276 @Test(groups = { "serialization-hostile" })
277 public void testLimitShortCircuit() {
278 for (int l : Arrays.asList(0, 10)) {
279 setContext("l", l);
280 AtomicInteger ai = new AtomicInteger();
281 countTo(100).stream()
282 .peek(i -> ai.getAndIncrement())
283 .limit(l).toArray();
284 // For the case of a zero limit, one element will get pushed through the sink chain
285 assertEquals(ai.get(), l, "tee block was called too many times");
286 }
287 }
288
289 private List<Integer> sizes(int size) {
290 if (size < 4) {
291 return Arrays.asList(0, 1, 2, 3, 4, 6);
292 }
293 else {
|
253 }
254
255 @SafeVarargs
256 private final void testSliceMulti(TestData.OfRef<Integer> data,
257 int expectedSize,
258 Function<Stream<Integer>, Stream<Integer>>... ms) {
259 for (int i = 0; i < ms.length; i++) {
260 setContext("mIndex", i);
261 Function<Stream<Integer>, Stream<Integer>> m = ms[i];
262 Collection<Integer> sr = withData(data)
263 .stream(m)
264 .resultAsserter(sliceResultAsserter(data, expectedSize))
265 .exercise();
266 assertEquals(sr.size(), expectedSize);
267 }
268 }
269
270 public void testLimitSort() {
271 List<Integer> l = countTo(100);
272 Collections.reverse(l);
273 exerciseOps(l, s -> s.limit(10).sorted(Comparator.naturalOrder()));
274 }
275
276 @Test(groups = { "serialization-hostile" })
277 public void testLimitShortCircuit() {
278 for (int l : Arrays.asList(0, 10)) {
279 setContext("l", l);
280 AtomicInteger ai = new AtomicInteger();
281 countTo(100).stream()
282 .peek(i -> ai.getAndIncrement())
283 .limit(l).toArray();
284 // For the case of a zero limit, one element will get pushed through the sink chain
285 assertEquals(ai.get(), l, "tee block was called too many times");
286 }
287 }
288
289 private List<Integer> sizes(int size) {
290 if (size < 4) {
291 return Arrays.asList(0, 1, 2, 3, 4, 6);
292 }
293 else {
|