From 85d5485595351cfb2edc660f24faaee1f28e405b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pl=C3=BCmicke?= Date: Wed, 26 Sep 2018 15:40:51 +0200 Subject: [PATCH 1/4] modified: ../../test/bytecode/javFiles/Sorting.jav sort hinzugefuegt --- test/bytecode/javFiles/Sorting.jav | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/bytecode/javFiles/Sorting.jav b/test/bytecode/javFiles/Sorting.jav index 81d3761b7..f9f5843ae 100644 --- a/test/bytecode/javFiles/Sorting.jav +++ b/test/bytecode/javFiles/Sorting.jav @@ -8,6 +8,11 @@ class Sorting{ return a; } +sort(in){ + var firstHalf = in; + var secondHalf = in; + return merge(sort(firstHalf), sort(secondHalf)); +} /* void sort(ArrayList a){ From 355df5fab799edb94950577c8f7e7981914e75ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pl=C3=BCmicke?= Date: Wed, 26 Sep 2018 15:43:27 +0200 Subject: [PATCH 2/4] new file: ../../test/bytecode/FunOLTest.java new file: ../../test/bytecode/javFiles/FunOL.jav new file: ../../test/bytecode/vectorAddTest.java --- test/bytecode/FunOLTest.java | 52 ++++++++++++++++++++++++++++++++ test/bytecode/javFiles/FunOL.jav | 12 ++++++++ test/bytecode/vectorAddTest.java | 52 ++++++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 test/bytecode/FunOLTest.java create mode 100644 test/bytecode/javFiles/FunOL.jav create mode 100644 test/bytecode/vectorAddTest.java diff --git a/test/bytecode/FunOLTest.java b/test/bytecode/FunOLTest.java new file mode 100644 index 000000000..55aba31c1 --- /dev/null +++ b/test/bytecode/FunOLTest.java @@ -0,0 +1,52 @@ +package bytecode; + +import static org.junit.Assert.assertEquals; + +import java.io.File; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.net.URL; +import java.net.URLClassLoader; + +import org.junit.Test; + +import de.dhbwstuttgart.core.JavaTXCompiler; + +public class FunOLTest { + private static String path; + private static File fileToTest; + private static JavaTXCompiler compiler; + private static ClassLoader loader; + private static Class classToTest; + private static String pathToClassFile; + private static Object instanceOfClass; + + @Test + public void generateBC() throws Exception { + path = System.getProperty("user.dir")+"/test/bytecode/javFiles/FunOL.jav"; + fileToTest = new File(path); + compiler = new JavaTXCompiler(fileToTest); + compiler.generateBytecode(System.getProperty("user.dir")+"/testBytecode/generatedBC/"); + pathToClassFile = System.getProperty("user.dir")+"/testBytecode/generatedBC/"; + loader = new URLClassLoader(new URL[] {new URL("file://"+pathToClassFile)}); + classToTest = loader.loadClass("FunOL"); + /* + instanceOfClass = classToTest.getDeclaredConstructor().newInstance(); + + Method m = classToTest.getDeclaredMethod("m"); + Class lambda = m.invoke(instanceOfClass).getClass(); + Method apply = lambda.getMethod("apply", Object.class); + + // Damit man auf die Methode zugreifen kann + apply.setAccessible(true); + + Integer i = 77; + + Integer result = (Integer) apply.invoke(m.invoke(instanceOfClass), i); + + assertEquals(77, result); + */ + } + + +} diff --git a/test/bytecode/javFiles/FunOL.jav b/test/bytecode/javFiles/FunOL.jav new file mode 100644 index 000000000..60736e1f1 --- /dev/null +++ b/test/bytecode/javFiles/FunOL.jav @@ -0,0 +1,12 @@ +import java.util.Vector; +import java.lang.Integer; +import java.lang.String; +//import java.lang.Byte; +//import java.lang.Boolean; + +public class FunOL { + + add(f, y) { + return f.apply() + y; + } +} diff --git a/test/bytecode/vectorAddTest.java b/test/bytecode/vectorAddTest.java new file mode 100644 index 000000000..9aa247276 --- /dev/null +++ b/test/bytecode/vectorAddTest.java @@ -0,0 +1,52 @@ +package bytecode; + +import static org.junit.Assert.assertEquals; + +import java.io.File; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.net.URL; +import java.net.URLClassLoader; + +import org.junit.Test; + +import de.dhbwstuttgart.core.JavaTXCompiler; + +public class vectorAddTest { + private static String path; + private static File fileToTest; + private static JavaTXCompiler compiler; + private static ClassLoader loader; + private static Class classToTest; + private static String pathToClassFile; + private static Object instanceOfClass; + + @Test + public void generateBC() throws Exception { + path = System.getProperty("user.dir")+"/test/bytecode/javFiles/vectorAdd.jav"; + fileToTest = new File(path); + compiler = new JavaTXCompiler(fileToTest); + compiler.generateBytecode(System.getProperty("user.dir")+"/testBytecode/generatedBC/"); + pathToClassFile = System.getProperty("user.dir")+"/testBytecode/generatedBC/"; + loader = new URLClassLoader(new URL[] {new URL("file://"+pathToClassFile)}); + classToTest = loader.loadClass("vectorAdd"); + /* + instanceOfClass = classToTest.getDeclaredConstructor().newInstance(); + + Method m = classToTest.getDeclaredMethod("m"); + Class lambda = m.invoke(instanceOfClass).getClass(); + Method apply = lambda.getMethod("apply", Object.class); + + // Damit man auf die Methode zugreifen kann + apply.setAccessible(true); + + Integer i = 77; + + Integer result = (Integer) apply.invoke(m.invoke(instanceOfClass), i); + + assertEquals(77, result); + */ + } + + +} From 4ace3b6f9231d7613397239a2703eb6247aabd5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pl=C3=BCmicke?= Date: Wed, 26 Sep 2018 15:44:36 +0200 Subject: [PATCH 3/4] new file: ../../test/bytecode/javFiles/VectorAdd.jav --- test/bytecode/javFiles/VectorAdd.jav | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 test/bytecode/javFiles/VectorAdd.jav diff --git a/test/bytecode/javFiles/VectorAdd.jav b/test/bytecode/javFiles/VectorAdd.jav new file mode 100644 index 000000000..4d3eb8ac8 --- /dev/null +++ b/test/bytecode/javFiles/VectorAdd.jav @@ -0,0 +1,19 @@ +import java.util.Vector; +import java.lang.Integer; +import java.lang.String; +//import java.lang.Byte; +//import java.lang.Boolean; + +public class vectorAdd { + + add(v1, v2) { + var ret = new Vector(); + var i = 0; + var erg; + while(i < v1.size()) { + erg = v1.elementAt(i) + v2.elementAt(i); + ret.addElement(erg); + } + return ret; + } +} From 88e2366eab67b3866a97e43f266b1969f277a073 Mon Sep 17 00:00:00 2001 From: JanUlrich Date: Wed, 26 Sep 2018 16:21:10 +0200 Subject: [PATCH 4/4] ListenerOverload Test --- test/javFiles/ListenerOverload.jav | 20 ++++++++++++++++++++ test/typeinference/JavaTXCompilerTest.java | 4 ++++ 2 files changed, 24 insertions(+) create mode 100644 test/javFiles/ListenerOverload.jav diff --git a/test/javFiles/ListenerOverload.jav b/test/javFiles/ListenerOverload.jav new file mode 100644 index 000000000..e1a8d65d8 --- /dev/null +++ b/test/javFiles/ListenerOverload.jav @@ -0,0 +1,20 @@ +import java.lang.Integer; +import java.lang.String; + +class ListenerOverload{ + +call(p){ + call(p.left); + call(p.right); +} + +call(Integer i){} + +call(String s){} + +} + +class Pair{ + A left; + B right; +} \ No newline at end of file diff --git a/test/typeinference/JavaTXCompilerTest.java b/test/typeinference/JavaTXCompilerTest.java index 30b6feae6..233e8b24a 100644 --- a/test/typeinference/JavaTXCompilerTest.java +++ b/test/typeinference/JavaTXCompilerTest.java @@ -104,6 +104,10 @@ public class JavaTXCompilerTest { public void multipleSolutions() throws IOException, ClassNotFoundException { execute(new File(rootDirectory+"Sorting.jav")); } + @Test + public void listenerTest() throws IOException, ClassNotFoundException { + execute(new File(rootDirectory+"ListenerOverload.jav")); + } private static class TestResultSet{