tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

serialPort_loopback-manual.https.html (3188B)


      1 <!DOCTYPE html>
      2 <meta name="timeout" content="long">
      3 <html>
      4  <head>
      5    <meta charset="utf-8">
      6    <title></title>
      7    <script src="/resources/testharness.js"></script>
      8    <script src="/resources/testharnessreport.js"></script>
      9    <script src="resources/common.js"></script>
     10    <script src="resources/manual.js"></script>
     11  </head>
     12  <body>
     13    <p>
     14      These tests require a connected serial device configured to act as a
     15      "loopback" device, with the transmit and receive pins wired together.
     16    </p>
     17    <script>
     18      manual_serial_test(async (t, port) => {
     19        await port.open({baudRate: 115200, bufferSize: 1024});
     20 
     21        // Create something much smaller than bufferSize above.
     22        const data = new Uint8Array(64);
     23        for (let i = 0; i < data.byteLength; ++i)
     24          data[i] = i & 0xff;
     25 
     26        const reader = port.readable.getReader();
     27 
     28        for (let i = 0; i < 10; ++i) {
     29          const writer = port.writable.getWriter();
     30          writer.write(data);
     31          const writePromise = writer.close();
     32 
     33          const value = await readWithLength(reader, data.byteLength);
     34          await writePromise;
     35 
     36          compareArrays(value, data);
     37        }
     38 
     39        reader.releaseLock();
     40        await port.close();
     41      }, 'Can perform a series of small writes.');
     42 
     43      manual_serial_test(async (t, port) => {
     44        await port.open({baudRate: 115200, bufferSize: 1024});
     45 
     46        // Create something much larger than bufferSize above.
     47        const data = new Uint8Array(10 * 1024);
     48        for (let i = 0; i < data.byteLength; ++i)
     49          data[i] = (i / 1024) & 0xff;
     50 
     51        const reader = port.readable.getReader();
     52 
     53        for (let i = 0; i < 10; ++i) {
     54          const writer = port.writable.getWriter();
     55          writer.write(data);
     56          const writePromise = writer.close();
     57 
     58          const value = await readWithLength(reader, data.byteLength);
     59          await writePromise;
     60 
     61          compareArrays(value, data);
     62        }
     63 
     64        reader.releaseLock();
     65        await port.close();
     66      }, 'Can perform a series of large writes.');
     67 
     68      manual_serial_test(async (t, port) => {
     69        await port.open({baudRate: 115200, bufferSize: 64});
     70 
     71        const writer = port.writable.getWriter();
     72        // |data| is small enough to be completely transmitted.
     73        let data = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
     74        await writer.write(data);
     75 
     76        // Wait a little bit for the device to process the incoming data.
     77        await new Promise((resolve) => setTimeout(resolve, 100));
     78        // ...before discarding the receive buffers.
     79        await port.readable.cancel();
     80 
     81        data = new Uint8Array([9, 10, 11, 12, 13, 14, 15, 16]);
     82        const reader = port.readable.getReader();
     83        const readPromise = readWithLength(reader, data.byteLength);
     84 
     85        // The next block of data should be received successfully.
     86        await writer.write(data);
     87        writer.releaseLock();
     88 
     89        const value = await readPromise;
     90        reader.releaseLock();
     91 
     92        compareArrays(value, data);
     93 
     94        await port.close();
     95      }, 'Canceling the reader discards buffered data.');
     96    </script>
     97  </body>
     98 </html>