/**
   * Test for no data
   *
   * @throws java.io.IOException
   */
  @Test(expectedExceptions = NoDataException.class)
  public void noData() throws IOException {
    // mock InputStream read
    mockIn = createMock(InputStream.class);
    mockIn.read();
    expectLastCall().andReturn((byte) '4');
    expectLastCall().andReturn((byte) '3');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) 'N');
    expectLastCall().andReturn((byte) 'O');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) 'D');
    expectLastCall().andReturn((byte) 'A');
    expectLastCall().andReturn((byte) 'T');
    expectLastCall().andReturn((byte) 'A');
    expectLastCall().andReturn((byte) '>');

    replayAll();

    // call the method to test
    command.readResult(mockIn);
  }
  /**
   * Test for one frame with three dtc
   *
   * @throws java.io.IOException
   */
  @Test
  public void oneFrameWithThreeDTC() throws IOException {
    // mock InputStream read
    mockIn = createMock(InputStream.class);
    mockIn.read();
    expectLastCall().andReturn((byte) '4');
    expectLastCall().andReturn((byte) '3');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) '1');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) '3');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) '1');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) '4');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) '1');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) '5');
    expectLastCall().andReturn((byte) '>');

    replayAll();
    String res = "P0103\n";
    res += "P0104\n";
    res += "P0105\n";

    // call the method to test
    command.readResult(mockIn);

    assertEquals(command.getFormattedResult(), res);

    verifyAll();
  }
  /**
   * Test for two frames with four dtc
   *
   * @throws java.io.IOException
   */
  @Test
  public void twoFramesWithFourDTC() throws IOException {
    // mock InputStream read
    mockIn = createMock(InputStream.class);
    mockIn.read();
    expectLastCall().andReturn((byte) '4');
    expectLastCall().andReturn((byte) '3');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) '3');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) '5');
    expectLastCall().andReturn((byte) '1');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) '4');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) 'A');
    expectLastCall().andReturn((byte) '1');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) 'A');
    expectLastCall().andReturn((byte) 'B');
    expectLastCall().andReturn((byte) 13);
    expectLastCall().andReturn((byte) '4');
    expectLastCall().andReturn((byte) '3');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) 'F');
    expectLastCall().andReturn((byte) '1');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) '6');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) ' ');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) '0');
    expectLastCall().andReturn((byte) '>');

    replayAll();
    String res = "P0003\n";
    res += "C1104\n";
    res += "B21AB\n";
    res += "U3106\n";

    // call the method to test
    command.readResult(mockIn);

    assertEquals(command.getFormattedResult(), res);

    verifyAll();
  }