diff options
Diffstat (limited to 'testing/web-platform/tests/serial/serialPort_loopback-manual.https.html')
-rw-r--r-- | testing/web-platform/tests/serial/serialPort_loopback-manual.https.html | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/testing/web-platform/tests/serial/serialPort_loopback-manual.https.html b/testing/web-platform/tests/serial/serialPort_loopback-manual.https.html new file mode 100644 index 0000000000..bf876b6610 --- /dev/null +++ b/testing/web-platform/tests/serial/serialPort_loopback-manual.https.html @@ -0,0 +1,97 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title></title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="resources/common.js"></script> + <script src="resources/manual.js"></script> + </head> + <body> + <p> + These tests require a connected serial device configured to act as a + "loopback" device, with the transmit and receive pins wired together. + </p> + <script> + manual_serial_test(async (t, port) => { + await port.open({baudRate: 115200, bufferSize: 1024}); + + // Create something much smaller than bufferSize above. + const data = new Uint8Array(64); + for (let i = 0; i < data.byteLength; ++i) + data[i] = i & 0xff; + + const reader = port.readable.getReader(); + + for (let i = 0; i < 10; ++i) { + const writer = port.writable.getWriter(); + writer.write(data); + const writePromise = writer.close(); + + const value = await readWithLength(reader, data.byteLength); + await writePromise; + + compareArrays(value, data); + } + + reader.releaseLock(); + await port.close(); + }, 'Can perform a series of small writes.'); + + manual_serial_test(async (t, port) => { + await port.open({baudRate: 115200, bufferSize: 1024}); + + // Create something much larger than bufferSize above. + const data = new Uint8Array(10 * 1024); + for (let i = 0; i < data.byteLength; ++i) + data[i] = (i / 1024) & 0xff; + + const reader = port.readable.getReader(); + + for (let i = 0; i < 10; ++i) { + const writer = port.writable.getWriter(); + writer.write(data); + const writePromise = writer.close(); + + const value = await readWithLength(reader, data.byteLength); + await writePromise; + + compareArrays(value, data); + } + + reader.releaseLock(); + await port.close(); + }, 'Can perform a series of large writes.'); + + manual_serial_test(async (t, port) => { + await port.open({baudRate: 115200, bufferSize: 64}); + + const writer = port.writable.getWriter(); + // |data| is small enough to be completely transmitted. + let data = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]); + await writer.write(data); + + // Wait a little bit for the device to process the incoming data. + await new Promise((resolve) => setTimeout(resolve, 100)); + // ...before discarding the receive buffers. + await port.readable.cancel(); + + data = new Uint8Array([9, 10, 11, 12, 13, 14, 15, 16]); + const reader = port.readable.getReader(); + const readPromise = readWithLength(reader, data.byteLength); + + // The next block of data should be received successfully. + await writer.write(data); + writer.releaseLock(); + + const value = await readPromise; + reader.releaseLock(); + + compareArrays(value, data); + + await port.close(); + }, 'Canceling the reader discards buffered data.'); + </script> + </body> +</html> |