serialPort_loopback_BreakError-manual.https.html (1842B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title></title> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="resources/common.js"></script> 9 <script src="resources/manual.js"></script> 10 </head> 11 <body> 12 <p> 13 These tests require a connected serial device configured to act as a 14 "loopback" device, with the transmit and receive pins wired together. 15 </p> 16 <script> 17 manual_serial_test(async (t, port) => { 18 await port.open({baudRate: 115200, bufferSize: 1024}); 19 20 let reader = port.readable.getReader(); 21 let readPromise = (async () => { 22 // A single zero byte will be read before the break is detected. 23 const {value, done} = await reader.read(); 24 compareArrays(value, new Uint8Array([0])); 25 assert_false(done); 26 27 try { 28 const {value, done} = await reader.read(); 29 assert_unreached(`Expected break, got ${value.byteLength} bytes`); 30 } catch (e) { 31 assert_equals(e.constructor, DOMException); 32 assert_equals(e.name, 'BreakError'); 33 } 34 })(); 35 36 await port.setSignals({break: true}); 37 await readPromise; 38 await port.setSignals({break: false}); 39 40 const writer = port.writable.getWriter(); 41 // |data| is small enough to be completely transmitted. 42 let data = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]); 43 await writer.write(data); 44 writer.releaseLock(); 45 46 reader = port.readable.getReader(); 47 const buffer = await readWithLength(reader, data.byteLength);; 48 compareArrays(buffer, data); 49 reader.releaseLock(); 50 51 await port.close(); 52 }, 'Break is detected.'); 53 </script> 54 </body> 55 </html>