package org.gstreamer.lowlevel;
import org.junit.runner.Runner;
import org.junit.runner.notification.RunNotifier;
import org.junit.runners.Suite;
import org.junit.runners.model.InitializationError;
import org.junit.runners.model.RunnerBuilder;
import com.sun.jna.Library;
import com.sun.jna.Native;
public class PreloadLibsSuite extends Suite {
@SuppressWarnings("unused")
private static final boolean libsPreloaded = preloadLibraries();
public PreloadLibsSuite(Class<?> klass, RunnerBuilder builder)
throws InitializationError {
super(klass, builder);
}
public PreloadLibsSuite(RunnerBuilder builder, Class<?>[] classes)
throws InitializationError {
super(builder, classes);
}
@Override
protected void runChild(Runner runner, RunNotifier notifier) {
super.runChild(runner, notifier);
}
private static boolean preloadLibraries() {
String[] preloadLibs = {
"gstreamer"
};
for (String lib: preloadLibs) {
load(lib);
}
GNative.setGlobalLibName(null);
return true;
}
private static void load(String lib) {
for (String suf1: new String[] {"", "-1.0", "-0.10"}) {
try {
for (String suf2: new String[] {"", "-0"}) {
System.loadLibrary(lib + suf1 + suf2);
Native.loadLibrary(lib + suf1 + suf2, Library.class);
return;
}
} catch (UnsatisfiedLinkError e) {
}
}
throw new UnsatisfiedLinkError("can not load library " + lib);
}
}