20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 /*
25 * @test
26 * @summary close handlers and closing streams
27 * @bug 8044047
28 */
29
30 package org.openjdk.tests.java.util.stream;
31
32 import java.util.Arrays;
33 import java.util.stream.OpTestCase;
34 import java.util.stream.Stream;
35
36 import org.testng.annotations.Test;
37
38 import static java.util.stream.LambdaTestHelpers.countTo;
39 import static java.util.stream.ThowableHelper.checkNPE;
40
41 @Test(groups = { "serialization-hostile" })
42 public class StreamCloseTest extends OpTestCase {
43 public void testNullCloseHandler() {
44 checkNPE(() -> Stream.of(1).onClose(null));
45 }
46
47 public void testEmptyCloseHandler() {
48 try (Stream<Integer> ints = countTo(100).stream()) {
49 ints.forEach(i -> {});
50 }
51 }
52
53 public void testOneCloseHandler() {
54 final boolean[] holder = new boolean[1];
55 Runnable closer = () -> { holder[0] = true; };
56
57 try (Stream<Integer> ints = countTo(100).stream()) {
58 ints.onClose(closer);
59 ints.forEach(i -> {});
152 assertTrue(caught);
153
154 caught = false;
155 Arrays.fill(holder, false);
156 try (Stream<Integer> ints = countTo(100).stream().filter(e -> true).onClose(close1).onClose(close2).filter(e -> true).onClose(close3)) {
157 ints.forEach(i -> {});
158 }
159 catch (RuntimeException e) {
160 assertCascaded(e, 3);
161 assertTrue(holder[0] && holder[1] && holder[2]);
162 caught = true;
163 }
164 assertTrue(caught);
165 }
166
167 private void assertCascaded(RuntimeException e, int n) {
168 assertTrue(e.getMessage().equals("1"));
169 assertTrue(e.getSuppressed().length == n - 1);
170 for (int i=0; i<n-1; i++)
171 assertTrue(e.getSuppressed()[i].getMessage().equals(String.valueOf(i + 2)));
172 }
173 }
|
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 /*
25 * @test
26 * @summary close handlers and closing streams
27 * @bug 8044047
28 */
29
30 package org.openjdk.tests.java.util.stream;
31
32 import java.util.Arrays;
33 import java.util.stream.OpTestCase;
34 import java.util.stream.Stream;
35
36 import org.testng.annotations.Test;
37
38 import static java.util.stream.LambdaTestHelpers.countTo;
39 import static java.util.stream.ThowableHelper.checkNPE;
40 import static java.util.stream.ThowableHelper.checkISE;
41
42 @Test(groups = { "serialization-hostile" })
43 public class StreamCloseTest extends OpTestCase {
44 public void testNullCloseHandler() {
45 checkNPE(() -> Stream.of(1).onClose(null));
46 }
47
48 public void testEmptyCloseHandler() {
49 try (Stream<Integer> ints = countTo(100).stream()) {
50 ints.forEach(i -> {});
51 }
52 }
53
54 public void testOneCloseHandler() {
55 final boolean[] holder = new boolean[1];
56 Runnable closer = () -> { holder[0] = true; };
57
58 try (Stream<Integer> ints = countTo(100).stream()) {
59 ints.onClose(closer);
60 ints.forEach(i -> {});
153 assertTrue(caught);
154
155 caught = false;
156 Arrays.fill(holder, false);
157 try (Stream<Integer> ints = countTo(100).stream().filter(e -> true).onClose(close1).onClose(close2).filter(e -> true).onClose(close3)) {
158 ints.forEach(i -> {});
159 }
160 catch (RuntimeException e) {
161 assertCascaded(e, 3);
162 assertTrue(holder[0] && holder[1] && holder[2]);
163 caught = true;
164 }
165 assertTrue(caught);
166 }
167
168 private void assertCascaded(RuntimeException e, int n) {
169 assertTrue(e.getMessage().equals("1"));
170 assertTrue(e.getSuppressed().length == n - 1);
171 for (int i=0; i<n-1; i++)
172 assertTrue(e.getSuppressed()[i].getMessage().equals(String.valueOf(i + 2)));
173 }
174
175 public void testConsumed() {
176 try(Stream<Integer> s = countTo(100).stream()) {
177 s.forEach(i -> {});
178 checkISE(() -> s.onClose(() -> fail("1")));
179 }
180
181 try(Stream<Integer> s = countTo(100).stream()) {
182 s.map(x -> x).forEach(i -> {});
183 checkISE(() -> s.onClose(() -> fail("2")));
184 }
185
186 try(Stream<Integer> s = countTo(100).stream()) {
187 s.close();
188 checkISE(() -> s.onClose(() -> fail("3")));
189 }
190 }
191 }
|