From 8ec01cb816fa52c9be50084a17b4be8be769dd26 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 3 Jan 2022 11:14:09 +0100 Subject: [PATCH] Fix spliterator size hint in `CloseableIterator.spliterator()`. We now report -1 as size to avoid zero-size results for count() or toList() operators. Closes #2519 --- .../data/util/CloseableIteratorUnitTests.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/test/java/org/springframework/data/util/CloseableIteratorUnitTests.java b/src/test/java/org/springframework/data/util/CloseableIteratorUnitTests.java index a26c11f2e..1ed9f2709 100644 --- a/src/test/java/org/springframework/data/util/CloseableIteratorUnitTests.java +++ b/src/test/java/org/springframework/data/util/CloseableIteratorUnitTests.java @@ -34,7 +34,7 @@ class CloseableIteratorUnitTests { @Test // DATACMNS-1637 void shouldCreateStream() { - var iterator = new CloseableIteratorImpl(Arrays.asList("1", "2", "3").iterator()); + var iterator = new CloseableIteratorImpl<>(Arrays.asList("1", "2", "3").iterator()); var collection = iterator.stream().map(it -> "hello " + it).collect(Collectors.toList()); @@ -45,9 +45,9 @@ class CloseableIteratorUnitTests { @Test // GH-2519 void shouldCount() { - CloseableIteratorImpl iterator = new CloseableIteratorImpl<>(Arrays.asList("1", "2", "3").iterator()); + var iterator = new CloseableIteratorImpl<>(Arrays.asList("1", "2", "3").iterator()); - long count = iterator.stream().count(); + var count = iterator.stream().count(); assertThat(count).isEqualTo(3); } @@ -55,17 +55,27 @@ class CloseableIteratorUnitTests { @Test // GH-2519 void shouldCountLargeStream() { - CloseableIteratorImpl iterator = new CloseableIteratorImpl<>(IntStream.range(0, 2048).boxed().iterator()); + var iterator = new CloseableIteratorImpl<>(IntStream.range(0, 2048).boxed().iterator()); - long count = iterator.stream().count(); + var count = iterator.stream().count(); assertThat(count).isEqualTo(2048); } + @Test // GH-2519 + void shouldApplyToList() { + + var iterator = new CloseableIteratorImpl<>(Arrays.asList("1", "2", "3").iterator()); + + var list = iterator.stream().toList(); + + assertThat(list).isEqualTo(Arrays.asList("1", "2", "3")); + } + @Test // DATACMNS-1637 void closeStreamShouldCloseIterator() { - var iterator = new CloseableIteratorImpl(Arrays.asList("1", "2", "3").iterator()); + var iterator = new CloseableIteratorImpl<>(Arrays.asList("1", "2", "3").iterator()); try (var stream = iterator.stream()) { assertThat(stream.findFirst()).hasValue("1");