< prev index next >

test/java/util/stream/test/org/openjdk/tests/java/util/stream/StreamCloseTest.java

Print this page

        

@@ -35,10 +35,11 @@
 
 import org.testng.annotations.Test;
 
 import static java.util.stream.LambdaTestHelpers.countTo;
 import static java.util.stream.ThowableHelper.checkNPE;
+import static java.util.stream.ThowableHelper.checkISE;
 
 @Test(groups = { "serialization-hostile" })
 public class StreamCloseTest extends OpTestCase {
     public void testNullCloseHandler() {
         checkNPE(() -> Stream.of(1).onClose(null));

@@ -168,6 +169,23 @@
         assertTrue(e.getMessage().equals("1"));
         assertTrue(e.getSuppressed().length == n - 1);
         for (int i=0; i<n-1; i++)
         assertTrue(e.getSuppressed()[i].getMessage().equals(String.valueOf(i + 2)));
     }
+
+    public void testConsumed() {
+        try(Stream<Integer> s = countTo(100).stream()) {
+            s.forEach(i -> {});
+            // Adding onClose handler when stream is consumed is illegal
+            // handler must not be registered
+            checkISE(() -> s.onClose(() -> fail("1")));
+        }
+
+        // close() must be idempotent:
+        // second close() invoked at the end of try-with-resources must have no effect
+        try(Stream<Integer> s = countTo(100).stream()) {
+            s.close();
+            // Adding onClose handler when stream is closed is also illegal
+            checkISE(() -> s.onClose(() -> fail("3")));
+        }
+    }
 }
< prev index next >