public void testBinaryIO() {
    try {
      for (int i = 0; i < testValues.length; i++) {
        IValue value = testValues[i];

        System.out.println(value); // Temp

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        BinaryWriter binaryWriter = new BinaryWriter(value, baos, ts);
        binaryWriter.serialize();

        // PBFWriter.writeValueToFile(value, new File("/tmp/testIO"+i+".pbf")); // Temp

        byte[] data = baos.toByteArray();
        ByteArrayInputStream bais = new ByteArrayInputStream(data);
        BinaryReader binaryReader = new BinaryReader(vf, ts, bais);
        printBytes(data); // Temp
        IValue result = binaryReader.deserialize();

        System.out.println(result); // Temp
        System.out.println(); // Temp

        if (!value.isEqual(result)) {
          String message =
              "Not equal: \n\t"
                  + value
                  + " : "
                  + value.getType()
                  + "\n\t"
                  + result
                  + " : "
                  + result.getType();
          System.err.println(message);
          fail(message);
        }
      }
    } catch (IOException ioex) {
      ioex.printStackTrace();
      fail(ioex.getMessage());
    }
  }