basicplugintest.java
来自「FMJ(freedom media for java)是java视频开发的新选择」· Java 代码 · 共 923 行 · 第 1/2 页
JAVA
923 行
b.setData(bBuf); b.setLength(0); assertTrue(b.getData() == bBuf); assertEquals(b.getLength(), 0); assertEquals(b.getOffset(), 0); for (int i = 0; i < 10; ++i) { final int[] ba = p.doValidateIntArraySize(b, i);// if (i > bBuf.length)// assertTrue(ba != bBuf);// else// assertTrue(ba == bBuf); assertEquals(ba.length, i); for (int j = 0; j < i; ++j) { assertEquals(ba[j], 0); } assertEquals(b.getData(), ba); assertEquals(b.getLength(), 0); assertEquals(b.getOffset(), 0); } } // appears to simply reallocate if not a int array. // See if it copies existing data: { final Buffer b = new Buffer(); final int[] bBuf = new int[] {0, 1, 2, 3, 4}; b.setData(bBuf); b.setLength(0); assertTrue(b.getData() == bBuf); assertEquals(b.getLength(), 0); assertEquals(b.getOffset(), 0); for (int i = 0; i < 10; ++i) { final int[] ba = p.doValidateIntArraySize(b, i); if (i > bBuf.length) assertTrue(ba != bBuf); else assertTrue(ba == bBuf); final int max = i > bBuf.length ? i : bBuf.length; assertEquals(ba.length, max); for (int j = 0; j < i; ++j) { if (j < bBuf.length) assertEquals(ba[j], bBuf[j]); else assertEquals(ba[j], 0); } assertEquals(b.getData(), ba); assertEquals(b.getLength(), 0); assertEquals(b.getOffset(), 0); } } // it does copy existing data. } public void testValidate() { final MyBasicPlugIn p = new MyBasicPlugIn(); final boolean[] allowNatives = new boolean[] {true, false}; for (int n = 0; n < allowNatives.length; ++n) { final boolean allowNative = allowNatives[n]; // test empty buffer, null format: { final Buffer b = new Buffer(); try { final byte[] ba = (byte[]) p.doValidateData(b, 0, allowNative); assertTrue(false); } catch (NullPointerException e) { } } // buf of len 5 with length set to 5, null format: { final Buffer b = new Buffer(); final byte[] bBuf = new byte[5]; b.setData(bBuf); b.setLength(bBuf.length); try { final byte[] ba = (byte[]) p.doValidateData(b, 0, allowNative); assertTrue(false); } catch (NullPointerException e) { } } // buf of len 5 with length set to 5, null format datatype: { final Buffer b = new Buffer(); final byte[] bBuf = new byte[5]; b.setFormat(new Format("abc", null)); b.setData(bBuf); b.setLength(bBuf.length); final byte[] ba = (byte[]) p.doValidateData(b, 0, allowNative); assertEquals(ba, null); assertEquals(b.getData(), bBuf); } // buf of len 5 with length set to 5, byte array format final String[] encodings = new String[] {null, "abc"}; for (int k = 0; k < encodings.length; ++k) { final String encoding = encodings[k]; final Buffer b = new Buffer(); final byte[] bBuf = new byte[] {1, 2, 3, 4, 5}; b.setFormat(new Format(encoding, Format.byteArray)); b.setData(bBuf); b.setLength(bBuf.length); for (int i = 0; i < 10; ++i) { final byte[] ba = (byte[]) p.doValidateData(b, i, allowNative); final int max = i > bBuf.length ? i : bBuf.length; assertEquals(ba.length, max); for (int j = 0; j < i; ++j) { if (j < bBuf.length) assertEquals(ba[j], bBuf[j]); else assertEquals(ba[j], 0); } } } // non-byte-array format: - reallocates as type in format. { final Buffer b = new Buffer(); final byte[] bBuf = new byte[] {1, 2, 3, 4, 5}; b.setFormat(new Format(null, Format.intArray)); b.setData(bBuf); b.setLength(bBuf.length); for (int i = 0; i < 10; ++i) { final int[] ba = (int[]) p.doValidateData(b, i, allowNative); final int max = i > bBuf.length ? i : bBuf.length; assertEquals(ba.length, i); for (int j = 0; j < i; ++j) { assertEquals(ba[j], 0); } } } // don't set length { final Buffer b = new Buffer(); final byte[] bBuf = new byte[] {1, 2, 3, 4, 5}; b.setFormat(new Format(null, Format.byteArray)); b.setData(bBuf); //b.setLength(bBuf.length); for (int i = 0; i < 10; ++i) { final byte[] ba = (byte[]) p.doValidateData(b, i, allowNative); final int max = i > bBuf.length ? i : bBuf.length; assertEquals(ba.length, max); for (int j = 0; j < i; ++j) { if (j < bBuf.length) assertEquals(ba[j], bBuf[j]); else assertEquals(ba[j], 0); } } } } } public void testGetNativeData() { final MyBasicPlugIn p = new MyBasicPlugIn(); // test empty buffer { final Buffer b = new Buffer(); assertEquals(p.doGetNativeData(b.getData()), 0L); } { final Buffer b = new Buffer(); final byte[] bBuf = new byte[] {1, 2, 3, 4, 5}; b.setData(bBuf); assertEquals(p.doGetNativeData(b.getData()), 0L); } { final Buffer b = new Buffer(); final byte[] bBuf = new byte[] {1, 2, 3, 4, 5}; b.setData(bBuf); b.setLength(100); b.setOffset(20); b.setDuration(100000); b.setDiscard(false); b.setFormat(new Format("abc", Format.byteArray)); b.setSequenceNumber(1234); b.setTimeStamp(9999L); assertEquals(p.doGetNativeData(b.getData()), 0L); } { final Buffer b = new Buffer(); final int[] bBuf = new int[] {1, 2, 3, 4, 5}; b.setData(bBuf); b.setLength(100); b.setOffset(20); b.setDuration(100000); b.setDiscard(false); b.setFormat(new Format("abc", Format.intArray)); b.setSequenceNumber(1234); b.setTimeStamp(9999L); assertEquals(p.doGetNativeData(b.getData()), 0L); } { final TracingBuffer b = new TracingBuffer(); final Long n = new Long(1000); b.setData(n); assertEquals(p.doGetNativeData(b.getData()), 0L); //System.out.println(b.getStringBuffer().toString()); } } public void testGetNativeData2() { final MyBasicPlugIn p = new MyBasicPlugIn(); { final TracingBuffer b = new TracingBuffer(); final Long n = new Long(1000); b.setData(n); assertEquals(p.doGetNativeData("12345678"), 0L); assertEquals(p.doGetNativeData(new Short((short) 100)), 0L); assertEquals(p.doGetNativeData(new Integer(100)), 0L); assertEquals(p.doGetNativeData(new byte[]{0,1,2,3,4,5,6,7}), 0L); assertEquals(p.doGetNativeData(new byte[]{}), 0L); assertEquals(p.doGetNativeData(new byte[100]), 0L); assertEquals(p.doGetNativeData(null), 0L); // my investigations lead me to ExtBuffer and NBA, but not sure where to go next.// ExtBuffer eb = new ExtBuffer();// NBA nba = new NBA(null, 0);// eb.setNativeData(nba);// assertEquals(p.doGetNativeData(null), 0L); //System.out.println(b.getStringBuffer().toString()); } } public void testPlugInExists() { assertFalse(BasicPlugIn.plugInExists("abc", -1)); assertFalse(BasicPlugIn.plugInExists("abc", 0)); assertFalse(BasicPlugIn.plugInExists("abc", 1)); assertFalse(BasicPlugIn.plugInExists("", 1)); try { BasicPlugIn.plugInExists(null, 1); assertTrue(false); } catch (NullPointerException e) { } if (false) // this one only works if JMF is in the classpath: assertTrue(BasicPlugIn.plugInExists("com.ibm.media.parser.video.MpegParser", PlugInManager.DEMULTIPLEXER)); for (int i = 1; i <= 5; ++i) { final Vector v = PlugInManager.getPlugInList(null, null, i); for (int j = 0; j < v.size(); ++j) { final String s = (String) v.get(j); assertTrue(BasicPlugIn.plugInExists(s, i)); } } } public void testGetClassForName() throws ClassNotFoundException { assertEquals(BasicPlugIn.getClassForName("java.lang.String"), String.class); } public void testError() { final MyBasicPlugIn p = new MyBasicPlugIn(); try { p.doError(); assertTrue(false); } catch (RuntimeException e) { } } public void testgetInputData() { final MyBasicPlugIn p = new MyBasicPlugIn(); { final TracingBuffer b = new TracingBuffer(); p.doGetInputData(b); //System.out.println(b.getStringBuffer().toString()); assertEquals(b.getStringBuffer().toString(), "getData\n"); } if (true) { final TracingBuffer b = new TracingBuffer(); final byte[] bytes = new byte[] {0, 1}; b.setData(bytes); p.doGetInputData(b); //System.out.println(b.getStringBuffer().toString()); assertEquals(b.getStringBuffer().toString(), "setData\ngetData\n"); assertTrue(bytes == b.getData()); } } public void testgetOutputData() { final MyBasicPlugIn p = new MyBasicPlugIn(); { final TracingBuffer b = new TracingBuffer(); p.doGetOutputData(b); //System.out.println(b.getStringBuffer().toString()); assertEquals(b.getStringBuffer().toString(), "getData\n"); } if (true) { final TracingBuffer b = new TracingBuffer(); final byte[] bytes = new byte[] {0, 1}; b.setData(bytes); p.doGetOutputData(b); //System.out.println(b.getStringBuffer().toString()); assertEquals(b.getStringBuffer().toString(), "setData\ngetData\n"); assertTrue(bytes == b.getData()); } } class MyBasicPlugIn extends BasicPlugIn { //@Override public void close() { } //@Override public String getName() { return null; } //@Override public void open() throws ResourceUnavailableException { } //@Override public void reset() { } public byte[] doValidateByteArraySize(Buffer buffer, int newSize) { return validateByteArraySize(buffer, newSize); } public short[] doValidateShortArraySize(Buffer buffer, int newSize) { return validateShortArraySize(buffer, newSize); } public int[] doValidateIntArraySize(Buffer buffer, int newSize) { return validateIntArraySize(buffer, newSize); } public Object doValidateData(Buffer buffer, int length, boolean allowNative) { return validateData(buffer, length, allowNative); } public long doGetNativeData(Object data) { return getNativeData(data); } public void doError() { error(); } public Object doGetInputData(Buffer arg0) { return super.getInputData(arg0); } public Object doGetOutputData(Buffer arg0) { return super.getOutputData(arg0); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?