Explorar o código

Tests/LibWeb: Add TransformStream flush callback test

This test proves the ability of TransformStream to execute
caller supplied code in the flush callback, and have access to
TransformStreamDefaultController.
Kenneth Myhra %!s(int64=2) %!d(string=hai) anos
pai
achega
221f18f72e

+ 5 - 0
Tests/LibWeb/Text/expected/Streams/TransformStream-flush-callback.txt

@@ -0,0 +1,5 @@
+Done: false
+HELLO, WORLD!
+Done: false
+Enqueued in flush, this the last chunk that will be processed.
+Done: true

+ 25 - 0
Tests/LibWeb/Text/input/Streams/TransformStream-flush-callback.html

@@ -0,0 +1,25 @@
+<script src="../include.js"></script>
+<script>
+  test(() => {
+    const {writable, readable} = new TransformStream({
+      transform(chunk, controller) {
+        controller.enqueue(chunk.toUpperCase());
+      },
+      flush(controller) {
+          controller.enqueue("Enqueued in flush, this the last chunk that will be processed.");
+      }
+    });
+    const writer = writable.getWriter();
+    writer.write("Hello, world!");
+    writer.close();
+    const reader = readable.getReader();
+    reader.read().then(function processText({done, value}) {
+      println(`Done: ${done}`);
+      if (done)
+        return;
+
+      println(value);
+      reader.read().then(processText);
+    });
+  });
+</script>