package com.ibm.wala.mobile.test.droidbench;
import java.io.File;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.net.URI;
import java.util.Set;
import junit.framework.Assert;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import com.ibm.wala.dalvik.test.callGraph.DroidBenchCGTest;
import com.ibm.wala.mobile.Libraries;
import com.ibm.wala.types.MethodReference;
public abstract class DroidBenchCGTestMobile extends DroidBenchCGTest {
protected DroidBenchCGTestMobile(URI[] androidLibs, File androidJavaJar, String apkFile, Set<MethodReference> uncalled) {
super(androidLibs, androidJavaJar, apkFile, uncalled);
}
@Override
protected void assertion(String string, boolean empty) {
Assert.assertTrue(string, empty);
}
public static Test suite(Class<? extends DroidBenchCGTestMobile> cls, String dir) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException {
TestSuite suite = new TestSuite(dir);
suite.setName(dir);
final Constructor<? extends DroidBenchCGTest> ctor = cls.getConstructor(URI[].class, File.class, String.class, Set.class);
for(final Object[] params : DroidBenchCGTest.generateData(Libraries.systemLibs(), null, dir)) {
suite.addTest(new TestCase() {
private final DroidBenchCGTest test = ctor.newInstance(params);
@Override
public String getName() {
return test.apkFile();
}
@Override
public void runTest() throws Exception {
test.runTest();
}
});
}
return suite;
}
}