diff --git a/generator/src/main/java/fr/inria/diversify/transformation/AddMethodInvocation.java b/generator/src/main/java/fr/inria/diversify/transformation/AddMethodInvocation.java index cb41ed32..b804dbbb 100644 --- a/generator/src/main/java/fr/inria/diversify/transformation/AddMethodInvocation.java +++ b/generator/src/main/java/fr/inria/diversify/transformation/AddMethodInvocation.java @@ -27,8 +27,57 @@ public class AddMethodInvocation extends SingleTransformation { CtMethod parentMethod; CtInvocation aInv; - String jPos, jType, jSC; boolean jStatic; + String jPos, jType, jSC; + + public CtStatement getTryInv() { + return tryInv; + } + + public CtStatement getTp() { + return tp; + } + + public CtField getWell() { + return well; + } + + public CtClass getParentClass() { + return parentClass; + } + + public CtMethod getParentMethod() { + return parentMethod; + } + + public CtInvocation getaInv() { + return aInv; + } + + public boolean isjStatic() { + return jStatic; + } + + public String getjPos() { + return jPos; + } + + public String getjType() { + return jType; + } + + public String getjSC() { + return jSC; + } + + public boolean isInsertIsStatic() { + return insertIsStatic; + } + + public CtStatement getInvocation() { + + return invocation; + } public AddMethodInvocation(CtStatement tp, CtStatement invocation) { System.out.println("tp: " + tp); diff --git a/generator/src/test/java/fr/inria/diversify/transformation/query/AddMethodInvocationQuerryTest.java b/generator/src/test/java/fr/inria/diversify/transformation/query/AddMethodInvocationQuerryTest.java new file mode 100644 index 00000000..74490122 --- /dev/null +++ b/generator/src/test/java/fr/inria/diversify/transformation/query/AddMethodInvocationQuerryTest.java @@ -0,0 +1,68 @@ +package fr.inria.diversify.transformation.query; + +import fr.inria.diversify.runner.InputConfiguration; +import fr.inria.diversify.runner.InputProgram; +import fr.inria.diversify.transformation.AddMethodInvocation; +import fr.inria.diversify.util.InitUtils; +import org.junit.Test; + +import java.io.File; +import java.io.FileInputStream; + +import static org.junit.Assert.*; + +/** + * Created by nharrand on 23/01/17. + */ +public class AddMethodInvocationQuerryTest { + + InputProgram inputProgram; + + public void setUp(boolean isStatic, boolean isInternal) { + try { + FileInputStream propertiesFile = new FileInputStream(new File("src/test/resources/jDummy/addMI/addMI_" + + (isStatic ? "s" : "ns") + "_" + (isInternal ? "i" : "e") + ".properties")); + InputConfiguration inputConfiguration = new InputConfiguration(propertiesFile); + + inputProgram = InitUtils.initInputProgram(inputConfiguration); + + InitUtils.initSpoon(inputProgram, false); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static boolean containsString(Iterable s, String v) { + for(String str : s) { + if(str.compareTo(v) == 0) return true; + } + return false; + } + + @Test + public void query() throws Exception { + setUp(true, true); + AddMethodInvocationQuerry q = new AddMethodInvocationQuerry(inputProgram); + + while(q.hasNextTransformation()) { + AddMethodInvocation t = (AddMethodInvocation) q.query(); + //assertTrue(t.isjStatic()); + } + + + setUp(true, false); + q = new AddMethodInvocationQuerry(inputProgram); + + while(q.hasNextTransformation()) { + AddMethodInvocation t = (AddMethodInvocation) q.query(); + assertTrue(t.isjStatic()); + } + + } + + @Test + public void hasNextTransformation() throws Exception { + + } + +} \ No newline at end of file diff --git a/generator/src/test/java/fr/inria/diversify/transformation/query/LoopFlipQueryTest.java b/generator/src/test/java/fr/inria/diversify/transformation/query/LoopFlipQueryTest.java index 4f3e9274..a4e02ca9 100644 --- a/generator/src/test/java/fr/inria/diversify/transformation/query/LoopFlipQueryTest.java +++ b/generator/src/test/java/fr/inria/diversify/transformation/query/LoopFlipQueryTest.java @@ -29,7 +29,7 @@ public class LoopFlipQueryTest { @Before public void setUp() { try { - FileInputStream propertiesFile = new FileInputStream(new File("src/test/resources/jDummy/loopflip.properties")); + FileInputStream propertiesFile = new FileInputStream(new File("src/test/resources/jDummy/loopflip/loopflip.properties")); InputConfiguration inputConfiguration = new InputConfiguration(propertiesFile); inputProgram = InitUtils.initInputProgram(inputConfiguration); diff --git a/generator/src/test/resources/jDummy/addMI/addMI_ns_e.properties b/generator/src/test/resources/jDummy/addMI/addMI_ns_e.properties new file mode 100644 index 00000000..dbd90a11 --- /dev/null +++ b/generator/src/test/resources/jDummy/addMI/addMI_ns_e.properties @@ -0,0 +1,15 @@ +project=src/test/resources/jDummy/addMI/ +javaVersion=8 +nbRun=2 +timeOut=-1 +runner=simple +transformation.type=addMI + +addmi.internalMethods=false +addmi.externalMethods=true +addmi.staticMethods=false +addmi.nonstaticMethods=true +addmi.dumpMethodsAfterSuccess=false +addmi.shuffleCandidate=false +addmi.shuffleMethods=false + diff --git a/generator/src/test/resources/jDummy/addMI/addMI_ns_i.properties b/generator/src/test/resources/jDummy/addMI/addMI_ns_i.properties new file mode 100644 index 00000000..704aa1af --- /dev/null +++ b/generator/src/test/resources/jDummy/addMI/addMI_ns_i.properties @@ -0,0 +1,15 @@ +project=src/test/resources/jDummy/addMI/ +javaVersion=8 +nbRun=2 +timeOut=-1 +runner=simple +transformation.type=addMI + +addmi.internalMethods=true +addmi.externalMethods=false +addmi.staticMethods=false +addmi.nonstaticMethods=true +addmi.dumpMethodsAfterSuccess=false +addmi.shuffleCandidate=false +addmi.shuffleMethods=false + diff --git a/generator/src/test/resources/jDummy/addMI/addMI_s_e.properties b/generator/src/test/resources/jDummy/addMI/addMI_s_e.properties new file mode 100644 index 00000000..19e008f5 --- /dev/null +++ b/generator/src/test/resources/jDummy/addMI/addMI_s_e.properties @@ -0,0 +1,15 @@ +project=src/test/resources/jDummy/addMI/ +javaVersion=8 +nbRun=2 +timeOut=-1 +runner=simple +transformation.type=addMI + +addmi.internalMethods=false +addmi.externalMethods=true +addmi.staticMethods=true +addmi.nonstaticMethods=false +addmi.dumpMethodsAfterSuccess=false +addmi.shuffleCandidate=false +addmi.shuffleMethods=false + diff --git a/generator/src/test/resources/jDummy/addMI/addMI_s_i.properties b/generator/src/test/resources/jDummy/addMI/addMI_s_i.properties new file mode 100644 index 00000000..19823832 --- /dev/null +++ b/generator/src/test/resources/jDummy/addMI/addMI_s_i.properties @@ -0,0 +1,15 @@ +project=src/test/resources/jDummy/addMI/ +javaVersion=8 +nbRun=2 +timeOut=-1 +runner=simple +transformation.type=addMI + +addmi.internalMethods=true +addmi.externalMethods=false +addmi.staticMethods=true +addmi.nonstaticMethods=false +addmi.dumpMethodsAfterSuccess=false +addmi.shuffleCandidate=false +addmi.shuffleMethods=false + diff --git a/generator/src/test/resources/jDummy/pom.xml b/generator/src/test/resources/jDummy/addMI/pom.xml similarity index 100% rename from generator/src/test/resources/jDummy/pom.xml rename to generator/src/test/resources/jDummy/addMI/pom.xml diff --git a/generator/src/test/resources/jDummy/addMI/src/main/java/inria/A.java b/generator/src/test/resources/jDummy/addMI/src/main/java/inria/A.java new file mode 100644 index 00000000..07518ae9 --- /dev/null +++ b/generator/src/test/resources/jDummy/addMI/src/main/java/inria/A.java @@ -0,0 +1,66 @@ +package inria; + + + +/** + * Hello world! + * + */ +public class A +{ + public byte b; + public short s; + public int i; + public long l; + public float f; + public double d; + public char c; + public boolean bo; + + public A(byte b, short s, int i, long l, float f, double d, char c, boolean bo) { + this.b = b; + this.s = s; + this.i = i; + this.l = l; + this.f = f; + this.d = d; + this.c = c; + this.bo = bo; + } + + public static void printHello() { + System.out.println("Hello"); + } + + public static A clone(A a) { + A res = new A(a.b,a.s,a.i,a.l,a.f,a.d,a.c,a.bo); + return res; + } + + public int getI() { + return i; + } + + public int addI(int a) { + return a + i; + } + + public void print() { + System.out.println("A: " + this.toString()); + } + + public void addA(A a) { + this.b = a.b; + this.s = a.s; + this.i = a.i; + this.l = a.l; + this.f = a.f; + this.d = a.d; + this.c = a.c; + this.bo = a.bo; + } + + public void addB(B b) { + this.i += b.getI(); + } +} \ No newline at end of file diff --git a/generator/src/test/resources/jDummy/addMI/src/main/java/inria/App.java b/generator/src/test/resources/jDummy/addMI/src/main/java/inria/App.java new file mode 100644 index 00000000..64e63187 --- /dev/null +++ b/generator/src/test/resources/jDummy/addMI/src/main/java/inria/App.java @@ -0,0 +1,73 @@ +package inria; + + + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) { + + System.out.println("0: "); + A a = new A((byte) 0, (short) 0, (int) 0, (long) 0, (float) 0.0, (double) 0.0, '0', false); + B b = new B(a); + A ab = b.ba(a); + ab.print(); + System.out.println("1: " + loops()); + System.out.println("2: " + conditions(15)); + } + + public static int loops(){ + int s = 0; + for(int i = 0 ; 5 >= i; i = i + 1) { + s += i; + } + + int[] array = {1,2,3,4,5}; + for(int i : array) { + s += i; + } + + int i = 0; + while(i < 5) { + s += i; + i++; + } + + i = 0; + do { + s += i; + i++; + } while (i < 5); + return s; + } + + public static int conditions(int i) { + int r; + if((i % 3) == 0) { + r = 100; + } else { + r = 200; + } + if((i % 3) == 0) { + r += 10; + } else if ((i % 3) == 0) { + r += 20; + } else { + r += 30; + } + switch(i % 3) { + case 0: + r += 1; + break; + case 1: + r += 2; + break; + default: + r += 3; + } + return r; + } +} diff --git a/generator/src/test/resources/jDummy/addMI/src/main/java/inria/B.java b/generator/src/test/resources/jDummy/addMI/src/main/java/inria/B.java new file mode 100644 index 00000000..8a77b99a --- /dev/null +++ b/generator/src/test/resources/jDummy/addMI/src/main/java/inria/B.java @@ -0,0 +1,19 @@ +package inria; + +/** + * Created by nharrand on 23/11/16. + */ +public class B { + int i; + public B(A a) { + this.i = a.i; + } + + public A ba(A a) { + return new A(a.b,a.s,a.i,a.l,a.f,a.d,a.c,a.bo); + } + + public int getI() { + return i; + } +} \ No newline at end of file diff --git a/generator/src/test/resources/jDummy/loopflip.properties b/generator/src/test/resources/jDummy/loopflip/loopflip.properties similarity index 70% rename from generator/src/test/resources/jDummy/loopflip.properties rename to generator/src/test/resources/jDummy/loopflip/loopflip.properties index 3503e27d..934953eb 100644 --- a/generator/src/test/resources/jDummy/loopflip.properties +++ b/generator/src/test/resources/jDummy/loopflip/loopflip.properties @@ -1,4 +1,4 @@ -project=src/test/resources/jDummy +project=src/test/resources/jDummy/loopflip/ javaVersion=8 nbRun=2 timeOut=-1 diff --git a/generator/src/test/resources/jDummy/loopflip/pom.xml b/generator/src/test/resources/jDummy/loopflip/pom.xml new file mode 100644 index 00000000..dac5ecb5 --- /dev/null +++ b/generator/src/test/resources/jDummy/loopflip/pom.xml @@ -0,0 +1,27 @@ + + 4.0.0 + + inria + java-dummy + 1.0-SNAPSHOT + jar + + java-dummy + http://maven.apache.org + + + 1.8 + 1.8 + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + diff --git a/generator/src/test/resources/jDummy/src/main/java/inria/App.java b/generator/src/test/resources/jDummy/loopflip/src/main/java/inria/App.java similarity index 100% rename from generator/src/test/resources/jDummy/src/main/java/inria/App.java rename to generator/src/test/resources/jDummy/loopflip/src/main/java/inria/App.java