Re: [whatwg/streams] Port remaining TransformStream tests to wpt (#762)

tyoshino approved this pull request.



> +  let startCalled = false;
+  let startDone = false;
+  let transformDone = false;
+  let flushDone = false;
+  const ts = new TransformStream({
+    start() {
+      startCalled = true;
+      return new Promise(resolve => setTimeout(resolve, 90))
+        .then(() => { startDone = true; });
+    },
+    transform() {
+      t.step(() => {
+        assert_true(startDone, 'startPromise must resolve before transform is called');
+      });
+      return new Promise(resolve => setTimeout(resolve, 30))
+          .then(() => { transformDone = true; });

I'm just putting everything inside .step() when possible so that any mistake can be captured by the testharness framework. It looks we can here, maybe.

> +      startCalled = true;
+      return new Promise(resolve => setTimeout(resolve, 90))
+        .then(() => { startDone = true; });
+    },
+    transform() {
+      t.step(() => {
+        assert_true(startDone, 'startPromise must resolve before transform is called');
+      });
+      return new Promise(resolve => setTimeout(resolve, 30))
+          .then(() => { transformDone = true; });
+    },
+    flush() {
+      t.step(() => {
+        assert_true(transformDone, 'pending transform promise must resolve before flush is called');
+      });
+      return new Promise(resolve => setTimeout(resolve, 50))

ditto

> +      t.step(() => {
+        assert_true(transformDone, 'pending transform promise must resolve before flush is called');
+      });
+      return new Promise(resolve => setTimeout(resolve, 50))
+        .then(() => { flushDone = true; });
+    }
+  });
+
+  assert_true(startCalled, 'start is called synchronously');
+
+  const writer = ts.writable.getWriter();
+  writer.write('a');
+  writer.close().then(t.step_func(() => {
+    assert_true(flushDone, 'flushPromise resolved');
+    t.done();
+  }))

how about using step_func_done()?

> +        assert_true(transformDone, 'pending transform promise must resolve before flush is called');
+      });
+      return new Promise(resolve => setTimeout(resolve, 50))
+        .then(() => { flushDone = true; });
+    }
+  });
+
+  assert_true(startCalled, 'start is called synchronously');
+
+  const writer = ts.writable.getWriter();
+  writer.write('a');
+  writer.close().then(t.step_func(() => {
+    assert_true(flushDone, 'flushPromise resolved');
+    t.done();
+  }))
+  .catch(t.step_func(e => assert_unreached(e)));

how about using unreached_func?

> +        t.done();
+      });
+    },
+    transform() {
+    }
+  });
+}, 'TransformStream cannot be used after becoming errored');
+
+async_test(t => {
+  const ts = new TransformStream({
+    start() {
+      return new Promise(resolve => setTimeout(resolve, 90))
+        .then(() => { throw thrownError; });
+    },
+    transform() {
+      t.step(() => assert_unreached('transform must never be called if start() fails'));

ditto (unreached_func) for here and all the other occurrences.

> +      t.step(() => assert_unreached('transform must never be called if start() fails'));
+    },
+    flush() {
+      t.step(() => assert_unreached('flush must never be called if start() fails'));
+    }
+  });
+
+  const writer = ts.writable.getWriter();
+  writer.write('a').then(t.step_func(() => {
+    assert_unreached('writer should be errored if start() fails');
+  }))
+  .catch(t.step_func(e => assert_equals(e, thrownError, 'writer rejects with same error')));
+  writer.close().then(t.step_func(() => {
+    assert_unreached('writer should be errored if start() fails');
+  }))
+  .catch(t.step_func(e => assert_equals(e, thrownError, 'writer rejects with same error')));

as we've removed plan(), we need to add some logic to check that this expectation is checked before running t.done()?

> +    flush() {
+      t.step(() => assert_unreached('flush must never be called if start() fails'));
+    }
+  });
+
+  const writer = ts.writable.getWriter();
+  writer.write('a').then(t.step_func(() => assert_unreached('writer should be errored if start() fails')))
+  .catch(t.step_func(e => assert_equals(e, controllerError, 'writer rejects with same error')));
+  writer.close().then(t.step_func(() => assert_unreached('writer should be errored if start() fails')))
+  .catch(t.step_func(e => assert_equals(e, controllerError, 'writer rejects with same error')));
+
+  const reader = ts.readable.getReader();
+
+  reader.read().catch(t.step_func(e => {
+    assert_equals(e, controllerError, 'reader rejects with same error');
+    t.done();

maybe this too regarding removal of t.plan().

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/streams/pull/762#pullrequestreview-56395254

Received on Tuesday, 15 August 2017 16:56:57 UTC