WPInputStream extends InputStream { public String readWPHexString(int numOfBytes) throws IOException { StringBuilder b = new StringBuilder(); for (int i = 0; i < numOfBytes; i++) { b.append(readWPHex()); } return b.toString(); } WPInputStream(InputStream in); int readWPShort(); long readWPLong(); byte readWPByte(); void skipWPByte(int numOfBytes); char readWPChar(); String readWPString(int length); String readWPHexString(int numOfBytes); String readWPHex(); int readWP(); @Override int read(); @Override int read(byte[] b); @Override int read(byte[] b, int off, int len); @Override long skip(long n); @Override int available(); @Override void close(); @Override synchronized void mark(int readlimit); @Override synchronized void reset(); @Override boolean markSupported();  }
@Test public void testReadHexString() throws Exception { try (WPInputStream wpInputStream = emptyWPStream()) { wpInputStream.readWPHexString(10); fail("should have thrown EOF"); } catch (EOFException e) { } }