@@ -1997,6 +1997,22 @@ public void controlLines() throws Exception {
1997
1997
}
1998
1998
}
1999
1999
2000
+ @ Test
2001
+ public void flowControlBase () throws Exception {
2002
+ usb .open ();
2003
+ usb .setParameters (115200 , 8 , 1 , UsbSerialPort .PARITY_NONE );
2004
+ assertEquals (FlowControl .NONE , usb .serialPort .getFlowControl ());
2005
+ assertTrue (usb .serialPort .getSupportedFlowControl ().contains (FlowControl .NONE ));
2006
+ for (FlowControl flowControl : FlowControl .values ()) {
2007
+ if (usb .serialPort .getSupportedFlowControl ().contains (flowControl )) {
2008
+ usb .serialPort .setFlowControl (flowControl );
2009
+ assertEquals (flowControl , usb .serialPort .getFlowControl ());
2010
+ } else {
2011
+ assertThrows (UnsupportedOperationException .class , () -> usb .serialPort .setFlowControl (flowControl ));
2012
+ }
2013
+ }
2014
+ }
2015
+
2000
2016
@ Test
2001
2017
public void flowControlXonXoff () throws Exception {
2002
2018
final byte [] off_on = new byte []{'x' ,CommonUsbSerialPort .CHAR_XOFF ,'y' ,CommonUsbSerialPort .CHAR_XON ,'z' };
@@ -2006,12 +2022,11 @@ public void flowControlXonXoff() throws Exception {
2006
2022
usb .open (EnumSet .of (UsbWrapper .OpenCloseFlags .NO_IOMANAGER_THREAD , UsbWrapper .OpenCloseFlags .NO_CONTROL_LINE_INIT ));
2007
2023
telnet .setParameters (115200 , 8 , 1 , UsbSerialPort .PARITY_NONE );
2008
2024
usb .setParameters (115200 , 8 , 1 , UsbSerialPort .PARITY_NONE );
2009
- assertEquals (FlowControl .NONE , usb .serialPort .getFlowControl ());
2010
- if (!usb .serialPort .getSupportedFlowControl ().contains (FlowControl .XON_XOFF_INLINE ) &&
2011
- !usb .serialPort .getSupportedFlowControl ().contains (FlowControl .XON_XOFF )) {
2012
- assertThrows (UnsupportedOperationException .class , () -> usb .serialPort .setFlowControl (FlowControl .XON_XOFF_INLINE ));
2013
- assertThrows (UnsupportedOperationException .class , () -> usb .serialPort .setFlowControl (FlowControl .XON_XOFF ));
2025
+ if (!usb .serialPort .getSupportedFlowControl ().contains (FlowControl .XON_XOFF )) {
2014
2026
assertThrows (UnsupportedOperationException .class , () -> usb .serialPort .getXON ());
2027
+ }
2028
+ if (!usb .serialPort .getSupportedFlowControl ().contains (FlowControl .XON_XOFF_INLINE ) &&
2029
+ !usb .serialPort .getSupportedFlowControl ().contains (FlowControl .XON_XOFF )) {
2015
2030
Assume .assumeTrue ("flow control not supported" , false );
2016
2031
}
2017
2032
if (usb .serialPort .getSupportedFlowControl ().contains (FlowControl .XON_XOFF_INLINE ) &&
@@ -2020,11 +2035,8 @@ public void flowControlXonXoff() throws Exception {
2020
2035
}
2021
2036
if (usb .serialPort .getSupportedFlowControl ().contains (FlowControl .XON_XOFF_INLINE )) {
2022
2037
filter = new XonXoffFilter ();
2023
- assertThrows (UnsupportedOperationException .class , () -> usb .serialPort .setFlowControl (FlowControl .XON_XOFF ));
2024
2038
usb .serialPort .setFlowControl (FlowControl .XON_XOFF_INLINE );
2025
2039
assertEquals (FlowControl .XON_XOFF_INLINE , usb .serialPort .getFlowControl ());
2026
- assertThrows (UnsupportedOperationException .class , () -> usb .serialPort .getXON ());
2027
-
2028
2040
assertTrue (filter .getXON ());
2029
2041
assertThat (filter .filter (off_on ), equalTo (off_on_filtered ));
2030
2042
assertTrue (filter .getXON ());
@@ -2034,7 +2046,6 @@ public void flowControlXonXoff() throws Exception {
2034
2046
assertTrue (filter .getXON ());
2035
2047
} else {
2036
2048
filter = null ;
2037
- assertThrows (UnsupportedOperationException .class , () -> usb .serialPort .setFlowControl (FlowControl .XON_XOFF_INLINE ));
2038
2049
usb .serialPort .setFlowControl (FlowControl .XON_XOFF );
2039
2050
assertEquals (FlowControl .XON_XOFF , usb .serialPort .getFlowControl ());
2040
2051
assertTrue (usb .serialPort .getXON ());
@@ -2203,17 +2214,10 @@ private void flowControlHw(FlowControl flowControl) throws Exception {
2203
2214
usb .setParameters (115200 , 8 , 1 , UsbSerialPort .PARITY_NONE );
2204
2215
2205
2216
// early exit, if flow control not supported
2217
+ if (!usb .serialPort .getSupportedFlowControl ().contains (flowControl ))
2218
+ Assume .assumeTrue ("flow control not supported" , false );
2206
2219
assertEquals (usb .inputLinesConnected ? EnumSet .of (ControlLine .RI ) : EnumSet .noneOf (ControlLine .class ), usb .serialPort .getControlLines ()); // [1]
2207
- assertEquals (FlowControl .NONE , usb .serialPort .getFlowControl ());
2208
- try {
2209
- usb .serialPort .setFlowControl (flowControl );
2210
- } catch (UnsupportedOperationException ignored ) {
2211
- if (usb .serialPort .getSupportedFlowControl ().contains (flowControl )) {
2212
- assertTrue ("flow control support expected" , false );
2213
- } else {
2214
- Assume .assumeTrue ("flow control not supported" , false );
2215
- }
2216
- }
2220
+ usb .serialPort .setFlowControl (flowControl );
2217
2221
assertEquals (flowControl , usb .serialPort .getFlowControl ());
2218
2222
if (!usb .inputLinesConnected )
2219
2223
Assume .assumeTrue ("flow control lines not connected" , false );
@@ -2528,7 +2532,8 @@ public void commonMethods() throws Exception {
2528
2532
assertThrows (UnsupportedOperationException .class , wrongSerialPort ::getControlLines );
2529
2533
assertEquals (EnumSet .of (FlowControl .NONE ), wrongSerialPort .getSupportedFlowControl ());
2530
2534
assertEquals (FlowControl .NONE , wrongSerialPort .getFlowControl ());
2531
- assertThrows (UnsupportedOperationException .class , () -> wrongSerialPort .setFlowControl (FlowControl .NONE ));
2535
+ wrongSerialPort .setFlowControl (FlowControl .NONE );
2536
+ assertThrows (UnsupportedOperationException .class , () -> wrongSerialPort .setFlowControl (FlowControl .RTS_CTS ));
2532
2537
assertThrows (UnsupportedOperationException .class , () -> wrongSerialPort .purgeHwBuffers (true , true ));
2533
2538
assertThrows (UnsupportedOperationException .class , () -> wrongSerialPort .setBreak (true ));
2534
2539
}
0 commit comments