package org.mp4parser.tools.boxes; import junit.framework.Assert; import org.junit.Test; import org.mp4parser.IsoFile; import org.mp4parser.boxes.iso14496.part12.FreeBox; import org.mp4parser.boxes.iso14496.part12.FreeSpaceBox; import java.io.*; import java.nio.ByteBuffer; import java.nio.channels.Channels; import java.nio.channels.FileChannel; public class FreeBoxTest { @Test public void testInOutNoChange() throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); FreeBox fb = new FreeBox(1000); ByteBuffer data = fb.getData(); data.rewind(); data.put(new byte[]{1, 2, 3, 4, 5, 6}); fb.getBox(Channels.newChannel(baos)); Assert.assertEquals(baos.toByteArray()[8], 1); Assert.assertEquals(baos.toByteArray()[9], 2); Assert.assertEquals(baos.toByteArray()[10], 3); Assert.assertEquals(baos.toByteArray()[11], 4); } @Test public void tesAddAndReplace() throws IOException { FreeBox fb = new FreeBox(1000); long startSize = fb.getSize(); ByteBuffer data = fb.getData(); data.position(994); data.put(new byte[]{1, 2, 3, 4, 5, 6}); FreeSpaceBox fsb = new FreeSpaceBox(); fsb.setData(new byte[100]); fb.addAndReplace(fsb); File f = File.createTempFile(this.getClass().getSimpleName(), ""); f.deleteOnExit(); FileChannel fc = new FileOutputStream(f).getChannel(); fb.getBox(fc); fc.close(); IsoFile isoFile = new IsoFile(new FileInputStream(f).getChannel()); Assert.assertEquals(2, isoFile.getBoxes().size()); Assert.assertEquals(FreeSpaceBox.TYPE, isoFile.getBoxes().get(0).getType()); Assert.assertEquals(FreeBox.TYPE, isoFile.getBoxes().get(1).getType()); Assert.assertEquals(startSize, isoFile.getBoxes().get(0).getSize() + isoFile.getBoxes().get(1).getSize()); } }