diff --git a/test/plugindevelopment/MartinTestCases/AchimTest1.jav b/test/plugindevelopment/MartinTestCases/AchimTest1.jav new file mode 100755 index 00000000..35d7739d --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/AchimTest1.jav @@ -0,0 +1,9 @@ +class Test{ + test(){ + return 1; + } + test2(){ + i; + i = test(); + } +} diff --git a/test/plugindevelopment/MartinTestCases/BoundedType.jav b/test/plugindevelopment/MartinTestCases/BoundedType.jav new file mode 100755 index 00000000..ca33735a --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/BoundedType.jav @@ -0,0 +1,12 @@ +class BoundedType { + + m(T x) { + return x; + } + + m1(x) { + T y; + x = y; + return y; + } +} \ No newline at end of file diff --git a/test/plugindevelopment/MartinTestCases/BoundedType1.jav b/test/plugindevelopment/MartinTestCases/BoundedType1.jav new file mode 100755 index 00000000..af71bfa7 --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/BoundedType1.jav @@ -0,0 +1,16 @@ +interface BB { } +interface AA extends BB { + AAm(BB x); + } + +interface RR extends BB { + } + +class BoundedType1 { + + + m1(AA a) { + T1 b; + a.AAm(b); + } +} \ No newline at end of file diff --git a/test/plugindevelopment/MartinTestCases/BoundedType2.jav b/test/plugindevelopment/MartinTestCases/BoundedType2.jav new file mode 100755 index 00000000..47602aba --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/BoundedType2.jav @@ -0,0 +1,15 @@ +class BoundedType { + m(T x) { + r; + r=x; + return r; + } + m1(b) { return b; } + +} + +class Id { + BoundedType bb; + m(x) { return bb.m1(x); } + } + \ No newline at end of file diff --git a/test/plugindevelopment/MartinTestCases/OL.jav b/test/plugindevelopment/MartinTestCases/OL.jav new file mode 100755 index 00000000..66e95aeb --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/OL.jav @@ -0,0 +1,16 @@ +class OL { + + Integer m(Integer x) { return x + x; } + + Boolean m(Boolean x) {return x || x; } +} + +class Main { + + main(x) { + ol; + ol = new OL(); + return ol.m(x); + } + +} diff --git a/test/plugindevelopment/MartinTestCases/OL2.jav b/test/plugindevelopment/MartinTestCases/OL2.jav new file mode 100755 index 00000000..8a2c485b --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/OL2.jav @@ -0,0 +1,20 @@ +import java.util.Vector; + +class OL2 { + + Integer m(Integer x) { return x + x; } + + Boolean m(Boolean x) {return x || x; } +} + +class Main { + + main(x) { + ol; + ol = new OL2(); + y; + /* y = new Vector(); */ + y.addElement(ol.m(x)); + } + +} diff --git a/test/plugindevelopment/MartinTestCases/Probleme b/test/plugindevelopment/MartinTestCases/Probleme new file mode 100755 index 00000000..4a69c5d0 --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/Probleme @@ -0,0 +1,41 @@ +- Sequenz-Diagramme fuer TR-Algorithmen +- In der GUI werden bei der Auswahl bei Typisierungen mehrerer Klassen immer nur die Typisierung der einzelnen Klasse angepasst (Use-Rase ZweiKlassen.jav) +- Bound bleiben in der GUI erhalten auch wenn durch Auswahl die Bounds gar nicht mehr existieren (Use-Rase BoundedType2.jav) +- Parameter gehen nicht Matrix Use-Rase +- gleiche TypePlaceHolder in unterschiedlichen Intersections werden durch unterschiedliche GentypeVars ersetzt (BoundedType2.jav) +- Mail von Juergen, welche Usecases machen ihm Probleme? +- UsedId bei bei "extends" in RefType bzw. bei "implements" in Vector umwandeln. (siehe mail an Timo) +- Roundtrip fuer den Innovator einbauen erledigt 06-06 +- Schnittstelle mit syntaktischen Angaben fuer den Konstantenpool wird bei unbeboxten Typen nicht richtig erzeugt +- Boxing und Unboxing geht noch nicht bei allen primitiven Typen und Operatoren +-------------------------------------------------------------------------------------------------- +- makeFC testen durch Verschiebung von TyploseVaribale yu GentypeVar + sind Probleme entstanden PL 06-03-16 +- Alle UseCases noch mit Vervielfachung testen +- Codeerzeugung: called_method +- Returntyp void UsecaseThree_pl.jav ERLEDIGT Fehler in Void.java 05-07-31 +- Parameter in Typen: Werden die �berhaupt betrachtet? UsecaseTwo_pl.jav +- Die Argumente bei UsedId Konstruktion f�r die Parameter in dem Attribut paralist von Typen + sind immer GenericTypeVars, k�nnten aber auch Typen wie Integer als RefTypes sein. + In der Methode wandleGeneric2RefType (MyCompiler) werden nur die GenericTypeVars + der Superklassen-Deklarationen angepasst. Hier muessten alle expliziten Typdeklarationen + im gesamten abstrakten Syntaxbaum angepasst werden. Koennte ueber eine Registry + und die Listener realisiert werden. ERLEDIGT SourceFile.java 05-07-31 +- getypte Variablen werden nicht richtig gesetzt UsecaseFive_pl.jav ERLEDIGT JavaParser.jay 05-07-30 + +- UNIFY funktioniert nicht mit GenericTypeVars UsecaseOne_pl.jav +- Einschränkungen bei TRMAPP von noch einbauen. +- a.b wird als Expression nicht in InstVar umgewandelt, sondern bleibt LocalOrFieldVar mit UsedId UsecaseNine_pl.jav + wird inzwischen bei zwei Identifieren umgewandelt. Mit mehr testen +- In Usecase UsecaseNine_pl.jav wird der Parameter bei der Klasse bei b nicht bestimmt. +- Braucht man das Field type vom Typ String in InstVar.java? +- in Assign stimmt der Typ von Assign nicht (Beispiel Matrix1.jav in bajo) +- unifyAndregister in allen Subklassen von ExprStmt durch register ersetzen. erledigt 05-08-21 +- Class.java: m_MethodIntersectionTypes wird in CTypeReconstructionResult nicht richtig gestetzt. + Beispiel Matrix.jav in bajo1_usecases +- clone in alle Subklassen von CTypeAssumption ueberpruefen. +- Was ist der Unterschied zwischen RefType.clone() und Pair.copyType +- in instanceSmaller neuhinzugekommene GENTYPEVARS durch typlose Vars ersetzen. +- EST95A anschauen. Insbesondere: Wann ist this View und wann GView? + siehe SubtypeingTest this wird immer dynamisch angepasst. Auch in + der Theorie aendern \ No newline at end of file diff --git a/test/plugindevelopment/MartinTestCases/SMatrix.jav b/test/plugindevelopment/MartinTestCases/SMatrix.jav new file mode 100755 index 00000000..80dd631a --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/SMatrix.jav @@ -0,0 +1,11 @@ +import java.util.Vector; + +class Matrix extends Vector> { + + mul(){ + Vector> ret1; + Vector ret; + return ret; + } + +} diff --git a/test/plugindevelopment/MartinTestCases/Simple.jav b/test/plugindevelopment/MartinTestCases/Simple.jav new file mode 100755 index 00000000..312e8a88 --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/Simple.jav @@ -0,0 +1,10 @@ +class Simple { + + simple(a) { + return 1; + } + + main(a) { + return a; + } +} \ No newline at end of file diff --git a/test/plugindevelopment/MartinTestCases/Tester.java b/test/plugindevelopment/MartinTestCases/Tester.java new file mode 100644 index 00000000..9607e297 --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/Tester.java @@ -0,0 +1,57 @@ +package plugindevelopment.MartinTestCases; + +import java.io.File; +import java.io.IOException; +import java.util.Vector; + +import org.junit.Test; + +import plugindevelopment.TypeInsertTester; +import plugindevelopment.TypeInsertTests.MultipleTypesInsertTester; +import junit.framework.TestCase; +import mycompiler.MyCompiler; +import mycompiler.MyCompilerAPI; +import mycompiler.myparser.JavaParser.yyException; +import mycompiler.mytypereconstruction.TypeinferenceResultSet; +import typinferenz.TypeInsertSet; + +public class Tester extends TypeInsertTester{ + + public final static String rootDirectory = System.getProperty("user.dir")+"/test/plugindevelopment/MartinTestCases/"; + + public static void test(String sourceFileToInfere, Vector mustContain){ + String gesamterSrc = ""; + String inferedSource = ""; + MyCompilerAPI compiler = MyCompiler.getAPI(); + try { + compiler.parse(new File(rootDirectory + sourceFileToInfere)); + Vector results = compiler.typeReconstruction(); + //TestCase.assertTrue("Es darf nicht mehr als eine Lösungsmöglichkeit geben und nicht "+results.size(), results.size()==1); + for(TypeinferenceResultSet result : results){ + Vector points = result.getTypeInsertionPoints(); + //TestCase.assertTrue("Es muss mindestens ein TypeInsertSet vorhanden sein", points.size()>0); + for(TypeInsertSet point : points){ + //TestCase.assertTrue("Es muss mindestens ein TypeInsertPoint vorhanden sein", point.points.size()>0); + if(point.points.size()>0){ + inferedSource = point.insertAllTypes(TypeInsertTester.getFileContent(rootDirectory + sourceFileToInfere)); + System.out.println(inferedSource); + gesamterSrc += inferedSource; + } + } + } + + } catch (IOException | yyException e) { + e.printStackTrace(); + TestCase.fail(); + } + for(String containString : mustContain){ + TestCase.assertTrue("\""+containString+"\" muss in den inferierten Lösungen vorkommen",gesamterSrc.contains(containString)); + } + } + + @Test + public void runTests(){ + Tester.test("OL.jav", new Vector()); + } + +} diff --git a/test/plugindevelopment/MartinTestCases/UnifyTest1.jav b/test/plugindevelopment/MartinTestCases/UnifyTest1.jav new file mode 100755 index 00000000..abb8580b --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/UnifyTest1.jav @@ -0,0 +1,11 @@ +import java.util.Vector; +import java.util.Stack; + + +class Test { + public getValue(a){ + String x; + a.addElement(x); + } + +} diff --git a/test/plugindevelopment/MartinTestCases/UsecaseEight_pl.jav b/test/plugindevelopment/MartinTestCases/UsecaseEight_pl.jav new file mode 100755 index 00000000..f2395352 --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/UsecaseEight_pl.jav @@ -0,0 +1,10 @@ +class UsecaseEight_pl { + + foo1() { + a; + b; + a = b.foo1(); + return 1; + } + +} \ No newline at end of file diff --git a/test/plugindevelopment/MartinTestCases/UsecaseFive_pl.jav b/test/plugindevelopment/MartinTestCases/UsecaseFive_pl.jav new file mode 100755 index 00000000..1ccfddbd --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/UsecaseFive_pl.jav @@ -0,0 +1,9 @@ +class UsecaseFive_pl { + + foo() { + Vector c; + c = new Vector() ; + return c; + } + +} \ No newline at end of file diff --git a/test/plugindevelopment/MartinTestCases/UsecaseFour_pl.jav b/test/plugindevelopment/MartinTestCases/UsecaseFour_pl.jav new file mode 100755 index 00000000..b40233f6 --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/UsecaseFour_pl.jav @@ -0,0 +1,9 @@ +class UsecaseFour_pl { + + foo() { + c; + c = new Vector() ; + return c; + } + +} \ No newline at end of file diff --git a/test/plugindevelopment/MartinTestCases/UsecaseNine_pl.jav b/test/plugindevelopment/MartinTestCases/UsecaseNine_pl.jav new file mode 100755 index 00000000..979b2baa --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/UsecaseNine_pl.jav @@ -0,0 +1,12 @@ +class UsecaseNine_pl { + + Integer c; + + foo1() { + a; + b; + a = b.c; + return 1; + } + +} \ No newline at end of file diff --git a/test/plugindevelopment/MartinTestCases/UsecaseOne_pl.jav b/test/plugindevelopment/MartinTestCases/UsecaseOne_pl.jav new file mode 100755 index 00000000..cf614cbe --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/UsecaseOne_pl.jav @@ -0,0 +1,20 @@ +import java.util.Vector; + +class UsecaseOne_pl { + + A x; + + foo(bar){ + bar = true; + return 1; + } +/* + foo1(a) { + c; + c = new Vector(); + b; + b = new UsecaseOne_pl(); + return c.addElement(a); + } +*/ +} diff --git a/test/plugindevelopment/MartinTestCases/UsecaseSeven_pl.jav b/test/plugindevelopment/MartinTestCases/UsecaseSeven_pl.jav new file mode 100755 index 00000000..9833b49b --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/UsecaseSeven_pl.jav @@ -0,0 +1,18 @@ +import java.util.Vector; + +class UsecaseSeven_pl { + + foo(bar){ + bar = true; + return 1; + } + + foo1(a) { + c; + c = new Vector(); + b; + b = new UsecaseSeven_pl(); + return c.addElement(a); + } + +} \ No newline at end of file diff --git a/test/plugindevelopment/MartinTestCases/UsecaseSix_pl.jav b/test/plugindevelopment/MartinTestCases/UsecaseSix_pl.jav new file mode 100755 index 00000000..e6a1a5cc --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/UsecaseSix_pl.jav @@ -0,0 +1,5 @@ +class uuu {} +class vvv {} +class UsecaseSix_pl extends Vector> { + +} \ No newline at end of file diff --git a/test/plugindevelopment/MartinTestCases/UsecaseTen_pl.jav b/test/plugindevelopment/MartinTestCases/UsecaseTen_pl.jav new file mode 100755 index 00000000..3a679aa9 --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/UsecaseTen_pl.jav @@ -0,0 +1,14 @@ +import java.util.Vector; + +class UsecaseTen_pl { + + Vector c; + + foo1() { + a; + b; + a = b.c.elementAt(1); + return b; + } + +} \ No newline at end of file diff --git a/test/plugindevelopment/MartinTestCases/UsecaseThree_pl.jav b/test/plugindevelopment/MartinTestCases/UsecaseThree_pl.jav new file mode 100755 index 00000000..7ce53593 --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/UsecaseThree_pl.jav @@ -0,0 +1,9 @@ +class UsecaseThree_pl { + + foo() { + c; + c = new Vector(); + return c; + } + +} \ No newline at end of file diff --git a/test/plugindevelopment/MartinTestCases/UsecaseThree_pl.orig.jav b/test/plugindevelopment/MartinTestCases/UsecaseThree_pl.orig.jav new file mode 100755 index 00000000..074acc31 --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/UsecaseThree_pl.orig.jav @@ -0,0 +1,11 @@ +import java.util.Vector; + +class UsecaseThree_pl_org { + + Vector foo() { + Vector c; + c = new Vector(); + return c; + } + +} diff --git a/test/plugindevelopment/MartinTestCases/UsecaseTwo_pl.jav b/test/plugindevelopment/MartinTestCases/UsecaseTwo_pl.jav new file mode 100755 index 00000000..8fbb75e1 --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/UsecaseTwo_pl.jav @@ -0,0 +1,11 @@ +class UsecaseTwo_pl { + + foo() { + d; + d = new UsecaseTwo_pl (); + e; + e = d.foo(); + return d; + } + +} \ No newline at end of file diff --git a/test/plugindevelopment/MartinTestCases/Usecase_MUBTest.jav b/test/plugindevelopment/MartinTestCases/Usecase_MUBTest.jav new file mode 100755 index 00000000..bda38eb2 --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/Usecase_MUBTest.jav @@ -0,0 +1,12 @@ +class A { } + +class B extends A { + f(Boolean x) { + if (x) { + return new B(); } + else { + return new A(); } + } +} + +class C extends B> {} diff --git a/test/plugindevelopment/MartinTestCases/Usecase_MUBTest1.jav b/test/plugindevelopment/MartinTestCases/Usecase_MUBTest1.jav new file mode 100755 index 00000000..cfe0e30e --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/Usecase_MUBTest1.jav @@ -0,0 +1,17 @@ + + +class A { } + +class B extends A { + f(Boolean x) { + if (x) { + return new B(); } + else { + return new A(); } + } +} + +class C extends B> {} + + + diff --git a/test/plugindevelopment/MartinTestCases/Usecase_MUBTest2.jav b/test/plugindevelopment/MartinTestCases/Usecase_MUBTest2.jav new file mode 100755 index 00000000..08e66aed --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/Usecase_MUBTest2.jav @@ -0,0 +1,13 @@ +class A { } + +class B extends A { + f(x) { + a; + if (x) { + return new C(); } + else { + return a; } + } +} + +class C extends B> {} diff --git a/test/plugindevelopment/MartinTestCases/Usecase_MUBTest3.jav b/test/plugindevelopment/MartinTestCases/Usecase_MUBTest3.jav new file mode 100755 index 00000000..fc7a33cd --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/Usecase_MUBTest3.jav @@ -0,0 +1,14 @@ +class A { } + +class B extends A { + f(x) { + a; + b; + if (x) { + return a; } + else { + return b; } + } +} + +class C extends B> {} diff --git a/test/plugindevelopment/MartinTestCases/Usecase_MUBTest4.jav b/test/plugindevelopment/MartinTestCases/Usecase_MUBTest4.jav new file mode 100755 index 00000000..0325a600 --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/Usecase_MUBTest4.jav @@ -0,0 +1,12 @@ +class A { } + +class B extends A { + f(Boolean x) { + if (x) { + return new B(); } + else { + return new C(); } + } +} + +class C extends B> {} diff --git a/test/plugindevelopment/MartinTestCases/Usecase_MUBTest5.jav b/test/plugindevelopment/MartinTestCases/Usecase_MUBTest5.jav new file mode 100755 index 00000000..c1b2b19b --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/Usecase_MUBTest5.jav @@ -0,0 +1,12 @@ +class A { } + +class B extends A { + f(Boolean x) { + if (x) { + return new B(); } + else { + return new C(); } + } +} + +class C extends B> {} diff --git a/test/plugindevelopment/MartinTestCases/Usecase_MUBTest6.jav b/test/plugindevelopment/MartinTestCases/Usecase_MUBTest6.jav new file mode 100755 index 00000000..2d494563 --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/Usecase_MUBTest6.jav @@ -0,0 +1,9 @@ +class Test2 { + public meth(){ + if(true) { + return(1); + }else{ + return(2); + } + } +} diff --git a/test/plugindevelopment/MartinTestCases/ZweiKlassen.jav b/test/plugindevelopment/MartinTestCases/ZweiKlassen.jav new file mode 100755 index 00000000..2e396884 --- /dev/null +++ b/test/plugindevelopment/MartinTestCases/ZweiKlassen.jav @@ -0,0 +1,17 @@ +import java.util.Vector; + +class ZweiKlassen { + + foo() { + c; + c = new Vector() ; + return c; + } + +} + +class X { + ZweiKlassen bb; + + foo2() { return bb.foo();} +} \ No newline at end of file