@Test
  public void testUnsigned() throws IOException {
    writer.writeUnsigned(1, 1);
    writer.writeUnsigned(2, 2);
    writer.writeUnsigned(3, 3);
    writer.writeUnsigned(4, 4);

    try {
      writer.writeUnsigned(8, 8);
      fail("No exception on bad argument");
    } catch (IllegalArgumentException e) {
      assertEquals("Unsupported byte count for unsigned: 8", e.getMessage());
    }

    BinaryReader reader = getReader();

    try {
      reader.expectUnsigned(8);
      fail("No exception on bad argument");
    } catch (IllegalArgumentException e) {
      assertEquals("Unsupported byte count for unsigned: 8", e.getMessage());
    }

    assertEquals(1, reader.expectUnsigned(1));
    assertEquals(2, reader.expectUnsigned(2));
    assertEquals(3, reader.expectUnsigned(3));
    assertEquals(4, reader.expectUnsigned(4));
  }
 private void assertBadExpectUnsigned(String message, byte[] data, int bytes) {
   ByteArrayInputStream bais = new ByteArrayInputStream(data);
   try {
     BinaryReader reader = new BigEndianBinaryReader(bais);
     reader.expectUnsigned(bytes);
     fail("No exception on bad short");
   } catch (IOException e) {
     assertEquals(message, e.getMessage());
   }
 }