public void testExtent(int a, int b, int c, int d) throws IOException {
    ItemLocationBox iloc = new ItemLocationBox();
    iloc.setVersion(1);
    iloc.setBaseOffsetSize(a);
    iloc.setIndexSize(b);
    iloc.setLengthSize(c);
    iloc.setOffsetSize(d);
    ItemLocationBox.Extent e1 = iloc.createExtent(123, 124, 125);
    ByteBuffer bb = ByteBuffer.allocate(e1.getSize());
    e1.getContent(bb);
    Assert.assertTrue(bb.remaining() == 0);
    bb.rewind();
    ItemLocationBox.Extent e2 = iloc.createExtent(bb);

    Assert.assertEquals(e1, e2);
  }
  public void testItemVersionZero(int a, int b, int c, int d) throws IOException {
    ItemLocationBox iloc = new ItemLocationBox();
    iloc.setVersion(0);
    iloc.setBaseOffsetSize(a);
    iloc.setIndexSize(b);
    iloc.setLengthSize(c);
    iloc.setOffsetSize(d);
    ItemLocationBox.Item e1 =
        iloc.createItem(65, 0, 1, 66, Collections.<ItemLocationBox.Extent>emptyList());
    ByteBuffer bb = ByteBuffer.allocate(e1.getSize());
    e1.getContent(bb);
    Assert.assertTrue(bb.remaining() == 0);
    bb.rewind();
    ItemLocationBox.Item e2 = iloc.createItem(bb);

    Assert.assertEquals(e1, e2);
  }
  public void testSimpleRoundWithEntriesTrip(
      int baseOffsetSize, int indexSize, int lengthSize, int offsetSize) throws IOException {
    ItemLocationBox ilocOrig = new ItemLocationBox();
    ilocOrig.setVersion(1);
    ilocOrig.setBaseOffsetSize(baseOffsetSize);
    ilocOrig.setIndexSize(indexSize);
    ilocOrig.setLengthSize(lengthSize);
    ilocOrig.setOffsetSize(offsetSize);
    ItemLocationBox.Item item =
        ilocOrig.createItem(12, 0, 13, 123, Collections.<ItemLocationBox.Extent>emptyList());
    ilocOrig.setItems(Collections.singletonList(item));
    ByteBuffer bb = ByteBuffer.allocate(l2i(ilocOrig.getSize()));
    ilocOrig.getBox(new ByteBufferByteChannel(bb));

    bb.rewind();

    IsoFile isoFile = new IsoFile(new ByteBufferByteChannel(bb));

    ItemLocationBox iloc = (ItemLocationBox) isoFile.getBoxes().get(0);

    Assert.assertEquals(ilocOrig.getBaseOffsetSize(), iloc.getBaseOffsetSize());
    Assert.assertEquals(ilocOrig.getContentSize(), iloc.getContentSize());
    Assert.assertEquals(ilocOrig.getIndexSize(), iloc.getIndexSize());
    Assert.assertEquals(ilocOrig.getLengthSize(), iloc.getLengthSize());
    Assert.assertEquals(ilocOrig.getOffsetSize(), iloc.getOffsetSize());
    Assert.assertEquals(ilocOrig.getItems(), iloc.getItems());
  }
  public void testSimpleRoundTrip(int baseOffsetSize, int indexSize, int lengthSize, int offsetSize)
      throws IOException {
    ItemLocationBox ilocOrig = new ItemLocationBox();
    ilocOrig.setVersion(1);
    ilocOrig.setBaseOffsetSize(baseOffsetSize);
    ilocOrig.setIndexSize(indexSize);
    ilocOrig.setLengthSize(lengthSize);
    ilocOrig.setOffsetSize(offsetSize);
    ByteBuffer bb = ByteBuffer.allocate(l2i(ilocOrig.getSize()));
    ilocOrig.getBox(new ByteBufferByteChannel(bb));
    Assert.assertTrue(bb.remaining() == 0);
    bb.rewind();

    IsoFile isoFile = new IsoFile(new ByteBufferByteChannel(bb));

    ItemLocationBox iloc = (ItemLocationBox) isoFile.getBoxes().get(0);

    Assert.assertEquals(ilocOrig.getBaseOffsetSize(), iloc.getBaseOffsetSize());
    Assert.assertEquals(ilocOrig.getContentSize(), iloc.getContentSize());
    Assert.assertEquals(ilocOrig.getIndexSize(), iloc.getIndexSize());
    Assert.assertEquals(ilocOrig.getLengthSize(), iloc.getLengthSize());
    Assert.assertEquals(ilocOrig.getOffsetSize(), iloc.getOffsetSize());
    Assert.assertEquals(ilocOrig.getItems(), iloc.getItems());
  }