From 2421dd022208b5128d69f182817e043d923af8fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pl=C3=BCmicke?= Date: Thu, 19 Jul 2018 13:54:31 +0200 Subject: [PATCH 1/2] modified: ../../test/bytecode/LambdaTest.java jetzt korrekt modified: ../../test/bytecode/Tph2Test.java jetzt korrekt modified: ../../test/bytecode/TphTest.java jetzt korrekt modified: ../../test/bytecode/applyLambdaTest.java jetzt korrekt modified: ../../test/bytecode/javFiles/Tph.jav Rueckgabewert veraendert --- test/bytecode/LambdaTest.java | 2 +- test/bytecode/Tph2Test.java | 32 +++++++++++++++++++++++++++-- test/bytecode/TphTest.java | 33 ++++++++++++++++++++++++++++-- test/bytecode/applyLambdaTest.java | 20 ++++++++++++++++-- test/bytecode/javFiles/Tph.jav | 2 +- 5 files changed, 81 insertions(+), 8 deletions(-) diff --git a/test/bytecode/LambdaTest.java b/test/bytecode/LambdaTest.java index fe49809c..5ec28970 100644 --- a/test/bytecode/LambdaTest.java +++ b/test/bytecode/LambdaTest.java @@ -39,7 +39,7 @@ public class LambdaTest { Integer i = 77; // result = 77*77 = 5929 - Integer result = (Integer) apply.invoke(m.invoke(instanceOfClass), i); //laeuft nicht, vermutlich weil Lambda-Ausdrucks Methode "apply" private ist. + Integer result = (Integer) apply.invoke(m.invoke(instanceOfClass), i); assertEquals(5929, result); } diff --git a/test/bytecode/Tph2Test.java b/test/bytecode/Tph2Test.java index de706431..f267f45a 100644 --- a/test/bytecode/Tph2Test.java +++ b/test/bytecode/Tph2Test.java @@ -3,6 +3,7 @@ package bytecode; import static org.junit.Assert.*; import java.io.File; +import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoader; @@ -34,8 +35,35 @@ public class Tph2Test { } @Test - public void test() { - fail("Not yet implemented"); + public void test1() throws Exception { + Method m = classToTest.getDeclaredMethod("m", Object.class, Object.class); + Object result = m.invoke(instanceOfClass, 1,2); + + assertEquals(1,result); + } + + @Test + public void test2() throws Exception { + Method m = classToTest.getDeclaredMethod("m", Object.class, Object.class); + Object result = m.invoke(instanceOfClass, "sss",2); + + assertEquals("sss",result); + } + + @Test + public void test3() throws Exception { + Method m = classToTest.getDeclaredMethod("m2", Object.class, Object.class); + Object result = m.invoke(instanceOfClass, 1,2); + + assertEquals(2,result); + } + + @Test + public void test4() throws Exception { + Method m = classToTest.getDeclaredMethod("m2", Object.class, Object.class); + Object result = m.invoke(instanceOfClass, 1,"xxx"); + + assertEquals("xxx",result); } } diff --git a/test/bytecode/TphTest.java b/test/bytecode/TphTest.java index 92b786ce..3f0a7bb3 100644 --- a/test/bytecode/TphTest.java +++ b/test/bytecode/TphTest.java @@ -3,6 +3,7 @@ package bytecode; import static org.junit.Assert.*; import java.io.File; +import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoader; @@ -12,6 +13,7 @@ import org.junit.Test; import de.dhbwstuttgart.core.JavaTXCompiler; public class TphTest { + private static String path; private static File fileToTest; private static JavaTXCompiler compiler; @@ -33,8 +35,35 @@ public class TphTest { } @Test - public void test() { - fail("Not yet implemented"); + public void test1() throws Exception { + Method m = classToTest.getDeclaredMethod("m", Object.class, Object.class); + Object result = m.invoke(instanceOfClass, 1,2); + + assertEquals(2,result); + } + + @Test + public void test2() throws Exception { + Method m = classToTest.getDeclaredMethod("m", Object.class, Object.class); + Object result = m.invoke(instanceOfClass, 1, "sss"); + + assertEquals("sss",result); + } + + @Test + public void test3() throws Exception { + Method m = classToTest.getDeclaredMethod("m2", Object.class); + Object result = m.invoke(instanceOfClass, 2); + + assertEquals(2,result); + } + + @Test + public void test4() throws Exception { + Method m = classToTest.getDeclaredMethod("m2", Object.class); + Object result = m.invoke(instanceOfClass,"xxx"); + + assertEquals("xxx",result); } } diff --git a/test/bytecode/applyLambdaTest.java b/test/bytecode/applyLambdaTest.java index c7dde161..b73cf507 100644 --- a/test/bytecode/applyLambdaTest.java +++ b/test/bytecode/applyLambdaTest.java @@ -1,6 +1,11 @@ package bytecode; +import static org.junit.Assert.assertEquals; + import java.io.File; +import java.lang.reflect.Method; +import java.net.URL; +import java.net.URLClassLoader; import org.junit.Test; @@ -10,6 +15,10 @@ public class applyLambdaTest { 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 { @@ -17,7 +26,14 @@ public class applyLambdaTest { 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("applyLambda"); + instanceOfClass = classToTest.getDeclaredConstructor().newInstance(); + + Method m = classToTest.getDeclaredMethod("m"); + Object result = m.invoke(instanceOfClass); + + assertEquals(result.getClass(), loader.loadClass("Apply")); } - - } diff --git a/test/bytecode/javFiles/Tph.jav b/test/bytecode/javFiles/Tph.jav index 3f9d0aab..8dbb1507 100644 --- a/test/bytecode/javFiles/Tph.jav +++ b/test/bytecode/javFiles/Tph.jav @@ -2,7 +2,7 @@ public class Tph { m(a,b){ var c = m2(b); - return a; + return c; } m2(b){ From 4e5c75673d5132a0d23ab4c631b2805f4ed4a5ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pl=C3=BCmicke?= Date: Thu, 19 Jul 2018 13:57:01 +0200 Subject: [PATCH 2/2] new file: ../../test/bytecode/Tph3Test.java new file: ../../test/bytecode/javFiles/Tph3.jav Test mit wechselseitiger Rekursion --- test/bytecode/Tph3Test.java | 69 +++++++++++++++++++++++++++++++++ test/bytecode/javFiles/Tph3.jav | 10 +++++ 2 files changed, 79 insertions(+) create mode 100644 test/bytecode/Tph3Test.java create mode 100644 test/bytecode/javFiles/Tph3.jav diff --git a/test/bytecode/Tph3Test.java b/test/bytecode/Tph3Test.java new file mode 100644 index 00000000..d2cad1af --- /dev/null +++ b/test/bytecode/Tph3Test.java @@ -0,0 +1,69 @@ +package bytecode; + +import static org.junit.Assert.*; + +import java.io.File; +import java.lang.reflect.Method; +import java.net.URL; +import java.net.URLClassLoader; + +import org.junit.BeforeClass; +import org.junit.Test; + +import de.dhbwstuttgart.core.JavaTXCompiler; + +public class Tph3Test { + + 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; + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + path = System.getProperty("user.dir")+"/test/bytecode/javFiles/Tph3.jav"; + fileToTest = new File(path); + compiler = new JavaTXCompiler(fileToTest); + pathToClassFile = System.getProperty("user.dir")+"/testBytecode/generatedBC/"; + compiler.generateBytecode(pathToClassFile); + loader = new URLClassLoader(new URL[] {new URL("file://"+pathToClassFile)}); + classToTest = loader.loadClass("Tph2"); + instanceOfClass = classToTest.getDeclaredConstructor().newInstance(); + } + + @Test + public void test1() throws Exception { + Method m = classToTest.getDeclaredMethod("m", Object.class, Object.class); + Object result = m.invoke(instanceOfClass, 1,2); + + assertEquals(1,result); + } + + @Test + public void test2() throws Exception { + Method m = classToTest.getDeclaredMethod("m", Object.class, Object.class); + Object result = m.invoke(instanceOfClass, "sss",2); + + assertEquals("sss",result); + } + + @Test + public void test3() throws Exception { + Method m = classToTest.getDeclaredMethod("m2", Object.class, Object.class); + Object result = m.invoke(instanceOfClass, 1,2); + + assertEquals(2,result); + } + + @Test + public void test4() throws Exception { + Method m = classToTest.getDeclaredMethod("m2", Object.class, Object.class); + Object result = m.invoke(instanceOfClass, 1,"xxx"); + + assertEquals("xxx",result); + } + +} diff --git a/test/bytecode/javFiles/Tph3.jav b/test/bytecode/javFiles/Tph3.jav new file mode 100644 index 00000000..42d5d687 --- /dev/null +++ b/test/bytecode/javFiles/Tph3.jav @@ -0,0 +1,10 @@ +public class Tph3 { + m(a,b){ + var c = m2(a,b); + return c; + } + + m2(a,b){ + return m(a,b); + } +}