BytecodeTest in SourceFileBytecodeTest umbenannt

ExtendsObjectTest von SourceFileBytecodeTest zu ASTBytecodeTest überführt
This commit is contained in:
Enrico Schrödter 2015-11-10 18:26:29 +01:00
parent 0c63695f7b
commit ecad9e138c
17 changed files with 57 additions and 188 deletions

View File

@ -19,10 +19,10 @@ import de.dhbwstuttgart.typeinference.TypeinferenceResults;
public abstract class ASTBytecodeTest { public abstract class ASTBytecodeTest {
public static String rootDirectory = System.getProperty("user.dir")+"/test/bytecode/"; public static String rootDirectory = System.getProperty("user.dir")+"/test/bytecode/";
protected String testName = ""; protected static String testName = "No Testname defined!";
protected SourceFile sourceFile = new SourceFile(); protected static SourceFile sourceFile = new SourceFile();
protected TypeinferenceResults results = new TypeinferenceResults(); protected static TypeinferenceResults results = new TypeinferenceResults();
protected Class getClassToTest(){ protected Class getClassToTest(){
Class classToTest = null; Class classToTest = null;
@ -48,12 +48,10 @@ public abstract class ASTBytecodeTest {
} }
public ASTBytecodeTest(){ public ASTBytecodeTest(){
init(); System.out.println("ASTBytecodeTest");
LoggerConfiguration logConfig = new LoggerConfiguration().setOutput(Section.PARSER, System.out); LoggerConfiguration logConfig = new LoggerConfiguration().setOutput(Section.PARSER, System.out);
MyCompilerAPI compiler = MyCompiler.getAPI(logConfig); MyCompilerAPI compiler = MyCompiler.getAPI(logConfig);
try { try {
Menge<SourceFile> sourceFiles = new Menge<>(); Menge<SourceFile> sourceFiles = new Menge<>();
sourceFiles.add(sourceFile); sourceFiles.add(sourceFile);
@ -64,6 +62,7 @@ public abstract class ASTBytecodeTest {
JavaClass javaClass = result.getByteCode().getJavaClass(); JavaClass javaClass = result.getByteCode().getJavaClass();
javaClass.dump(new File(rootDirectory+javaClass.getClassName()+".class")); javaClass.dump(new File(rootDirectory+javaClass.getClassName()+".class"));
System.out.println(new File(rootDirectory+javaClass.getClassName()+".class").getAbsolutePath()); System.out.println(new File(rootDirectory+javaClass.getClassName()+".class").getAbsolutePath());
for(ClassGenerator cg: result.getByteCode().getExtraClasses().values()){ for(ClassGenerator cg: result.getByteCode().getExtraClasses().values()){
@ -74,6 +73,4 @@ public abstract class ASTBytecodeTest {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
protected abstract void init();
} }

View File

@ -22,7 +22,7 @@ import de.dhbwstuttgart.typeinference.Menge;
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet; import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet;
public class NewClassTest extends BytecodeTest{ public class NewClassTest extends SourceFileBytecodeTest{
@Override @Override
protected void init() { protected void init() {
testName = "NewClass"; testName = "NewClass";

View File

@ -13,14 +13,14 @@ import junit.framework.TestCase;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
public abstract class BytecodeTest extends TestCase{ public abstract class SourceFileBytecodeTest extends TestCase{
public String rootDirectory = System.getProperty("user.dir")+"/test/bytecode/"; public String rootDirectory = System.getProperty("user.dir")+"/test/bytecode/";
public String testFile; public String testFile;
public String outputDirectory; public String outputDirectory;
protected String testName; protected String testName;
public BytecodeTest(){ public SourceFileBytecodeTest(){
init(); init();
if(testName != null){ if(testName != null){

View File

@ -11,9 +11,9 @@ import java.util.Vector;
import org.junit.Test; import org.junit.Test;
import bytecode.BytecodeTest; import bytecode.SourceFileBytecodeTest;
public class AutoOverloadingTest extends BytecodeTest{ public class AutoOverloadingTest extends SourceFileBytecodeTest{
@Override @Override
protected void init() { protected void init() {
testName = "AutoOverloading"; testName = "AutoOverloading";

View File

@ -3,6 +3,8 @@ package bytecode.types;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import bytecode.ASTBytecodeTest; import bytecode.ASTBytecodeTest;
@ -12,16 +14,16 @@ import de.dhbwstuttgart.syntaxtree.factory.ASTFactory;
public class ExtendsObjectTest extends ASTBytecodeTest{ public class ExtendsObjectTest extends ASTBytecodeTest{
public static String rootDirectory = System.getProperty("user.dir")+"/test/bytecode/types/"; public static String rootDirectory = System.getProperty("user.dir")+"/test/bytecode/types/";
protected String testName = "ExtendsObjectTest2"; protected static String testName = "ExtendsObjectTest";
protected void init(){ @BeforeClass
public static void init(){
/* /*
class ExtendsObject extends Object{ class ExtendsObject extends Object{
} }
*/ */
de.dhbwstuttgart.syntaxtree.Class classToTest = ASTFactory.createClass("ExtendsObjectTest2", null, null, null, sourceFile); de.dhbwstuttgart.syntaxtree.Class classToTest = ASTFactory.createClass(testName, null, null, null, sourceFile);
sourceFile.addElement(classToTest); sourceFile.addElement(classToTest);
} }

View File

@ -10,9 +10,9 @@ import java.util.Vector;
import org.junit.Test; import org.junit.Test;
import bytecode.BytecodeTest; import bytecode.SourceFileBytecodeTest;
public class ExtendsType extends BytecodeTest{ public class ExtendsTypeTest extends SourceFileBytecodeTest{
@Override @Override
protected void init() { protected void init() {
testName = "SuperType"; testName = "SuperType";

View File

@ -1,5 +0,0 @@
import java.util.Vector;
class ExtendsVector extends Vector<Object>{
}

View File

@ -12,7 +12,7 @@ import junit.framework.TestCase;
import org.junit.Test; import org.junit.Test;
import bytecode.BytecodeTest; import bytecode.SourceFileBytecodeTest;
import plugindevelopment.TypeInsertTester; import plugindevelopment.TypeInsertTester;
import de.dhbwstuttgart.core.MyCompiler; import de.dhbwstuttgart.core.MyCompiler;
import de.dhbwstuttgart.core.MyCompilerAPI; import de.dhbwstuttgart.core.MyCompilerAPI;
@ -24,7 +24,7 @@ import de.dhbwstuttgart.typeinference.Menge;
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet; import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet;
public class ExtendsVectorStringTest extends BytecodeTest{ public class ExtendsVectorStringTest extends SourceFileBytecodeTest{
@Override @Override
protected void init() { protected void init() {
testName = "ExtendsVectorString"; testName = "ExtendsVectorString";

View File

@ -2,47 +2,42 @@ package bytecode.types;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Vector;
import junit.framework.TestCase;
import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import bytecode.BytecodeTest; import bytecode.ASTBytecodeTest;
import plugindevelopment.TypeInsertTester; import de.dhbwstuttgart.syntaxtree.factory.ASTFactory;
import de.dhbwstuttgart.core.MyCompiler; import de.dhbwstuttgart.syntaxtree.type.RefType;
import de.dhbwstuttgart.core.MyCompilerAPI;
import de.dhbwstuttgart.logger.LoggerConfiguration;
import de.dhbwstuttgart.logger.Section;
import de.dhbwstuttgart.parser.JavaParser.yyException;
import de.dhbwstuttgart.typeinference.ByteCodeResult;
import de.dhbwstuttgart.typeinference.Menge;
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet;
public class ExtendsVectorTest extends BytecodeTest{
@Override public class ExtendsVectorTest extends ASTBytecodeTest{
protected void init() { public static String rootDirectory = System.getProperty("user.dir")+"/test/bytecode/types/";
testName = "ExtendsVector";
rootDirectory = System.getProperty("user.dir")+"/test/bytecode/types/"; protected static String testName = "ExtendsVectorTest2";
@BeforeClass
public static void init(){
/*
import java.util.Vector;
class ExtendsVector extends Vector<Object>{
}
*/
de.dhbwstuttgart.syntaxtree.Class classToTest = ASTFactory.createClass(testName, new RefType("java.util.Vector", sourceFile, 0), null, null, sourceFile);
sourceFile.addElement(classToTest);
} }
@Test @Test
public void testConstruct(){ public void testSupertype(){
try{ try{
ClassLoader classLoader = getClassLoader(); ClassLoader classLoader = getClassLoader();
Class cls = classLoader.loadClass(testName); Class cls = classLoader.loadClass(testName);
Object obj = cls.newInstance(); assertEquals("java.util.Vector", cls.getSuperclass().getName());
Constructor method = cls.getConstructor(new Class[]{});
method.newInstance();
assertTrue(true);
}catch(Exception e){ }catch(Exception e){
e.printStackTrace(); e.printStackTrace();
fail(); fail();

View File

@ -10,9 +10,9 @@ import java.util.Vector;
import org.junit.Test; import org.junit.Test;
import bytecode.BytecodeTest; import bytecode.SourceFileBytecodeTest;
public class LocalVariableStringVectorTest extends BytecodeTest{ public class LocalVariableStringVectorTest extends SourceFileBytecodeTest{
@Override @Override
protected void init() { protected void init() {
testName = "LocalVariableStringVector"; testName = "LocalVariableStringVector";

View File

@ -10,9 +10,9 @@ import java.util.Vector;
import org.junit.Test; import org.junit.Test;
import bytecode.BytecodeTest; import bytecode.SourceFileBytecodeTest;
public class LocalVariableVectorTest extends BytecodeTest{ public class LocalVariableVectorTest extends SourceFileBytecodeTest{
@Override @Override
protected void init() { protected void init() {
testName = "LocalVariableVector"; testName = "LocalVariableVector";

View File

@ -11,11 +11,11 @@ import java.util.Vector;
import org.junit.Test; import org.junit.Test;
import bytecode.BytecodeTest; import bytecode.SourceFileBytecodeTest;
import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.logger.Logger;
import de.dhbwstuttgart.logger.Section; import de.dhbwstuttgart.logger.Section;
public class MethodWithTypedVectorTest extends BytecodeTest{ public class MethodWithTypedVectorTest extends SourceFileBytecodeTest{
@Override @Override
protected void init() { protected void init() {
testName = "MethodWithTypedVector"; testName = "MethodWithTypedVector";

View File

@ -11,11 +11,11 @@ import java.util.Vector;
import org.junit.Test; import org.junit.Test;
import bytecode.BytecodeTest; import bytecode.SourceFileBytecodeTest;
import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.logger.Logger;
import de.dhbwstuttgart.logger.Section; import de.dhbwstuttgart.logger.Section;
public class MethodWithUntypedVectorTest extends BytecodeTest{ public class MethodWithUntypedVectorTest extends SourceFileBytecodeTest{
@Override @Override
protected void init() { protected void init() {
testName = "MethodWithUntypedVector"; testName = "MethodWithUntypedVector";

View File

@ -11,9 +11,9 @@ import java.util.Vector;
import org.junit.Test; import org.junit.Test;
import bytecode.BytecodeTest; import bytecode.SourceFileBytecodeTest;
public class OverloadingAdditionTest extends BytecodeTest{ public class OverloadingAdditionTest extends SourceFileBytecodeTest{
@Override @Override
protected void init() { protected void init() {
testName = "OverloadingAddition"; testName = "OverloadingAddition";

View File

@ -10,9 +10,9 @@ import java.util.Vector;
import org.junit.Test; import org.junit.Test;
import bytecode.BytecodeTest; import bytecode.SourceFileBytecodeTest;
public class OverloadingTest extends BytecodeTest{ public class OverloadingTest extends SourceFileBytecodeTest{
@Override @Override
protected void init() { protected void init() {
testName = "Overloading"; testName = "Overloading";

View File

@ -1,120 +0,0 @@
package bytecode.types;
import static org.junit.Assert.*;
import java.io.File;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Stack;
import java.util.Vector;
import org.junit.Test;
import bytecode.BytecodeTest;
import de.dhbwstuttgart.logger.Logger;
import de.dhbwstuttgart.logger.Section;
public class ReflectionTest{
@Test
public void testUntypedVectorDeclaredMethods() {
try{
File file = new File(System.getProperty("user.dir")+"/test/bytecode/types/");
URL url = file.toURL();
URL[] urls = new URL[]{url};
ClassLoader classLoader = new URLClassLoader(urls);
Class untypedVectorTest = classLoader.loadClass("UntypedVector");
for(Method method: untypedVectorTest.getDeclaredMethods()){
System.out.println(method.toGenericString());
}
}catch(Exception e){
throw new RuntimeException(e);
}
}
@Test
public void testUntypedVectorDeclaredMethodsCallMethod() {
try{
File file = new File(System.getProperty("user.dir")+"/test/bytecode/types/");
URL url = file.toURL();
URL[] urls = new URL[]{url};
ClassLoader classLoader = new URLClassLoader(urls);
Class untypedVectorTest = classLoader.loadClass("UntypedVector");
Class stringVector = classLoader.loadClass("java%util%Vector%%java%lang%Object%");
Object stringVectorObj = stringVector.newInstance();
for(Method method: untypedVectorTest.getDeclaredMethods()){
method.invoke(untypedVectorTest.newInstance(), stringVectorObj);
}
}catch(Exception e){
throw new RuntimeException(e);
}
}
@Test
public void testUntypedVectorMethod() {
try{
File file = new File(System.getProperty("user.dir")+"/test/bytecode/types/");
URL url = file.toURL();
URL[] urls = new URL[]{url};
ClassLoader classLoader = new URLClassLoader(urls);
Class untypedVectorTest = classLoader.loadClass("UntypedVector");
Class stringVector = classLoader.loadClass("java%util%Vector%%java%lang%Object%");
Class[] params = new Class[1];
params[0] = stringVector;
Method method = untypedVectorTest.getDeclaredMethod("method", params);
method.invoke(untypedVectorTest.newInstance(), stringVector.newInstance());
}catch(Exception e){
throw new RuntimeException(e);
}
}
@Test
public void testStdVectorAdd() {
try{
Vector<String> vector = new Vector<String>();
Class vectorClass = vector.getClass();
String helloWorld = new String("Hello World!");
Class[] params = new Class[1];
params[0] = new Object().getClass();
Method method = vectorClass.getDeclaredMethod("add", params);
method.invoke(vector, helloWorld);
}catch(Exception e){
throw new RuntimeException(e);
}
}
@Test
public void testStdVectorEnsureCapacity() {
try{
Vector<String> vector = new Vector<String>();
Class vectorClass = vector.getClass();
Integer integer = new Integer(1);
Class[] params = new Class[1];
params[0] = int.class;
Method method = vectorClass.getDeclaredMethod("ensureCapacity", params);
method.invoke(vector, integer);
}catch(Exception e){
throw new RuntimeException(e);
}
}
}

View File

@ -11,9 +11,9 @@ import java.util.Vector;
import org.junit.Test; import org.junit.Test;
import bytecode.BytecodeTest; import bytecode.SourceFileBytecodeTest;
public class SuperType extends BytecodeTest{ public class SuperType extends SourceFileBytecodeTest{
@Override @Override
protected void init() { protected void init() {
testName = "ExtendsType"; testName = "ExtendsType";