package org.mp4parser.boxes.samplegrouping; import com.googlecode.mp4parser.boxes.BoxWriteReadBase; import org.junit.runner.RunWith; import org.junit.runners.Suite; import java.nio.ByteBuffer; import java.util.Arrays; import java.util.Map; @RunWith(Suite.class) @Suite.SuiteClasses(value = { SampleGroupDescriptionBoxTestSuite.TestRateShareEntryV1.class, SampleGroupDescriptionBoxTestSuite.TestRateShareEntryV0.class, SampleGroupDescriptionBoxTestSuite.TestUnkownEntryV1.class, SampleGroupDescriptionBoxTestSuite.TestRollRecoveryEntryV1.class, SampleGroupDescriptionBoxTestSuite.TestRollRecoveryEntryV0.class, SampleGroupDescriptionBoxTestSuite.TestVariableLengthV1.class, SampleGroupDescriptionBoxTestSuite.TestDeadBytesV1.class }) public class SampleGroupDescriptionBoxTestSuite { public static class TestRateShareEntryV1 extends BoxWriteReadBase<SampleGroupDescriptionBox> { @Override public Class<SampleGroupDescriptionBox> getBoxUnderTest() { return SampleGroupDescriptionBox.class; } @Override public void setupProperties(Map<String, Object> addPropsHere, SampleGroupDescriptionBox box) { RateShareEntry rateShareEntry = new RateShareEntry(); rateShareEntry.setDiscardPriority((short) 56); rateShareEntry.setMaximumBitrate(1000); rateShareEntry.setMinimumBitrate(100); rateShareEntry.setOperationPointCut((short) 2); rateShareEntry.setEntries(Arrays.asList( new RateShareEntry.Entry(100, (short) 50), new RateShareEntry.Entry(1000, (short) 90) )); addPropsHere.put("defaultLength", rateShareEntry.size()); addPropsHere.put("version", 1); addPropsHere.put("groupEntries", Arrays.asList(rateShareEntry, rateShareEntry)); addPropsHere.put("groupingType", RateShareEntry.TYPE); } } public static class TestRateShareEntryV0 extends BoxWriteReadBase<SampleGroupDescriptionBox> { @Override public Class<SampleGroupDescriptionBox> getBoxUnderTest() { return SampleGroupDescriptionBox.class; } @Override public void setupProperties(Map<String, Object> addPropsHere, SampleGroupDescriptionBox box) { RateShareEntry rateShareEntry = new RateShareEntry(); rateShareEntry.setDiscardPriority((short) 56); rateShareEntry.setMaximumBitrate(1000); rateShareEntry.setMinimumBitrate(100); rateShareEntry.setOperationPointCut((short) 2); rateShareEntry.setEntries(Arrays.asList( new RateShareEntry.Entry(100, (short) 50), new RateShareEntry.Entry(1000, (short) 90) )); addPropsHere.put("defaultLength", 0); addPropsHere.put("version", 0); addPropsHere.put("groupEntries", Arrays.asList(rateShareEntry, rateShareEntry)); addPropsHere.put("groupingType", RateShareEntry.TYPE); } } public static class TestUnkownEntryV1 extends BoxWriteReadBase<SampleGroupDescriptionBox> { @Override public Class<SampleGroupDescriptionBox> getBoxUnderTest() { return SampleGroupDescriptionBox.class; } @Override public void setupProperties(Map<String, Object> addPropsHere, SampleGroupDescriptionBox box) { UnknownEntry unknownEntry = new UnknownEntry("abcd"); unknownEntry.setContent(ByteBuffer.wrap(new byte[]{1, 2, 3, 4, 5, 6})); addPropsHere.put("defaultLength", unknownEntry.size()); addPropsHere.put("version", 1); addPropsHere.put("groupEntries", Arrays.asList(unknownEntry, unknownEntry)); addPropsHere.put("groupingType", "unkn"); } } public static class TestRollRecoveryEntryV1 extends BoxWriteReadBase<SampleGroupDescriptionBox> { @Override public Class<SampleGroupDescriptionBox> getBoxUnderTest() { return SampleGroupDescriptionBox.class; } @Override public void setupProperties(Map<String, Object> addPropsHere, SampleGroupDescriptionBox box) { RollRecoveryEntry entry = new RollRecoveryEntry(); entry.setRollDistance((short) 6); addPropsHere.put("defaultLength", entry.size()); addPropsHere.put("version", 1); addPropsHere.put("groupEntries", Arrays.asList(entry, entry)); addPropsHere.put("groupingType", "roll"); } } public static class TestRollRecoveryEntryV0 extends BoxWriteReadBase<SampleGroupDescriptionBox> { @Override public Class<SampleGroupDescriptionBox> getBoxUnderTest() { return SampleGroupDescriptionBox.class; } @Override public void setupProperties(Map<String, Object> addPropsHere, SampleGroupDescriptionBox box) { RollRecoveryEntry entry = new RollRecoveryEntry(); entry.setRollDistance((short) 6); addPropsHere.put("defaultLength", 0); addPropsHere.put("version", 0); addPropsHere.put("groupEntries", Arrays.asList(entry, entry)); addPropsHere.put("groupingType", "roll"); } } public static class TestDeadBytesV1 extends BoxWriteReadBase<SampleGroupDescriptionBox> { @Override public Class<SampleGroupDescriptionBox> getBoxUnderTest() { return SampleGroupDescriptionBox.class; } @Override public void setupProperties(Map<String, Object> addPropsHere, SampleGroupDescriptionBox box) { RollRecoveryEntry entry = new RollRecoveryEntry(); entry.setRollDistance((short) 6); addPropsHere.put("defaultLength", 100); addPropsHere.put("version", 1); addPropsHere.put("groupEntries", Arrays.asList(entry, entry)); addPropsHere.put("groupingType", "roll"); } } public static class TestVariableLengthV1 extends BoxWriteReadBase<SampleGroupDescriptionBox> { @Override public Class<SampleGroupDescriptionBox> getBoxUnderTest() { return SampleGroupDescriptionBox.class; } @Override public void setupProperties(Map<String, Object> addPropsHere, SampleGroupDescriptionBox box) { UnknownEntry entry1 = new UnknownEntry("abcd"); entry1.setContent(ByteBuffer.wrap(new byte[]{1, 2, 3})); UnknownEntry entry2 = new UnknownEntry("abcd"); entry2.setContent(ByteBuffer.wrap(new byte[]{1, 2, 3, 4, 5, 6})); addPropsHere.put("defaultLength", 0); addPropsHere.put("version", 1); addPropsHere.put("groupEntries", Arrays.asList(entry1, entry2)); addPropsHere.put("groupingType", "abcd"); } } }