%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
// META: global=window,worker,jsshell 'use strict'; const transformerMethods = { start: { length: 1, trigger: () => Promise.resolve() }, transform: { length: 2, trigger: ts => ts.writable.getWriter().write() }, flush: { length: 1, trigger: ts => ts.writable.getWriter().close() } }; for (const method in transformerMethods) { const { length, trigger } = transformerMethods[method]; // Some semantic tests of how transformer methods are called can be found in general.js, as well as in the test files // specific to each method. promise_test(() => { let argCount; const ts = new TransformStream({ [method](...args) { argCount = args.length; } }, undefined, { highWaterMark: Infinity }); return Promise.resolve(trigger(ts)).then(() => { assert_equals(argCount, length, `${method} should be called with ${length} arguments`); }); }, `transformer method ${method} should be called with the right number of arguments`); promise_test(() => { let methodWasCalled = false; function Transformer() {} Transformer.prototype = { [method]() { methodWasCalled = true; } }; const ts = new TransformStream(new Transformer(), undefined, { highWaterMark: Infinity }); return Promise.resolve(trigger(ts)).then(() => { assert_true(methodWasCalled, `${method} should be called`); }); }, `transformer method ${method} should be called even when it's located on the prototype chain`); }