@Test
  public void testSigned() throws IOException {
    writer.writeSigned(-1, 1);
    writer.writeSigned(-2, 2);
    writer.writeSigned(-3, 4);
    writer.writeSigned(-4, 8);
    writer.writeSigned(-100L, 1);
    writer.writeSigned(-200L, 2);
    writer.writeSigned(-300L, 4);
    writer.writeSigned(-400L, 8);

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

    try {
      writer.writeSigned(-8L, 3);
      fail("No exception on bad argument");
    } catch (IllegalArgumentException e) {
      assertEquals("Unsupported byte count for signed: 3", e.getMessage());
    }

    BinaryReader reader = getReader();

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

    assertEquals(-1, reader.expectSigned(1));
    assertEquals(-2, reader.expectSigned(2));
    assertEquals(-3, reader.expectSigned(4));
    assertEquals(-4, reader.expectSigned(8));
  }