
PASS TransformStream can be constructed with a transform function
FAIL TransformStream cannot be constructed with no transform function assert_throws_js: TransformStream cannot be constructed with no arguments function "function() { new TransformStream(); }" did not throw
FAIL TransformStream instances must have writable and readable properties of the correct types assert_true: it has a writable property expected true got false
FAIL TransformStream writable starts in the writable state assert_equals: writable starts writable expected (string) "writable" but got (undefined) undefined
FAIL Pass-through sync TransformStream: can read from readable what is put into writable ts.writable.write is not a function. (In 'ts.writable.write('a')', 'ts.writable.write' is undefined)
FAIL Uppercaser sync TransformStream: can read from readable transformed version of what is put into writable ts.writable.write is not a function. (In 'ts.writable.write('a')', 'ts.writable.write' is undefined)
FAIL Uppercaser-doubler sync TransformStream: can read both chunks put into the readable ts.writable.write is not a function. (In 'ts.writable.write('a')', 'ts.writable.write' is undefined)
FAIL Uppercaser async TransformStream: can read from readable transformed version of what is put into writable ts.writable.write is not a function. (In 'ts.writable.write('a')', 'ts.writable.write' is undefined)
FAIL Uppercaser-doubler async TransformStream: can read both chunks put into the readable ts.writable.write is not a function. (In 'ts.writable.write('a')', 'ts.writable.write' is undefined)
FAIL TransformStream: by default, closing the writable closes the readable (when there are no queued writes) assert_equals: writable is closing expected (string) "closing" but got (undefined) undefined
FAIL TransformStream: by default, closing the writable waits for transforms to finish before closing both ts.writable.write is not a function. (In 'ts.writable.write('a')', 'ts.writable.write' is undefined)
FAIL TransformStream: by default, closing the writable closes the readable after sync enqueues and async done ts.writable.write is not a function. (In 'ts.writable.write('a')', 'ts.writable.write' is undefined)
FAIL TransformStream: by default, closing the writable closes the readable after async enqueues and async done ts.writable.write is not a function. (In 'ts.writable.write('a')', 'ts.writable.write' is undefined)
PASS TransformStream flush is called immediately when the writable is closed, if no writes are queued
FAIL TransformStream flush is called after all queued writes finish, once the writable is closed ts.writable.write is not a function. (In 'ts.writable.write('a')', 'ts.writable.write' is undefined)
FAIL TransformStream flush gets a chance to enqueue more into the readable ts.writable.write is not a function. (In 'ts.writable.write('a')', 'ts.writable.write' is undefined)
FAIL TransformStream flush gets a chance to enqueue more into the readable, and can then async close ts.writable.write is not a function. (In 'ts.writable.write('a')', 'ts.writable.write' is undefined)
FAIL Transform stream should call transformer methods as methods ts.writable.write is not a function. (In 'ts.writable.write('a')', 'ts.writable.write' is undefined)

