@@ -931,7 +931,7 @@ public Integer answer(InvocationOnMock invocation) throws Throwable {
931931 // Call the method under test.
932932 dataReader .start ();
933933
934- Thread .sleep (150 );
934+ Thread .sleep (200 );
935935 testCI .notifyData ();
936936 while (!testCI .alreadyRead )
937937 Thread .sleep (30 );
@@ -966,7 +966,7 @@ public XBeePacket answer(InvocationOnMock invocation) throws Throwable {
966966 // Call the method under test.
967967 dataReader .start ();
968968
969- Thread .sleep (150 );
969+ Thread .sleep (200 );
970970 testCI .notifyData ();
971971 while (!testCI .alreadyRead )
972972 Thread .sleep (30 );
@@ -1004,7 +1004,7 @@ public final void testDataReaderReceivePacketNotContemplatedPacket() throws Exce
10041004 // Call the method under test.
10051005 dataReader .start ();
10061006
1007- Thread .sleep (150 );
1007+ Thread .sleep (200 );
10081008 testCI .notifyData ();
10091009 while (!testCI .alreadyRead )
10101010 Thread .sleep (30 );
@@ -1046,7 +1046,7 @@ public final void testDataReaderReceivePacketListentoFrameIDNotReceived() throws
10461046 // Call the method under test.
10471047 dataReader .start ();
10481048
1049- Thread .sleep (150 );
1049+ Thread .sleep (200 );
10501050 testCI .notifyData ();
10511051 while (!testCI .alreadyRead )
10521052 Thread .sleep (30 );
@@ -1088,7 +1088,7 @@ public final void testDataReaderReceivePacketListentoFrameIDReceived() throws Ex
10881088 // Call the method under test.
10891089 dataReader .start ();
10901090
1091- Thread .sleep (150 );
1091+ Thread .sleep (200 );
10921092 testCI .notifyData ();
10931093 while (!testCI .alreadyRead )
10941094 Thread .sleep (30 );
@@ -1130,7 +1130,7 @@ public final void testDataReaderReceivePacketATResponse() throws Exception {
11301130 // Call the method under test.
11311131 dataReader .start ();
11321132
1133- Thread .sleep (150 );
1133+ Thread .sleep (200 );
11341134 testCI .notifyData ();
11351135 while (!testCI .alreadyRead )
11361136 Thread .sleep (30 );
@@ -1172,7 +1172,7 @@ public final void testDataReaderReceivePacketRemoteATResponse() throws Exception
11721172 // Call the method under test.
11731173 dataReader .start ();
11741174
1175- Thread .sleep (150 );
1175+ Thread .sleep (200 );
11761176 testCI .notifyData ();
11771177 while (!testCI .alreadyRead )
11781178 Thread .sleep (30 );
@@ -1214,7 +1214,7 @@ public final void testDataReaderReceivePacketRX64DataPacket() throws Exception {
12141214 // Call the method under test.
12151215 dataReader .start ();
12161216
1217- Thread .sleep (150 );
1217+ Thread .sleep (200 );
12181218 testCI .notifyData ();
12191219 while (!testCI .alreadyRead )
12201220 Thread .sleep (30 );
@@ -1256,7 +1256,7 @@ public final void testDataReaderReceivePacketRX16DataPacket() throws Exception {
12561256 // Call the method under test.
12571257 dataReader .start ();
12581258
1259- Thread .sleep (150 );
1259+ Thread .sleep (200 );
12601260 testCI .notifyData ();
12611261 while (!testCI .alreadyRead )
12621262 Thread .sleep (30 );
@@ -1298,7 +1298,7 @@ public final void testDataReaderReceivePacketRXDataPacket() throws Exception {
12981298 // Call the method under test.
12991299 dataReader .start ();
13001300
1301- Thread .sleep (150 );
1301+ Thread .sleep (200 );
13021302 testCI .notifyData ();
13031303 while (!testCI .alreadyRead )
13041304 Thread .sleep (30 );
@@ -1340,7 +1340,7 @@ public final void testDataReaderReceivePacketRXIO64DataPacket() throws Exception
13401340 // Call the method under test.
13411341 dataReader .start ();
13421342
1343- Thread .sleep (150 );
1343+ Thread .sleep (200 );
13441344 testCI .notifyData ();
13451345 while (!testCI .alreadyRead )
13461346 Thread .sleep (30 );
@@ -1382,7 +1382,7 @@ public final void testDataReaderReceivePacketRXIO16DataPacket() throws Exception
13821382 // Call the method under test.
13831383 dataReader .start ();
13841384
1385- Thread .sleep (150 );
1385+ Thread .sleep (200 );
13861386 testCI .notifyData ();
13871387 while (!testCI .alreadyRead )
13881388 Thread .sleep (30 );
@@ -1424,7 +1424,7 @@ public final void testDataReaderReceivePacketRXIOPacket() throws Exception {
14241424 // Call the method under test.
14251425 dataReader .start ();
14261426
1427- Thread .sleep (150 );
1427+ Thread .sleep (200 );
14281428 testCI .notifyData ();
14291429 while (!testCI .alreadyRead )
14301430 Thread .sleep (30 );
@@ -1466,7 +1466,7 @@ public final void testDataReaderReceivePacketModemStatusPacket() throws Exceptio
14661466 // Call the method under test.
14671467 dataReader .start ();
14681468
1469- Thread .sleep (150 );
1469+ Thread .sleep (200 );
14701470 testCI .notifyData ();
14711471 while (!testCI .alreadyRead )
14721472 Thread .sleep (30 );
@@ -1508,7 +1508,7 @@ public final void testDataReaderReceivePacketExplicitIndicatorDigiPacket() throw
15081508 // Call the method under test.
15091509 dataReader .start ();
15101510
1511- Thread .sleep (150 );
1511+ Thread .sleep (200 );
15121512 testCI .notifyData ();
15131513 while (!testCI .alreadyRead )
15141514 Thread .sleep (30 );
@@ -1550,7 +1550,7 @@ public final void testDataReaderReceivePacketExplicitIndicatorPacket() throws Ex
15501550 // Call the method under test.
15511551 dataReader .start ();
15521552
1553- Thread .sleep (150 );
1553+ Thread .sleep (200 );
15541554 testCI .notifyData ();
15551555 while (!testCI .alreadyRead )
15561556 Thread .sleep (30 );
@@ -1564,4 +1564,103 @@ public final void testDataReaderReceivePacketExplicitIndicatorPacket() throws Ex
15641564 Mockito .verify (modemListener , Mockito .times (0 )).modemStatusEventReceived (Mockito .any (ModemStatusEvent .class ));
15651565 Mockito .verify (explicitListener , Mockito .times (1 )).explicitDataReceived (Mockito .any (ExplicitXBeeMessage .class ));
15661566 }
1567+
1568+ /**
1569+ * Test method for {@link com.digi.xbee.api.connection.DataReader#start()}.
1570+ */
1571+ @ Test
1572+ public final void testDataReaderReceivePacketIOExceptionWhenReading () throws Exception {
1573+ // Setup the resources for the test.
1574+ Mockito .doAnswer (new Answer <XBeePacket >() {
1575+ @ Override
1576+ public XBeePacket answer (InvocationOnMock invocation ) throws Throwable {
1577+ if (testCI .alreadyRead )
1578+ return null ;
1579+
1580+ testCI .alreadyRead = true ;
1581+ throw new IOException ("Exception when reading" );
1582+ }
1583+ }).when (mockInput ).read ();
1584+
1585+ DataReader dataReader = new DataReader (testCI , OperatingMode .API , mockDevice );
1586+ IPacketReceiveListener packetListener = Mockito .mock (IPacketReceiveListener .class );
1587+ dataReader .addPacketReceiveListener (packetListener );
1588+
1589+ // Call the method under test.
1590+ dataReader .start ();
1591+
1592+ Thread .sleep (200 );
1593+ testCI .notifyData ();
1594+ while (!testCI .alreadyRead )
1595+ Thread .sleep (30 );
1596+
1597+ // Verify the result.
1598+ Mockito .verify (mockQueue , Mockito .times (0 )).addPacket (Mockito .any (XBeePacket .class ));
1599+ Mockito .verify (packetListener , Mockito .times (0 )).packetReceived (Mockito .any (XBeePacket .class ));
1600+ }
1601+
1602+ /**
1603+ * Test method for {@link com.digi.xbee.api.connection.DataReader#start()}.
1604+ */
1605+ @ Test
1606+ public final void testDataReaderReceivePacketATmode () throws Exception {
1607+ // Setup the resources for the test.
1608+ TestConnectionInterface testCI = new TestConnectionInterface () {
1609+ @ Override
1610+ public InputStream getInputStream () {
1611+ if (alreadyRead )
1612+ return null ;
1613+
1614+ alreadyRead = true ;
1615+ return mockInput ;
1616+ }
1617+ };
1618+ DataReader dataReader = new DataReader (testCI , OperatingMode .AT , mockDevice );
1619+ IPacketReceiveListener packetListener = Mockito .mock (IPacketReceiveListener .class );
1620+ dataReader .addPacketReceiveListener (packetListener );
1621+
1622+ // Call the method under test.
1623+ dataReader .start ();
1624+
1625+ Thread .sleep (200 );
1626+ testCI .notifyData ();
1627+ while (!testCI .alreadyRead )
1628+ Thread .sleep (30 );
1629+
1630+ // Verify the result.
1631+ Mockito .verify (mockInput , Mockito .times (0 )).read ();
1632+ Mockito .verify (mockQueue , Mockito .times (0 )).addPacket (Mockito .any (XBeePacket .class ));
1633+ Mockito .verify (packetListener , Mockito .times (0 )).packetReceived (Mockito .any (XBeePacket .class ));
1634+ }
1635+
1636+ /**
1637+ * Test method for {@link com.digi.xbee.api.connection.DataReader#start()}.
1638+ */
1639+ @ Test
1640+ public final void testDataReaderReceivePacketNullInputStream () throws Exception {
1641+ // Setup the resources for the test.
1642+ TestConnectionInterface testCI = new TestConnectionInterface () {
1643+ @ Override
1644+ public InputStream getInputStream () {
1645+ alreadyRead = true ;
1646+ return null ;
1647+ }
1648+ };
1649+ DataReader dataReader = new DataReader (testCI , OperatingMode .AT , mockDevice );
1650+ IPacketReceiveListener packetListener = Mockito .mock (IPacketReceiveListener .class );
1651+ dataReader .addPacketReceiveListener (packetListener );
1652+
1653+ // Call the method under test.
1654+ dataReader .start ();
1655+
1656+ Thread .sleep (200 );
1657+ testCI .notifyData ();
1658+ while (!testCI .alreadyRead )
1659+ Thread .sleep (30 );
1660+
1661+ // Verify the result.
1662+ Mockito .verify (mockInput , Mockito .times (0 )).read ();
1663+ Mockito .verify (mockQueue , Mockito .times (0 )).addPacket (Mockito .any (XBeePacket .class ));
1664+ Mockito .verify (packetListener , Mockito .times (0 )).packetReceived (Mockito .any (XBeePacket .class ));
1665+ }
15671666}
0 commit comments