📄 pluginmanagertest.java
字号:
package net.sf.fmj.test.compat.plugins;import java.io.IOException;import java.util.Vector;import javax.media.Format;import javax.media.format.AudioFormat;import javax.media.format.RGBFormat;import javax.media.protocol.ContentDescriptor;import junit.framework.TestCase;/** * * @author Ken Larson * */public class PlugInManagerTest extends TestCase{ protected void setUp() throws Exception { System.setProperty("javax.media.pim.PlugInManagerInitializer.JMFDefaults", "true"); super.setUp(); } public void testPlugInManager() { synchronized (javax.media.PlugInManager.class) // so that tests that modify the plugins don't conflict. { assertPlugInManagersEqual(); { final Format in = new RGBFormat(); final Format out = new RGBFormat(); final Vector v1 = javax.media.PlugInManager.getPlugInList(in, out, javax.media.PlugInManager.DEMULTIPLEXER); final Vector v2 = net.sf.fmj.test.compat.plugins.PlugInManager.getPlugInList(in, out, javax.media.PlugInManager.DEMULTIPLEXER); assertStringVectorEquals(v1, v2); } { final Format in = new ContentDescriptor("audio.mpeg"); final Format out = null; final Vector v1 = javax.media.PlugInManager.getPlugInList(in, out, javax.media.PlugInManager.DEMULTIPLEXER); final Vector v2 = net.sf.fmj.test.compat.plugins.PlugInManager.getPlugInList(in, out, javax.media.PlugInManager.DEMULTIPLEXER); assertStringVectorEquals(v1, v2); } { final Format in = new AudioFormat("mpegaudio", 16000.0, -1, -1, -1, 1, -1, -1.0, Format.byteArray); final Format out = new AudioFormat("LINEAR", -1.0, -1, -1, -1, -1, -1, -1.0, Format.byteArray); final Vector v1 = javax.media.PlugInManager.getPlugInList(in, out, javax.media.PlugInManager.CODEC); final Vector v2 = net.sf.fmj.test.compat.plugins.PlugInManager.getPlugInList(in, out, javax.media.PlugInManager.CODEC); assertStringVectorEquals(v1, v2); } { final Format in = new AudioFormat("mpegaudio", 16001.0, -1, -1, -1, 1, -1, -1.0, Format.byteArray); final Format out = new AudioFormat("LINEAR", -1.0, -1, -1, -1, -1, -1, -1.0, Format.byteArray); final Vector v1 = javax.media.PlugInManager.getPlugInList(in, out, javax.media.PlugInManager.CODEC); final Vector v2 = net.sf.fmj.test.compat.plugins.PlugInManager.getPlugInList(in, out, javax.media.PlugInManager.CODEC); assertStringVectorEquals(v1, v2); } { final Format in = new AudioFormat("mpegaudio", Format.NOT_SPECIFIED, -1, -1, -1, 1, -1, -1.0, Format.byteArray); final Format out = new AudioFormat("LINEAR", -1.0, -1, -1, -1, -1, -1, -1.0, Format.byteArray); final Vector v1 = javax.media.PlugInManager.getPlugInList(in, out, javax.media.PlugInManager.CODEC); final Vector v2 = net.sf.fmj.test.compat.plugins.PlugInManager.getPlugInList(in, out, javax.media.PlugInManager.CODEC); assertStringVectorEquals(v1, v2); } { final boolean r1 = javax.media.PlugInManager.removePlugIn("com.ibm.media.parser.video.MpegParser", javax.media.PlugInManager.DEMULTIPLEXER); final boolean r2 = net.sf.fmj.test.compat.plugins.PlugInManager.removePlugIn("com.ibm.media.parser.video.MpegParser", javax.media.PlugInManager.DEMULTIPLEXER); assertEquals(r1, r2); assertPlugInManagersEqual(); } { final boolean a1 = javax.media.PlugInManager.addPlugIn("com.ibm.media.parser.video.MpegParser", new Format[] { new ContentDescriptor("audio.mpeg"), new ContentDescriptor("video.mpeg"), new ContentDescriptor("audio.mpeg"), }, new Format[] {}, javax.media.PlugInManager.DEMULTIPLEXER); final boolean a2 = net.sf.fmj.test.compat.plugins.PlugInManager.addPlugIn("com.ibm.media.parser.video.MpegParser", new Format[] { new ContentDescriptor("audio.mpeg"), new ContentDescriptor("video.mpeg"), new ContentDescriptor("audio.mpeg"), }, new Format[] {}, javax.media.PlugInManager.DEMULTIPLEXER); assertEquals(a1, a2); assertPlugInManagersEqual(); } { final boolean a1 = javax.media.PlugInManager.addPlugIn("com.ibm.media.parser.video.MpegParser", new Format[] { new ContentDescriptor("audio.mpeg"), new ContentDescriptor("video.mpeg"), new ContentDescriptor("audio.mpeg"), }, new Format[] {}, javax.media.PlugInManager.DEMULTIPLEXER); final boolean a2 = net.sf.fmj.test.compat.plugins.PlugInManager.addPlugIn("com.ibm.media.parser.video.MpegParser", new Format[] { new ContentDescriptor("audio.mpeg"), new ContentDescriptor("video.mpeg"), new ContentDescriptor("audio.mpeg"), }, new Format[] {}, javax.media.PlugInManager.DEMULTIPLEXER); assertEquals(a1, a2); assertFalse(a1); assertPlugInManagersEqual(); } { final boolean a1 = javax.media.PlugInManager.addPlugIn("org.foo.media.parser.video.MpegParser", new Format[] { new ContentDescriptor("audio.mpeg"), new ContentDescriptor("video.mpeg"), new ContentDescriptor("audio.mpeg"), }, new Format[] {}, javax.media.PlugInManager.DEMULTIPLEXER); final boolean a2 = net.sf.fmj.test.compat.plugins.PlugInManager.addPlugIn("org.foo.media.parser.video.MpegParser", new Format[] { new ContentDescriptor("audio.mpeg"), new ContentDescriptor("video.mpeg"), new ContentDescriptor("audio.mpeg"), }, new Format[] {}, javax.media.PlugInManager.DEMULTIPLEXER); assertEquals(a1, a2); assertPlugInManagersEqual(); } { final boolean r1 = javax.media.PlugInManager.removePlugIn("org.foo.media.parser.video.MpegParser", javax.media.PlugInManager.DEMULTIPLEXER); final boolean r2 = net.sf.fmj.test.compat.plugins.PlugInManager.removePlugIn("org.foo.media.parser.video.MpegParser", javax.media.PlugInManager.DEMULTIPLEXER); assertEquals(r1, r2); assertPlugInManagersEqual(); } { final Vector v1 = new Vector(); final Vector v2 = new Vector(); v1.add("com.ibm.media.parser.video.MpegParser"); v2.add("com.ibm.media.parser.video.MpegParser"); javax.media.PlugInManager.setPlugInList(v1, javax.media.PlugInManager.DEMULTIPLEXER); net.sf.fmj.test.compat.plugins.PlugInManager.setPlugInList(v2, javax.media.PlugInManager.DEMULTIPLEXER); assertPlugInManagersEqual(); } { javax.media.PlugInManager.setPlugInList(new Vector(), javax.media.PlugInManager.DEMULTIPLEXER); net.sf.fmj.test.compat.plugins.PlugInManager.setPlugInList(new Vector(), javax.media.PlugInManager.DEMULTIPLEXER); assertPlugInManagersEqual(); } { final Vector v1 = new Vector(); final Vector v2 = new Vector(); v1.add("com.ibm.media.parser.video.MpegParser"); v2.add("com.ibm.media.parser.video.MpegParser"); javax.media.PlugInManager.setPlugInList(v1, javax.media.PlugInManager.DEMULTIPLEXER); net.sf.fmj.test.compat.plugins.PlugInManager.setPlugInList(v2, javax.media.PlugInManager.DEMULTIPLEXER); assertPlugInManagersEqual(); } { final boolean a1 = javax.media.PlugInManager.addPlugIn("org.foo.media.parser.video.MpegParser", new Format[] { new ContentDescriptor("audio.mpeg"), new ContentDescriptor("video.mpeg"), new ContentDescriptor("audio.mpeg"), }, new Format[] {}, javax.media.PlugInManager.DEMULTIPLEXER); final boolean a2 = net.sf.fmj.test.compat.plugins.PlugInManager.addPlugIn("org.foo.media.parser.video.MpegParser", new Format[] { new ContentDescriptor("audio.mpeg"), new ContentDescriptor("video.mpeg"), new ContentDescriptor("audio.mpeg"), }, new Format[] {}, javax.media.PlugInManager.DEMULTIPLEXER); assertEquals(a1, a2); assertPlugInManagersEqual(); } { IOException e1 = null; IOException e2 = null; try { javax.media.PlugInManager.commit(); // real one does not actually seem to throw the IOException - appears to just print out "java.lang.reflect.InvocationTargetException" instead. } catch (IOException e) { e1 = e; e.printStackTrace(); } try { net.sf.fmj.test.compat.plugins.PlugInManager.commit(); } catch (IOException e) { e2 = e; e.printStackTrace(); } assertEquals(e1 == null, e2 == null); assertPlugInManagersEqual(); } } } public void assertPlugInManagersEqual() { for (int i = 1; i <= 5; ++i) { final Vector v1 = javax.media.PlugInManager.getPlugInList(null, null, i); final Vector v2 = net.sf.fmj.test.compat.plugins.PlugInManager.getPlugInList(null, null, i); if (v1 == null) throw new NullPointerException("v1"); if (v2 == null) throw new NullPointerException("v2"); if (v1.size() != v2.size()) { dumpStringVector(v1); System.out.println("---"); dumpStringVector(v2); } assertEquals(v1.size(), v2.size()); for (int j = 0; j < v1.size(); ++j) { final String s1 = (String) v1.get(j); final String s2 = (String) v2.get(j); assertEquals(s1, s2); final Format[] f1s = javax.media.PlugInManager.getSupportedInputFormats(s1, i); final Format[] f2s = net.sf.fmj.test.compat.plugins.PlugInManager.getSupportedInputFormats(s1, i); assertEquals(f1s, f2s); } } { final String s = "com.sun.media.parser.audio.WavParser"; final Format[] in1 = javax.media.PlugInManager.getSupportedInputFormats(s, javax.media.PlugInManager.DEMULTIPLEXER); final Format[] in2 = net.sf.fmj.test.compat.plugins.PlugInManager.getSupportedInputFormats(s, javax.media.PlugInManager.DEMULTIPLEXER); assertEquals(in1, in2); final Format[] out1 = javax.media.PlugInManager.getSupportedOutputFormats(s, javax.media.PlugInManager.DEMULTIPLEXER); final Format[] out2 = net.sf.fmj.test.compat.plugins.PlugInManager.getSupportedOutputFormats(s, javax.media.PlugInManager.DEMULTIPLEXER); assertEquals(out1, out2); } } private void assertEquals(Format[] f1s, Format[] f2s) { assertEquals(f1s == null, f2s == null); if (f1s != null) { assertEquals(f1s.length, f2s.length); for (int k = 0; k < f1s.length; ++k) { assertEquals(f1s[k], f2s[k]); } } } private void assertStringVectorEquals(Vector v1, Vector v2) { assertEquals(v1 == null, v2 == null); if (v1 == null) return; assertEquals(v1.size(), v2.size()); for (int j = 0; j < v1.size(); ++j) { final String s1 = (String) v1.get(j); final String s2 = (String) v2.get(j); assertEquals(s1, s2); } } private void dumpStringVector(Vector v1) { for (int i = 0; i < v1.size(); ++i) { String s = (String) v1.get(i); System.out.println(s); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -