diff --git a/.gitignore b/.gitignore
index d6297c5..d2b706e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -42,4 +42,7 @@ buildNumber.properties
/.settings/
examples/session1/classes/
-examples/session1/result/
\ No newline at end of file
+examples/session1/result/
+
+#Idea Files
+.idea/
diff --git a/examples/aois/classes/test.txt b/examples/aois/classes/test.txt
new file mode 100644
index 0000000..1a4baf5
--- /dev/null
+++ b/examples/aois/classes/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/aois/result/ClassId_0/class_mutants/mutation_log b/examples/aois/result/ClassId_0/class_mutants/mutation_log
new file mode 100644
index 0000000..e69de29
diff --git a/examples/aois/result/ClassId_0/original/ClassId_0.java b/examples/aois/result/ClassId_0/original/ClassId_0.java
new file mode 100644
index 0000000..bec7a91
--- /dev/null
+++ b/examples/aois/result/ClassId_0/original/ClassId_0.java
@@ -0,0 +1,40 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3(int)/AOIS_1/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3(int)/AOIS_1/ClassId_0.java
new file mode 100644
index 0000000..a070f4e
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3(int)/AOIS_1/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=++field
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= ++field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3(int)/AOIS_2/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3(int)/AOIS_2/ClassId_0.java
new file mode 100644
index 0000000..58a1b4b
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3(int)/AOIS_2/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=--field
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= --field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3(int)/AOIS_3/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3(int)/AOIS_3/ClassId_0.java
new file mode 100644
index 0000000..4931636
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3(int)/AOIS_3/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=field++
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field++;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3(int)/AOIS_4/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3(int)/AOIS_4/ClassId_0.java
new file mode 100644
index 0000000..2e768fd
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3(int)/AOIS_4/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=field--
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field--;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_10/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_10/ClassId_0.java
new file mode 100644
index 0000000..cd5bd7d
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_10/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=param
+After=--param
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = --param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_11/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_11/ClassId_0.java
new file mode 100644
index 0000000..78eec74
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_11/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=param
+After=param++
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param++ * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_12/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_12/ClassId_0.java
new file mode 100644
index 0000000..746b451
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_12/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=param
+After=param--
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param-- * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_13/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_13/ClassId_0.java
new file mode 100644
index 0000000..1c8f06a
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_13/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=++field
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * ++field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_14/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_14/ClassId_0.java
new file mode 100644
index 0000000..9aefb20
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_14/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=--field
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * --field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_15/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_15/ClassId_0.java
new file mode 100644
index 0000000..150a740
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_15/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=field++
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field++;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_16/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_16/ClassId_0.java
new file mode 100644
index 0000000..6a4ce72
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_16/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=field--
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field--;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_9/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_9/ClassId_0.java
new file mode 100644
index 0000000..09aa1d6
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois3a(int)/AOIS_9/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=param
+After=++param
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = ++param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4(int)/AOIS_5/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4(int)/AOIS_5/ClassId_0.java
new file mode 100644
index 0000000..2459348
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4(int)/AOIS_5/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=++field
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= ++field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4(int)/AOIS_6/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4(int)/AOIS_6/ClassId_0.java
new file mode 100644
index 0000000..1c8f99f
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4(int)/AOIS_6/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=--field
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= --field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4(int)/AOIS_7/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4(int)/AOIS_7/ClassId_0.java
new file mode 100644
index 0000000..35a43fd
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4(int)/AOIS_7/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=field++
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field++;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4(int)/AOIS_8/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4(int)/AOIS_8/ClassId_0.java
new file mode 100644
index 0000000..d0ba290
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4(int)/AOIS_8/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=field--
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field--;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_17/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_17/ClassId_0.java
new file mode 100644
index 0000000..4703a21
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_17/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=param
+After=++param
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = ++param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_18/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_18/ClassId_0.java
new file mode 100644
index 0000000..923bb5e
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_18/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=param
+After=--param
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = --param * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_19/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_19/ClassId_0.java
new file mode 100644
index 0000000..a1ea33c
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_19/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=param
+After=param++
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param++ * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_20/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_20/ClassId_0.java
new file mode 100644
index 0000000..6d27eea
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_20/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=param
+After=param--
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param-- * field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_21/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_21/ClassId_0.java
new file mode 100644
index 0000000..bbb2b4e
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_21/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=++field
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * ++field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_22/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_22/ClassId_0.java
new file mode 100644
index 0000000..15135b9
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_22/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=--field
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * --field;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_23/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_23/ClassId_0.java
new file mode 100644
index 0000000..6d40d6f
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_23/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=field++
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field++;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_24/ClassId_0.java b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_24/ClassId_0.java
new file mode 100644
index 0000000..1b0e0ad
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/int_should_trigger_aois4a(int)/AOIS_24/ClassId_0.java
@@ -0,0 +1,47 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=field
+After=field--
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ int field = 5;
+
+ public ClassId_0()
+ {
+ }
+
+ public int should_trigger_aois3( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4( int param )
+ {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a( int param )
+ {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a( int param )
+ {
+ param = param * field--;
+ return param;
+ }
+
+}
diff --git a/examples/aois/result/ClassId_0/traditional_mutants/mutation_log b/examples/aois/result/ClassId_0/traditional_mutants/mutation_log
new file mode 100644
index 0000000..65407be
--- /dev/null
+++ b/examples/aois/result/ClassId_0/traditional_mutants/mutation_log
@@ -0,0 +1,24 @@
+AOIS_1:25:int_should_trigger_aois3(int):field => ++field
+AOIS_2:25:int_should_trigger_aois3(int):field => --field
+AOIS_3:25:int_should_trigger_aois3(int):field => field++
+AOIS_4:25:int_should_trigger_aois3(int):field => field--
+AOIS_5:31:int_should_trigger_aois4(int):field => ++field
+AOIS_6:31:int_should_trigger_aois4(int):field => --field
+AOIS_7:31:int_should_trigger_aois4(int):field => field++
+AOIS_8:31:int_should_trigger_aois4(int):field => field--
+AOIS_9:37:int_should_trigger_aois3a(int):param => ++param
+AOIS_10:37:int_should_trigger_aois3a(int):param => --param
+AOIS_11:37:int_should_trigger_aois3a(int):param => param++
+AOIS_12:37:int_should_trigger_aois3a(int):param => param--
+AOIS_13:37:int_should_trigger_aois3a(int):field => ++field
+AOIS_14:37:int_should_trigger_aois3a(int):field => --field
+AOIS_15:37:int_should_trigger_aois3a(int):field => field++
+AOIS_16:37:int_should_trigger_aois3a(int):field => field--
+AOIS_17:43:int_should_trigger_aois4a(int):param => ++param
+AOIS_18:43:int_should_trigger_aois4a(int):param => --param
+AOIS_19:43:int_should_trigger_aois4a(int):param => param++
+AOIS_20:43:int_should_trigger_aois4a(int):param => param--
+AOIS_21:43:int_should_trigger_aois4a(int):field => ++field
+AOIS_22:43:int_should_trigger_aois4a(int):field => --field
+AOIS_23:43:int_should_trigger_aois4a(int):field => field++
+AOIS_24:43:int_should_trigger_aois4a(int):field => field--
diff --git a/examples/aois/src/ClassId_0.java b/examples/aois/src/ClassId_0.java
new file mode 100644
index 0000000..a47d146
--- /dev/null
+++ b/examples/aois/src/ClassId_0.java
@@ -0,0 +1,26 @@
+import java.util.*;
+
+public class ClassId_0 {
+ int field = 5;
+ public ClassId_0() {
+ }
+ public int should_trigger_aois3(int param) {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois4(int param) {
+ param *= field;
+ return param;
+ }
+
+ public int should_trigger_aois3a(int param) {
+ param = param * field;
+ return param;
+ }
+
+ public int should_trigger_aois4a(int param) {
+ param = param * field;
+ return param;
+ }
+}
diff --git a/examples/aois_aois69/classes/test.txt b/examples/aois_aois69/classes/test.txt
new file mode 100644
index 0000000..593f470
Binary files /dev/null and b/examples/aois_aois69/classes/test.txt differ
diff --git a/examples/aois_aois69/result/ClassId_0/class_mutants/mutation_log b/examples/aois_aois69/result/ClassId_0/class_mutants/mutation_log
new file mode 100644
index 0000000..e69de29
diff --git a/examples/aois_aois69/result/ClassId_0/original/ClassId_0.java b/examples/aois_aois69/result/ClassId_0/original/ClassId_0.java
new file mode 100644
index 0000000..19a0a23
--- /dev/null
+++ b/examples/aois_aois69/result/ClassId_0/original/ClassId_0.java
@@ -0,0 +1,20 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void aoiu_aoiu69_strigger()
+ {
+ int a = 5;
+ int k = a > 0 ? a + 1 : a + 5;
+ }
+
+}
diff --git a/examples/aois_aois69/result/ClassId_0/traditional_mutants/mutation_log b/examples/aois_aois69/result/ClassId_0/traditional_mutants/mutation_log
new file mode 100644
index 0000000..1cd9b29
--- /dev/null
+++ b/examples/aois_aois69/result/ClassId_0/traditional_mutants/mutation_log
@@ -0,0 +1,10 @@
+AOIS_1:24:void_aoiu_aoiu69_strigger():a => ++a
+AOIS_2:24:void_aoiu_aoiu69_strigger():a => --a
+AOIS_3:24:void_aoiu_aoiu69_strigger():a => a++
+AOIS_4:24:void_aoiu_aoiu69_strigger():a => a--
+AOIS_5:24:void_aoiu_aoiu69_strigger():a => ++a
+AOIS_6:24:void_aoiu_aoiu69_strigger():a => --a
+AOIS_7:24:void_aoiu_aoiu69_strigger():a => a++
+AOIS_8:24:void_aoiu_aoiu69_strigger():a => a--
+AOIS_9:24:void_aoiu_aoiu69_strigger():a => ++a
+AOIS_10:24:void_aoiu_aoiu69_strigger():a => --a
diff --git a/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_1/ClassId_0.java b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_1/ClassId_0.java
new file mode 100644
index 0000000..ad0898c
--- /dev/null
+++ b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_1/ClassId_0.java
@@ -0,0 +1,27 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=a
+After=++a
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void aoiu_aoiu69_strigger()
+ {
+ int a = 5;
+ int k = ++a > 0 ? a + 1 : a + 5;
+ }
+
+}
diff --git a/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_10/ClassId_0.java b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_10/ClassId_0.java
new file mode 100644
index 0000000..58a799b
--- /dev/null
+++ b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_10/ClassId_0.java
@@ -0,0 +1,27 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=a
+After=--a
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void aoiu_aoiu69_strigger()
+ {
+ int a = 5;
+ int k = a > 0 ? a + 1 : --a + 5;
+ }
+
+}
diff --git a/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_2/ClassId_0.java b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_2/ClassId_0.java
new file mode 100644
index 0000000..7435342
--- /dev/null
+++ b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_2/ClassId_0.java
@@ -0,0 +1,27 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=a
+After=--a
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void aoiu_aoiu69_strigger()
+ {
+ int a = 5;
+ int k = --a > 0 ? a + 1 : a + 5;
+ }
+
+}
diff --git a/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_3/ClassId_0.java b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_3/ClassId_0.java
new file mode 100644
index 0000000..1a4a9f3
--- /dev/null
+++ b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_3/ClassId_0.java
@@ -0,0 +1,27 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=a
+After=a++
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void aoiu_aoiu69_strigger()
+ {
+ int a = 5;
+ int k = a++ > 0 ? a + 1 : a + 5;
+ }
+
+}
diff --git a/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_4/ClassId_0.java b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_4/ClassId_0.java
new file mode 100644
index 0000000..f02590a
--- /dev/null
+++ b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_4/ClassId_0.java
@@ -0,0 +1,27 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=a
+After=a--
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void aoiu_aoiu69_strigger()
+ {
+ int a = 5;
+ int k = a-- > 0 ? a + 1 : a + 5;
+ }
+
+}
diff --git a/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_5/ClassId_0.java b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_5/ClassId_0.java
new file mode 100644
index 0000000..c0148f1
--- /dev/null
+++ b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_5/ClassId_0.java
@@ -0,0 +1,27 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=a
+After=++a
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void aoiu_aoiu69_strigger()
+ {
+ int a = 5;
+ int k = a > 0 ? ++a + 1 : a + 5;
+ }
+
+}
diff --git a/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_6/ClassId_0.java b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_6/ClassId_0.java
new file mode 100644
index 0000000..cbfb6e2
--- /dev/null
+++ b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_6/ClassId_0.java
@@ -0,0 +1,27 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=a
+After=--a
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void aoiu_aoiu69_strigger()
+ {
+ int a = 5;
+ int k = a > 0 ? --a + 1 : a + 5;
+ }
+
+}
diff --git a/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_7/ClassId_0.java b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_7/ClassId_0.java
new file mode 100644
index 0000000..5ba379c
--- /dev/null
+++ b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_7/ClassId_0.java
@@ -0,0 +1,27 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=a
+After=a++
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void aoiu_aoiu69_strigger()
+ {
+ int a = 5;
+ int k = a > 0 ? a++ + 1 : a + 5;
+ }
+
+}
diff --git a/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_8/ClassId_0.java b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_8/ClassId_0.java
new file mode 100644
index 0000000..ff60fdd
--- /dev/null
+++ b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_8/ClassId_0.java
@@ -0,0 +1,27 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=a
+After=a--
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void aoiu_aoiu69_strigger()
+ {
+ int a = 5;
+ int k = a > 0 ? a-- + 1 : a + 5;
+ }
+
+}
diff --git a/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_9/ClassId_0.java b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_9/ClassId_0.java
new file mode 100644
index 0000000..ec69cba
--- /dev/null
+++ b/examples/aois_aois69/result/ClassId_0/traditional_mutants/void_aoiu_aoiu69_strigger()/AOIS_9/ClassId_0.java
@@ -0,0 +1,27 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+/** @ContextInfo(
+MutationOperatorGroup=AOIS
+Before=a
+After=++a
+MutatedLine=-1
+AstContext=null
+)*/
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void aoiu_aoiu69_strigger()
+ {
+ int a = 5;
+ int k = a > 0 ? a + 1 : ++a + 5;
+ }
+
+}
diff --git a/examples/aois_aois69/result/test.txt b/examples/aois_aois69/result/test.txt
new file mode 100644
index 0000000..4227ca4
Binary files /dev/null and b/examples/aois_aois69/result/test.txt differ
diff --git a/examples/aois_aois69/src/ClassId_0.java b/examples/aois_aois69/src/ClassId_0.java
new file mode 100644
index 0000000..6d53444
--- /dev/null
+++ b/examples/aois_aois69/src/ClassId_0.java
@@ -0,0 +1,11 @@
+import java.util.*;
+
+public class ClassId_0 {
+ public ClassId_0() {
+ }
+ public void aoiu_aoiu69_strigger() {
+ int a = 5;
+ int k = a > 0 ? a + 1: a + 5;
+ }
+
+}
diff --git a/examples/aois_aois69/testset/test.txt b/examples/aois_aois69/testset/test.txt
new file mode 100644
index 0000000..4227ca4
Binary files /dev/null and b/examples/aois_aois69/testset/test.txt differ
diff --git a/examples/aoiu_aoiu57/classes/test.txt b/examples/aoiu_aoiu57/classes/test.txt
new file mode 100644
index 0000000..1a4baf5
--- /dev/null
+++ b/examples/aoiu_aoiu57/classes/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/aoiu_aoiu57/result/ClassId_0/class_mutants/mutation_log b/examples/aoiu_aoiu57/result/ClassId_0/class_mutants/mutation_log
new file mode 100644
index 0000000..e69de29
diff --git a/examples/aoiu_aoiu57/result/ClassId_0/original/ClassId_0.java b/examples/aoiu_aoiu57/result/ClassId_0/original/ClassId_0.java
new file mode 100644
index 0000000..6192c7f
--- /dev/null
+++ b/examples/aoiu_aoiu57/result/ClassId_0/original/ClassId_0.java
@@ -0,0 +1,30 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public int aoiu_aoiu57_strigger()
+ {
+ int x = 4;
+ int y = 6;
+ y += 6;
+ return x;
+ }
+
+ public int aoiu_aoiu57_ntrigger()
+ {
+ int x = 4;
+ int y = 6;
+ y += 6;
+ return y;
+ }
+
+}
diff --git a/examples/aoiu_aoiu57/result/ClassId_0/traditional_mutants/int_aoiu_aoiu57_ntrigger()/AOIU_1/ClassId_0.java b/examples/aoiu_aoiu57/result/ClassId_0/traditional_mutants/int_aoiu_aoiu57_ntrigger()/AOIU_1/ClassId_0.java
new file mode 100644
index 0000000..cb8093e
--- /dev/null
+++ b/examples/aoiu_aoiu57/result/ClassId_0/traditional_mutants/int_aoiu_aoiu57_ntrigger()/AOIU_1/ClassId_0.java
@@ -0,0 +1,30 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public int aoiu_aoiu57_strigger()
+ {
+ int x = 4;
+ int y = 6;
+ y += 6;
+ return x;
+ }
+
+ public int aoiu_aoiu57_ntrigger()
+ {
+ int x = 4;
+ int y = 6;
+ y += 6;
+ return -y;
+ }
+
+}
diff --git a/examples/aoiu_aoiu57/result/ClassId_0/traditional_mutants/mutation_log b/examples/aoiu_aoiu57/result/ClassId_0/traditional_mutants/mutation_log
new file mode 100644
index 0000000..105108c
--- /dev/null
+++ b/examples/aoiu_aoiu57/result/ClassId_0/traditional_mutants/mutation_log
@@ -0,0 +1 @@
+AOIU_1:27:int_aoiu_aoiu57_ntrigger():y => -y
diff --git a/examples/aoiu_aoiu57/result/test.txt b/examples/aoiu_aoiu57/result/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/aoiu_aoiu57/result/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/aoiu_aoiu57/src/ClassId_0.java b/examples/aoiu_aoiu57/src/ClassId_0.java
new file mode 100644
index 0000000..629e5a1
--- /dev/null
+++ b/examples/aoiu_aoiu57/src/ClassId_0.java
@@ -0,0 +1,18 @@
+import java.util.*;
+
+public class ClassId_0 {
+ public ClassId_0() {
+ }
+ public int aoiu_aoiu57_strigger() {
+ int x = 4;
+ int y = 6;
+ y += 6;
+ return x;
+ }
+ public int aoiu_aoiu57_ntrigger() {
+ int x = 4;
+ int y = 6;
+ y += 6;
+ return y;
+ }
+}
diff --git a/examples/aoiu_aoiu57/testset/test.txt b/examples/aoiu_aoiu57/testset/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/aoiu_aoiu57/testset/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/aoiu_aoiu69/classes/test.txt b/examples/aoiu_aoiu69/classes/test.txt
new file mode 100644
index 0000000..1a4baf5
--- /dev/null
+++ b/examples/aoiu_aoiu69/classes/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/aoiu_aoiu69/result/ClassId_0/class_mutants/mutation_log b/examples/aoiu_aoiu69/result/ClassId_0/class_mutants/mutation_log
new file mode 100644
index 0000000..e69de29
diff --git a/examples/aoiu_aoiu69/result/ClassId_0/original/ClassId_0.java b/examples/aoiu_aoiu69/result/ClassId_0/original/ClassId_0.java
new file mode 100644
index 0000000..6192c7f
--- /dev/null
+++ b/examples/aoiu_aoiu69/result/ClassId_0/original/ClassId_0.java
@@ -0,0 +1,30 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public int aoiu_aoiu57_strigger()
+ {
+ int x = 4;
+ int y = 6;
+ y += 6;
+ return x;
+ }
+
+ public int aoiu_aoiu57_ntrigger()
+ {
+ int x = 4;
+ int y = 6;
+ y += 6;
+ return y;
+ }
+
+}
diff --git a/examples/aoiu_aoiu69/result/ClassId_0/traditional_mutants/int_aoiu_aoiu57_ntrigger()/AOIU_1/ClassId_0.java b/examples/aoiu_aoiu69/result/ClassId_0/traditional_mutants/int_aoiu_aoiu57_ntrigger()/AOIU_1/ClassId_0.java
new file mode 100644
index 0000000..cb8093e
--- /dev/null
+++ b/examples/aoiu_aoiu69/result/ClassId_0/traditional_mutants/int_aoiu_aoiu57_ntrigger()/AOIU_1/ClassId_0.java
@@ -0,0 +1,30 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public int aoiu_aoiu57_strigger()
+ {
+ int x = 4;
+ int y = 6;
+ y += 6;
+ return x;
+ }
+
+ public int aoiu_aoiu57_ntrigger()
+ {
+ int x = 4;
+ int y = 6;
+ y += 6;
+ return -y;
+ }
+
+}
diff --git a/examples/aoiu_aoiu69/result/ClassId_0/traditional_mutants/mutation_log b/examples/aoiu_aoiu69/result/ClassId_0/traditional_mutants/mutation_log
new file mode 100644
index 0000000..105108c
--- /dev/null
+++ b/examples/aoiu_aoiu69/result/ClassId_0/traditional_mutants/mutation_log
@@ -0,0 +1 @@
+AOIU_1:27:int_aoiu_aoiu57_ntrigger():y => -y
diff --git a/examples/aoiu_aoiu69/result/test.txt b/examples/aoiu_aoiu69/result/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/aoiu_aoiu69/result/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/aoiu_aoiu69/src/ClassId_0.java b/examples/aoiu_aoiu69/src/ClassId_0.java
new file mode 100644
index 0000000..629e5a1
--- /dev/null
+++ b/examples/aoiu_aoiu69/src/ClassId_0.java
@@ -0,0 +1,18 @@
+import java.util.*;
+
+public class ClassId_0 {
+ public ClassId_0() {
+ }
+ public int aoiu_aoiu57_strigger() {
+ int x = 4;
+ int y = 6;
+ y += 6;
+ return x;
+ }
+ public int aoiu_aoiu57_ntrigger() {
+ int x = 4;
+ int y = 6;
+ y += 6;
+ return y;
+ }
+}
diff --git a/examples/aoiu_aoiu69/testset/test.txt b/examples/aoiu_aoiu69/testset/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/aoiu_aoiu69/testset/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/aoiu_asrs43/classes/test.txt b/examples/aoiu_asrs43/classes/test.txt
new file mode 100644
index 0000000..1a4baf5
--- /dev/null
+++ b/examples/aoiu_asrs43/classes/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/aoiu_asrs43/result/ClassId_0/class_mutants/mutation_log b/examples/aoiu_asrs43/result/ClassId_0/class_mutants/mutation_log
new file mode 100644
index 0000000..e69de29
diff --git a/examples/aoiu_asrs43/result/ClassId_0/original/ClassId_0.java b/examples/aoiu_asrs43/result/ClassId_0/original/ClassId_0.java
new file mode 100644
index 0000000..6a382b1
--- /dev/null
+++ b/examples/aoiu_asrs43/result/ClassId_0/original/ClassId_0.java
@@ -0,0 +1,21 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void aoiu_asrs43_strigger()
+ {
+ int x = 4;
+ int y = 2;
+ x += y;
+ }
+
+}
diff --git a/examples/aoiu_asrs43/result/ClassId_0/traditional_mutants/mutation_log b/examples/aoiu_asrs43/result/ClassId_0/traditional_mutants/mutation_log
new file mode 100644
index 0000000..e69de29
diff --git a/examples/aoiu_asrs43/result/test.txt b/examples/aoiu_asrs43/result/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/aoiu_asrs43/result/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/aoiu_asrs43/src/ClassId_0.java b/examples/aoiu_asrs43/src/ClassId_0.java
new file mode 100644
index 0000000..d3c2d07
--- /dev/null
+++ b/examples/aoiu_asrs43/src/ClassId_0.java
@@ -0,0 +1,11 @@
+import java.util.*;
+
+public class ClassId_0 {
+ public ClassId_0() {
+ }
+ public void aoiu_asrs43_strigger() {
+ int x = 4;
+ int y = 2;
+ x += y;
+ }
+}
diff --git a/examples/aoiu_asrs43/testset/test.txt b/examples/aoiu_asrs43/testset/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/aoiu_asrs43/testset/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/aoui_loi56/classes/test.txt b/examples/aoui_loi56/classes/test.txt
new file mode 100644
index 0000000..1a4baf5
--- /dev/null
+++ b/examples/aoui_loi56/classes/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/aoui_loi56/result/ClassId_0/class_mutants/mutation_log b/examples/aoui_loi56/result/ClassId_0/class_mutants/mutation_log
new file mode 100644
index 0000000..e69de29
diff --git a/examples/aoui_loi56/result/ClassId_0/original/ClassId_0.java b/examples/aoui_loi56/result/ClassId_0/original/ClassId_0.java
new file mode 100644
index 0000000..d39f57e
--- /dev/null
+++ b/examples/aoui_loi56/result/ClassId_0/original/ClassId_0.java
@@ -0,0 +1,23 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void ror_sdl52()
+ {
+ boolean dummy = false;
+ boolean dummy1 = true;
+ if (dummy || dummy1) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+}
diff --git a/examples/aoui_loi56/result/ClassId_0/traditional_mutants/mutation_log b/examples/aoui_loi56/result/ClassId_0/traditional_mutants/mutation_log
new file mode 100644
index 0000000..e69de29
diff --git a/examples/aoui_loi56/result/test.txt b/examples/aoui_loi56/result/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/aoui_loi56/result/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/aoui_loi56/src/.ClassId_0.java.swp b/examples/aoui_loi56/src/.ClassId_0.java.swp
new file mode 100644
index 0000000..6a4710a
Binary files /dev/null and b/examples/aoui_loi56/src/.ClassId_0.java.swp differ
diff --git a/examples/aoui_loi56/src/ClassId_0.java b/examples/aoui_loi56/src/ClassId_0.java
new file mode 100644
index 0000000..c073067
--- /dev/null
+++ b/examples/aoui_loi56/src/ClassId_0.java
@@ -0,0 +1,18 @@
+import java.io.BufferedOutputStream;
+import java.io.IOException;
+import java.lang.System;
+
+public class ClassId_0 {
+ public ClassId_0() {
+ }
+ public void aoiu_loi56() {
+ try {
+ BufferedOutputStream v1 = new BufferedOutputStream(System.out);
+ int dummy = 56;
+ v1.write(dummy);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+}
diff --git a/examples/aoui_loi56/testset/test.txt b/examples/aoui_loi56/testset/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/aoui_loi56/testset/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/loi_ror49/classes/test.txt b/examples/loi_ror49/classes/test.txt
new file mode 100644
index 0000000..1a4baf5
--- /dev/null
+++ b/examples/loi_ror49/classes/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/loi_ror49/result/ClassId_0/class_mutants/mutation_log b/examples/loi_ror49/result/ClassId_0/class_mutants/mutation_log
new file mode 100644
index 0000000..e69de29
diff --git a/examples/loi_ror49/result/ClassId_0/original/ClassId_0.java b/examples/loi_ror49/result/ClassId_0/original/ClassId_0.java
new file mode 100644
index 0000000..d39f57e
--- /dev/null
+++ b/examples/loi_ror49/result/ClassId_0/original/ClassId_0.java
@@ -0,0 +1,23 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void ror_sdl52()
+ {
+ boolean dummy = false;
+ boolean dummy1 = true;
+ if (dummy || dummy1) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+}
diff --git a/examples/loi_ror49/result/ClassId_0/traditional_mutants/mutation_log b/examples/loi_ror49/result/ClassId_0/traditional_mutants/mutation_log
new file mode 100644
index 0000000..e69de29
diff --git a/examples/loi_ror49/result/test.txt b/examples/loi_ror49/result/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/loi_ror49/result/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/loi_ror49/src/ClassId_0.java b/examples/loi_ror49/src/ClassId_0.java
new file mode 100644
index 0000000..b43faf1
--- /dev/null
+++ b/examples/loi_ror49/src/ClassId_0.java
@@ -0,0 +1,13 @@
+import java.util.*;
+
+public class ClassId_0 {
+ public ClassId_0() {
+ }
+ public void ror_sdl52() {
+ boolean dummy = false;
+ boolean dummy1 = true;
+ if (dummy || dummy1) {
+ System.out.println("Dummy");
+ }
+ }
+}
diff --git a/examples/loi_ror49/testset/test.txt b/examples/loi_ror49/testset/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/loi_ror49/testset/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/ror_ror66/classes/test.txt b/examples/ror_ror66/classes/test.txt
new file mode 100644
index 0000000..1a4baf5
--- /dev/null
+++ b/examples/ror_ror66/classes/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/ror_ror66/result/ClassId_0/class_mutants/mutation_log b/examples/ror_ror66/result/ClassId_0/class_mutants/mutation_log
new file mode 100644
index 0000000..e69de29
diff --git a/examples/ror_ror66/result/ClassId_0/original/ClassId_0.java b/examples/ror_ror66/result/ClassId_0/original/ClassId_0.java
new file mode 100644
index 0000000..629abfc
--- /dev/null
+++ b/examples/ror_ror66/result/ClassId_0/original/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void ror_ror66_strigger()
+ {
+ int[] dummy_int = new int[]{ 1, 2, 3, 4, 5, 6 };
+ if (dummy_int.length == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void ror_ror66_strigger1()
+ {
+ char[] dummy_char = new char[]{ '1', '2', '3', '4', '5', '6' };
+ if (dummy_char.length == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void ror_ror66_strigger2()
+ {
+ java.lang.String dummy = "Dummy";
+ if (dummy.length() == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+}
diff --git a/examples/ror_ror66/result/ClassId_0/traditional_mutants/mutation_log b/examples/ror_ror66/result/ClassId_0/traditional_mutants/mutation_log
new file mode 100644
index 0000000..e69de29
diff --git a/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger()/ROR_1/ClassId_0.java b/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger()/ROR_1/ClassId_0.java
new file mode 100644
index 0000000..0816b5f
--- /dev/null
+++ b/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger()/ROR_1/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void ror_ror66_strigger()
+ {
+ int[] dummy_int = new int[]{ 1, 2, 3, 4, 5, 6 };
+ if (dummy_int.length > 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void ror_ror66_strigger1()
+ {
+ char[] dummy_char = new char[]{ '1', '2', '3', '4', '5', '6' };
+ if (dummy_char.length == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void ror_ror66_strigger2()
+ {
+ java.lang.String dummy = "Dummy";
+ if (dummy.length() == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+}
diff --git a/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger()/ROR_2/ClassId_0.java b/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger()/ROR_2/ClassId_0.java
new file mode 100644
index 0000000..fbbfc80
--- /dev/null
+++ b/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger()/ROR_2/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void ror_ror66_strigger()
+ {
+ int[] dummy_int = new int[]{ 1, 2, 3, 4, 5, 6 };
+ if (dummy_int.length >= 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void ror_ror66_strigger1()
+ {
+ char[] dummy_char = new char[]{ '1', '2', '3', '4', '5', '6' };
+ if (dummy_char.length == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void ror_ror66_strigger2()
+ {
+ java.lang.String dummy = "Dummy";
+ if (dummy.length() == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+}
diff --git a/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger()/ROR_3/ClassId_0.java b/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger()/ROR_3/ClassId_0.java
new file mode 100644
index 0000000..c2b6655
--- /dev/null
+++ b/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger()/ROR_3/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void ror_ror66_strigger()
+ {
+ int[] dummy_int = new int[]{ 1, 2, 3, 4, 5, 6 };
+ if (dummy_int.length < 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void ror_ror66_strigger1()
+ {
+ char[] dummy_char = new char[]{ '1', '2', '3', '4', '5', '6' };
+ if (dummy_char.length == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void ror_ror66_strigger2()
+ {
+ java.lang.String dummy = "Dummy";
+ if (dummy.length() == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+}
diff --git a/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger1()/ROR_4/ClassId_0.java b/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger1()/ROR_4/ClassId_0.java
new file mode 100644
index 0000000..11ff3a7
--- /dev/null
+++ b/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger1()/ROR_4/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void ror_ror66_strigger()
+ {
+ int[] dummy_int = new int[]{ 1, 2, 3, 4, 5, 6 };
+ if (dummy_int.length == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void ror_ror66_strigger1()
+ {
+ char[] dummy_char = new char[]{ '1', '2', '3', '4', '5', '6' };
+ if (dummy_char.length > 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void ror_ror66_strigger2()
+ {
+ java.lang.String dummy = "Dummy";
+ if (dummy.length() == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+}
diff --git a/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger1()/ROR_5/ClassId_0.java b/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger1()/ROR_5/ClassId_0.java
new file mode 100644
index 0000000..2022c1b
--- /dev/null
+++ b/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger1()/ROR_5/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void ror_ror66_strigger()
+ {
+ int[] dummy_int = new int[]{ 1, 2, 3, 4, 5, 6 };
+ if (dummy_int.length == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void ror_ror66_strigger1()
+ {
+ char[] dummy_char = new char[]{ '1', '2', '3', '4', '5', '6' };
+ if (dummy_char.length >= 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void ror_ror66_strigger2()
+ {
+ java.lang.String dummy = "Dummy";
+ if (dummy.length() == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+}
diff --git a/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger1()/ROR_6/ClassId_0.java b/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger1()/ROR_6/ClassId_0.java
new file mode 100644
index 0000000..4e0b2b8
--- /dev/null
+++ b/examples/ror_ror66/result/ClassId_0/traditional_mutants/void_ror_ror66_strigger1()/ROR_6/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ public ClassId_0()
+ {
+ }
+
+ public void ror_ror66_strigger()
+ {
+ int[] dummy_int = new int[]{ 1, 2, 3, 4, 5, 6 };
+ if (dummy_int.length == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void ror_ror66_strigger1()
+ {
+ char[] dummy_char = new char[]{ '1', '2', '3', '4', '5', '6' };
+ if (dummy_char.length < 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void ror_ror66_strigger2()
+ {
+ java.lang.String dummy = "Dummy";
+ if (dummy.length() == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+}
diff --git a/examples/ror_ror66/result/test.txt b/examples/ror_ror66/result/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/ror_ror66/result/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/ror_ror66/src/ClassId_0.java b/examples/ror_ror66/src/ClassId_0.java
new file mode 100644
index 0000000..288e293
--- /dev/null
+++ b/examples/ror_ror66/src/ClassId_0.java
@@ -0,0 +1,24 @@
+import java.util.*;
+
+public class ClassId_0 {
+ public ClassId_0() {
+ }
+ public void ror_ror66_strigger() {
+ int[] dummy_int = new int[] {1,2,3,4,5,6};
+ if (dummy_int.length == 0) {
+ System.out.println("Dummy");
+ }
+ }
+ public void ror_ror66_strigger1() {
+ char[] dummy_char = new char[] {'1','2','3','4','5','6'};
+ if (dummy_char.length == 0) {
+ System.out.println("Dummy");
+ }
+ }
+ public void ror_ror66_strigger2() {
+ String dummy = "Dummy";
+ if (dummy.length() == 0) {
+ System.out.println("Dummy");
+ }
+ }
+}
diff --git a/examples/ror_ror66/testset/test.txt b/examples/ror_ror66/testset/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/ror_ror66/testset/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/ror_sdl52/classes/test.txt b/examples/ror_sdl52/classes/test.txt
new file mode 100644
index 0000000..1a4baf5
--- /dev/null
+++ b/examples/ror_sdl52/classes/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/ror_sdl52/result/ClassId_0/class_mutants/mutation_log b/examples/ror_sdl52/result/ClassId_0/class_mutants/mutation_log
new file mode 100644
index 0000000..e69de29
diff --git a/examples/ror_sdl52/result/ClassId_0/original/ClassId_0.java b/examples/ror_sdl52/result/ClassId_0/original/ClassId_0.java
new file mode 100644
index 0000000..77d73e9
--- /dev/null
+++ b/examples/ror_sdl52/result/ClassId_0/original/ClassId_0.java
@@ -0,0 +1,61 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public void loi_ror49()
+ {
+ if (string.length < 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void loi_ror49_1()
+ {
+ if (string.length <= 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void loi_ror49_2()
+ {
+ if (string.length == 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void loi_ror49_3()
+ {
+ if (string.length > 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void loi_ror49_4()
+ {
+ if (string.length >= 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+ public void loi_ror49_5()
+ {
+ if (string.length != 0) {
+ System.out.println( "Dummy" );
+ }
+ }
+
+}
diff --git a/examples/ror_sdl52/result/ClassId_0/traditional_mutants/mutation_log b/examples/ror_sdl52/result/ClassId_0/traditional_mutants/mutation_log
new file mode 100644
index 0000000..e69de29
diff --git a/examples/ror_sdl52/result/test.txt b/examples/ror_sdl52/result/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/ror_sdl52/result/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/ror_sdl52/src/ClassId_0.java b/examples/ror_sdl52/src/ClassId_0.java
new file mode 100644
index 0000000..f08f06d
--- /dev/null
+++ b/examples/ror_sdl52/src/ClassId_0.java
@@ -0,0 +1,34 @@
+import java.util.*;
+
+public class ClassId_0 {
+ String[] string;
+ public ClassId_0() {
+ string = new String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+ public void loi_ror49() {
+ if (string.length < 0)
+ System.out.println("Dummy");
+ }
+ public void loi_ror49_1() {
+ if (string.length <= 0)
+ System.out.println("Dummy");
+ }
+ public void loi_ror49_2() {
+ if (string.length == 0)
+ System.out.println("Dummy");
+ }
+ public void loi_ror49_3() {
+ if (string.length > 0)
+ System.out.println("Dummy");
+ }
+ public void loi_ror49_4() {
+ if (string.length >= 0)
+ System.out.println("Dummy");
+ }
+ public void loi_ror49_5() {
+ if (string.length != 0)
+ System.out.println("Dummy");
+ }
+}
diff --git a/examples/ror_sdl52/testset/test.txt b/examples/ror_sdl52/testset/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/ror_sdl52/testset/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/ror_sdl70/classes/test.txt b/examples/ror_sdl70/classes/test.txt
new file mode 100644
index 0000000..1a4baf5
--- /dev/null
+++ b/examples/ror_sdl70/classes/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/ror_sdl70/result/ClassId_0/class_mutants/mutation_log b/examples/ror_sdl70/result/ClassId_0/class_mutants/mutation_log
new file mode 100644
index 0000000..e69de29
diff --git a/examples/ror_sdl70/result/ClassId_0/original/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/original/ClassId_0.java
new file mode 100644
index 0000000..3498575
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/original/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/ClassId_0()/SDL_1/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/ClassId_0()/SDL_1/ClassId_0.java
new file mode 100644
index 0000000..d0c1ef5
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/ClassId_0()/SDL_1/ClassId_0.java
@@ -0,0 +1,37 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/ClassId_0()/SDL_2/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/ClassId_0()/SDL_2/ClassId_0.java
new file mode 100644
index 0000000..2fccd9d
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/ClassId_0()/SDL_2/ClassId_0.java
@@ -0,0 +1,37 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/ClassId_0()/SDL_3/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/ClassId_0()/SDL_3/ClassId_0.java
new file mode 100644
index 0000000..63da708
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/ClassId_0()/SDL_3/ClassId_0.java
@@ -0,0 +1,37 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/ROR_1/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/ROR_1/ClassId_0.java
new file mode 100644
index 0000000..24cad94
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/ROR_1/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a > b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/ROR_2/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/ROR_2/ClassId_0.java
new file mode 100644
index 0000000..8aeebf3
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/ROR_2/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a >= b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/ROR_3/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/ROR_3/ClassId_0.java
new file mode 100644
index 0000000..6ff9a3d
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/ROR_3/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a < b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/ROR_4/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/ROR_4/ClassId_0.java
new file mode 100644
index 0000000..e2b4539
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/ROR_4/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a <= b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/ROR_5/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/ROR_5/ClassId_0.java
new file mode 100644
index 0000000..8f3d79a
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/ROR_5/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a != b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/SDL_4/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/SDL_4/ClassId_0.java
new file mode 100644
index 0000000..ea1637d
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/SDL_4/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return true;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/SDL_5/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/SDL_5/ClassId_0.java
new file mode 100644
index 0000000..eff3052
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger()/SDL_5/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return false;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/ROR_10/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/ROR_10/ClassId_0.java
new file mode 100644
index 0000000..2c0b78e
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/ROR_10/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length != b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/ROR_6/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/ROR_6/ClassId_0.java
new file mode 100644
index 0000000..2d5e494
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/ROR_6/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length > b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/ROR_7/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/ROR_7/ClassId_0.java
new file mode 100644
index 0000000..59ff29c
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/ROR_7/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length >= b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/ROR_8/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/ROR_8/ClassId_0.java
new file mode 100644
index 0000000..64c80af
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/ROR_8/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length < b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/ROR_9/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/ROR_9/ClassId_0.java
new file mode 100644
index 0000000..4c86b45
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/ROR_9/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length <= b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/SDL_6/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/SDL_6/ClassId_0.java
new file mode 100644
index 0000000..57fc936
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/SDL_6/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return true;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/SDL_7/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/SDL_7/ClassId_0.java
new file mode 100644
index 0000000..de4167a
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger1()/SDL_7/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return false;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/ROR_11/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/ROR_11/ClassId_0.java
new file mode 100644
index 0000000..00cf174
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/ROR_11/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length > 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/ROR_12/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/ROR_12/ClassId_0.java
new file mode 100644
index 0000000..9daf05d
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/ROR_12/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length >= 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/ROR_13/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/ROR_13/ClassId_0.java
new file mode 100644
index 0000000..c836a9f
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/ROR_13/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length < 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/ROR_14/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/ROR_14/ClassId_0.java
new file mode 100644
index 0000000..d07e8ba
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/ROR_14/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length <= 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/ROR_15/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/ROR_15/ClassId_0.java
new file mode 100644
index 0000000..c8c4f9e
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/ROR_15/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return a.length != 0;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/SDL_8/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/SDL_8/ClassId_0.java
new file mode 100644
index 0000000..6f02b3a
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/SDL_8/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return true;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/SDL_9/ClassId_0.java b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/SDL_9/ClassId_0.java
new file mode 100644
index 0000000..b53ec99
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/boolean_ror_sdl70_strigger2()/SDL_9/ClassId_0.java
@@ -0,0 +1,38 @@
+// This is a mutant program.
+// Author : ysma
+
+import java.util.*;
+
+
+public class ClassId_0
+{
+
+ java.lang.String[] string;
+
+ public ClassId_0()
+ {
+ string = new java.lang.String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+
+ public boolean ror_sdl70_strigger()
+ {
+ int a = 5;
+ int b = 6;
+ return a == b;
+ }
+
+ public boolean ror_sdl70_strigger1()
+ {
+ int b = 5;
+ return this.string.length == b;
+ }
+
+ public boolean ror_sdl70_strigger2()
+ {
+ int[] a = new int[0];
+ return false;
+ }
+
+}
diff --git a/examples/ror_sdl70/result/ClassId_0/traditional_mutants/mutation_log b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/mutation_log
new file mode 100644
index 0000000..158a607
--- /dev/null
+++ b/examples/ror_sdl70/result/ClassId_0/traditional_mutants/mutation_log
@@ -0,0 +1,24 @@
+ROR_1:23:boolean_ror_sdl70_strigger(): a == b => a > b
+ROR_2:23:boolean_ror_sdl70_strigger(): a == b => a >= b
+ROR_3:23:boolean_ror_sdl70_strigger(): a == b => a < b
+ROR_4:23:boolean_ror_sdl70_strigger(): a == b => a <= b
+ROR_5:23:boolean_ror_sdl70_strigger(): a == b => a != b
+ROR_6:29:boolean_ror_sdl70_strigger1(): this.string.length == b => this.string.length > b
+ROR_7:29:boolean_ror_sdl70_strigger1(): this.string.length == b => this.string.length >= b
+ROR_8:29:boolean_ror_sdl70_strigger1(): this.string.length == b => this.string.length < b
+ROR_9:29:boolean_ror_sdl70_strigger1(): this.string.length == b => this.string.length <= b
+ROR_10:29:boolean_ror_sdl70_strigger1(): this.string.length == b => this.string.length != b
+ROR_11:35:boolean_ror_sdl70_strigger2(): a.length == 0 => a.length > 0
+ROR_12:35:boolean_ror_sdl70_strigger2(): a.length == 0 => a.length >= 0
+ROR_13:35:boolean_ror_sdl70_strigger2(): a.length == 0 => a.length < 0
+ROR_14:35:boolean_ror_sdl70_strigger2(): a.length == 0 => a.length <= 0
+ROR_15:35:boolean_ror_sdl70_strigger2(): a.length == 0 => a.length != 0
+SDL_1:16:ClassId_0(): string = new java.lang.String[2]; string[0] = \"Hello\"; string[1] = \"World!\"; => string[0] = \"Hello\"; string[1] = \"World!\";
+SDL_2:16:ClassId_0(): string = new java.lang.String[2]; string[0] = \"Hello\"; string[1] = \"World!\"; => string = new java.lang.String[2]; string[1] = \"World!\";
+SDL_3:16:ClassId_0(): string = new java.lang.String[2]; string[0] = \"Hello\"; string[1] = \"World!\"; => string = new java.lang.String[2]; string[0] = \"Hello\";
+SDL_4:24:boolean_ror_sdl70_strigger(): return a == b; => return true;
+SDL_5:24:boolean_ror_sdl70_strigger(): return a == b; => return false;
+SDL_6:30:boolean_ror_sdl70_strigger1(): return this.string.length == b; => return true;
+SDL_7:30:boolean_ror_sdl70_strigger1(): return this.string.length == b; => return false;
+SDL_8:36:boolean_ror_sdl70_strigger2(): return a.length == 0; => return true;
+SDL_9:36:boolean_ror_sdl70_strigger2(): return a.length == 0; => return false;
diff --git a/examples/ror_sdl70/result/test.txt b/examples/ror_sdl70/result/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/ror_sdl70/result/test.txt
@@ -0,0 +1 @@
+
diff --git a/examples/ror_sdl70/src/ClassId_0.java b/examples/ror_sdl70/src/ClassId_0.java
new file mode 100644
index 0000000..a4eed06
--- /dev/null
+++ b/examples/ror_sdl70/src/ClassId_0.java
@@ -0,0 +1,22 @@
+import java.util.*;
+
+public class ClassId_0 {
+ String[] string;
+ public ClassId_0() {
+ string = new String[2];
+ string[0] = "Hello";
+ string[1] = "World!";
+ }
+ public boolean ror_sdl70_strigger() {
+ int a = 5, b = 6;
+ return a == b;
+ }
+ public boolean ror_sdl70_strigger1() {
+ int b = 5;
+ return this.string.length == b;
+ }
+ public boolean ror_sdl70_strigger2() {
+ int[] a = new int[0];
+ return a.length == 0;
+ }
+}
diff --git a/examples/ror_sdl70/testset/test.txt b/examples/ror_sdl70/testset/test.txt
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/examples/ror_sdl70/testset/test.txt
@@ -0,0 +1 @@
+
diff --git a/muJava.iml b/muJava.iml
new file mode 100644
index 0000000..9e87896
--- /dev/null
+++ b/muJava.iml
@@ -0,0 +1,30 @@
+
+NullCompiler
does nothing.
+ *
+ */
+public class NullCompiler implements JavaCompiler {
+ public NullCompiler() {
+ }
+
+ public static void main(String[] args) {
+ }
+
+ public void compile(String[] args) {
+ }
+
+}
diff --git a/src/main/java/jp/ac/tsukuba/openjava/OldJavaCompiler.java b/src/main/java/jp/ac/tsukuba/openjava/OldJavaCompiler.java
new file mode 100644
index 0000000..c9ffe1e
--- /dev/null
+++ b/src/main/java/jp/ac/tsukuba/openjava/OldJavaCompiler.java
@@ -0,0 +1,46 @@
+/*
+ * OldJavaCompiler.java
+ *
+ * Apr 16, 1999 Michiaki Tatsubori
+ */
+package jp.ac.tsukuba.openjava;
+
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+
+import openjava.ojc.JavaCompiler;
+
+/**
+ * The class OldJavaCompiler
is an adapter for Sun's javac.
+ *
+ */
+public class OldJavaCompiler implements JavaCompiler {
+ public static void main(String[] args) {
+ new OldJavaCompiler().compile(args);
+ }
+
+ public void compile(String[] args) {
+ /*sun.tools.javac.Main.main( args );*/
+ Runtime runtime = Runtime.getRuntime();
+ try {
+ Process p = runtime.exec("javac " + strs2str(args));
+ InputStream in = new BufferedInputStream(p.getErrorStream());
+ byte[] buf = new byte[1024];
+ for (int len = in.read(buf); len != -1; len = in.read(buf)) {
+ System.err.write(buf, 0, len);
+ }
+ p.waitFor();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static String strs2str(String[] strs) {
+ StringBuffer buf = new StringBuffer();
+ for (int i = 0; i < strs.length; ++i) {
+ buf.append(strs[i]).append(" ");
+ }
+ return buf.toString();
+ }
+
+}
diff --git a/src/main/java/jp/ac/tsukuba/openjava/SunJavaCompiler.java b/src/main/java/jp/ac/tsukuba/openjava/SunJavaCompiler.java
new file mode 100644
index 0000000..d1f69e0
--- /dev/null
+++ b/src/main/java/jp/ac/tsukuba/openjava/SunJavaCompiler.java
@@ -0,0 +1,71 @@
+/*
+ * SunJavaCompiler.java
+ * Workaround for Runtime.exec() environment handling incompatibility..
+ *
+ * A work based on jp.ac.tsukuba.openjava.SunJavaCompiler
+ *
+ * Apr 16, 1999 Michiaki Tatsubori (mt@is.tsukuba.ac.jp)
+ * Oct 1, 1999 Shiro Kawai (shiro@squareusa.com)
+ * Nov 22, 1999 Michiaki Tatsubori
+ */
+package jp.ac.tsukuba.openjava;
+
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+
+import openjava.ojc.JavaCompiler;
+
+/**
+ * The class SunJavaCompiler
is an adapter for Sun's javac.
+ *
+ * Message-Id: 19990930154627G.shiro@squareusa.com
+ *
+ * I tried OpenJava1.0a1 on my IRIX box w/ SGI's JDK1.2 + * and had a problem to run ojc. Somehow, Runtime.exec() + * didn't pass all the environment variables to the invoked + * process (more specifically, it only passed TZ). + * Consequently the CLASSPATH env was not passed to javac kicked + * by JP.ac.tsukuba.openjava.SunJavaCompiler.complie(), which + * prevented ojc from finishing compilation. + *
+ * So far I couldn't find exact specification about how the + * environment variables should be treated in Java specification + * and API documents. I guess it may depend on platforms. + *
+ * We avoided the problem by explicitly passing CLASSPATH to
+ * the subprocess my modifying SunJavaCompiler class, but wondering
+ * if there'd be a better way to handle it...
+ */
+public class SunJavaCompiler implements JavaCompiler {
+ public static void main(String[] args) {
+ new SunJavaCompiler().compile(args);
+ }
+
+ public void compile(String[] args) {
+ Runtime runtime = Runtime.getRuntime();
+ try {
+ String classpath =
+ "CLASSPATH=" + System.getProperty("java.class.path");
+ String[] envp = new String[1];
+ envp[0] = classpath;
+ Process p = runtime.exec("javac " + strs2str(args), envp);
+ InputStream in = new BufferedInputStream(p.getErrorStream());
+ byte[] buf = new byte[1024];
+ for (int len = in.read(buf); len != -1; len = in.read(buf)) {
+ System.err.write(buf, 0, len);
+ }
+ p.waitFor();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static String strs2str(String[] strs) {
+ StringBuffer buf = new StringBuffer();
+ for (int i = 0; i < strs.length; ++i) {
+ buf.append(strs[i]).append(" ");
+ }
+ return buf.toString();
+ }
+
+}
diff --git a/src/main/java/jp/ac/tsukuba/openjava/SunLibCompiler.java b/src/main/java/jp/ac/tsukuba/openjava/SunLibCompiler.java
new file mode 100644
index 0000000..46bd6e2
--- /dev/null
+++ b/src/main/java/jp/ac/tsukuba/openjava/SunLibCompiler.java
@@ -0,0 +1,57 @@
+/*
+ * SunLibCompiler.java
+ *
+ * Apr 16, 1999 Michiaki Tatsubori
+ */
+package jp.ac.tsukuba.openjava;
+
+import java.io.OutputStream;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+
+import openjava.ojc.JavaCompiler;
+
+/**
+ * The class SunLibCompiler
is an adapter for the compiler
+ * which invokes Sun's library javac.
+ *
+ * The class path must includes lib/tools.jar in the jdk package. + * + * @since jdk1.2 + */ +public class SunLibCompiler implements JavaCompiler { + Object sunJavac; + //sun.tools.javac.Main m; + Method compileMethod; + + public SunLibCompiler() { + //m = new sun.tools.javac.Main(System.err, "javac"); + try { + Class clazz = Class.forName("sun.tools.javac.Main"); + Constructor cons = + clazz.getConstructor( + new Class[] { OutputStream.class, String.class }); + sunJavac = cons.newInstance(new Object[] { System.err, "javac" }); + compileMethod = + clazz.getMethod("compile", new Class[] { String[].class }); + } catch (Exception ex) { + throw new RuntimeException(ex.toString()); + } + + } + + public static void main(String[] args) { + new SunLibCompiler().compile(args); + } + + public void compile(String[] args) { + //sun.tools.javac.Main.main( args ); + //m.compile(args); + try { + compileMethod.invoke(sunJavac, new Object[] { args }); + } catch (Exception ex) { + throw new RuntimeException(ex.toString()); + } + } + +} diff --git a/src/main/java/mujava/AllMutantsGenerator.java b/src/main/java/mujava/AllMutantsGenerator.java index d3aa194..d02ec47 100644 --- a/src/main/java/mujava/AllMutantsGenerator.java +++ b/src/main/java/mujava/AllMutantsGenerator.java @@ -1,553 +1,477 @@ /** * Copyright (C) 2015 the original author or authors. - * + *
* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + *
* http://www.apache.org/licenses/LICENSE-2.0 - * + *
* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ + */ package mujava; -import openjava.mop.*; -import openjava.ptree.*; - -import java.io.*; import mujava.op.*; import mujava.op.basic.*; -import mujava.op.util.*; +import mujava.op.util.CodeChangeLog; +import mujava.op.util.DeclAnalyzer; import mujava.util.Debug; - /** +import openjava.mop.FileEnvironment; +import openjava.ptree.ClassDeclaration; +import openjava.ptree.ClassDeclarationList; +import openjava.ptree.CompilationUnit; +import openjava.ptree.ParseTreeException; + +import java.io.File; + +/** *
Description: Generate all mutants
* @author Yu-Seung Ma * @version 1.0 - * - * + * + * * Taking out aor_flag for not clear about the reason of using it. * Lin Deng, Aug 23 - * - */ - -public class AllMutantsGenerator extends MutantsGenerator -{ - boolean existIHD = false; - - String[] classOp; - String[] traditionalOp; - - public AllMutantsGenerator(File f) - { - super(f); - classOp = MutationSystem.cm_operators; - traditionalOp = MutationSystem.tm_operators; - } - - public AllMutantsGenerator(File f, boolean debug) - { - super(f, debug); - classOp = MutationSystem.cm_operators; - traditionalOp = MutationSystem.tm_operators; - } - - public AllMutantsGenerator(File f, String[] cOP, String[] tOP) - { - super(f); - classOp = cOP; - traditionalOp = tOP; - } - - void genMutants() - { - if (comp_unit == null) - { - System.err.println(original_file + " is skipped."); - } - ClassDeclarationList cdecls = comp_unit.getClassDeclarations(); - if (cdecls == null || cdecls.size() == 0) - return; - - if (traditionalOp != null && traditionalOp.length > 0) - { - Debug.println("* Generating traditional mutants"); - MutationSystem.clearPreviousTraditionalMutants(); - MutationSystem.MUTANT_PATH = MutationSystem.TRADITIONAL_MUTANT_PATH; - CodeChangeLog.openLogFile(); - genTraditionalMutants(cdecls); - CodeChangeLog.closeLogFile(); - } - - if (classOp != null && classOp.length > 0) - { - Debug.println("* Generating class mutants"); - MutationSystem.clearPreviousClassMutants(); - MutationSystem.MUTANT_PATH = MutationSystem.CLASS_MUTANT_PATH; - CodeChangeLog.openLogFile(); - genClassMutants(cdecls); - CodeChangeLog.closeLogFile(); - } - } - - - void genClassMutants(ClassDeclarationList cdecls) - { - genClassMutants1(cdecls); - genClassMutants2(cdecls); - } - - void genClassMutants2(ClassDeclarationList cdecls) - { - for (int j=0; j* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + *
* http://www.apache.org/licenses/LICENSE-2.0 - * + *
* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -16,14 +16,18 @@ package mujava; -import openjava.mop.*; -import openjava.ptree.*; -import java.io.*; -import java.util.List; - import mujava.op.*; -import mujava.op.util.*; +import mujava.op.util.CodeChangeLog; +import mujava.op.util.DeclAnalyzer; import mujava.util.Debug; +import openjava.mop.FileEnvironment; +import openjava.ptree.ClassDeclaration; +import openjava.ptree.ClassDeclarationList; +import openjava.ptree.CompilationUnit; +import openjava.ptree.ParseTreeException; + +import java.io.File; +import java.util.List; /** *
@@ -31,7 +35,7 @@ * gui.GenMutantsMain. The original version is loaded, mutated, and compiled. * Outputs (mutated source and class files) are in the class-mutants folder. *
- * + * ** Currently available class mutation operators: (1) AMC: Access modifier * change, (2) IHD: Hiding variable deletion, (3) IHI: Hiding variable @@ -54,319 +58,319 @@ * and content assignment replacement, (28) EAM: Java-specific accessor method * change, (29) EMM: Java-specific modifier method change *
- * + * * @author Yu-Seung Ma * @version 1.0 */ public class ClassMutantsGenerator extends MutantsGenerator { - boolean existIHD = false; - - String[] classOp; - // Leo: Adicionei um List que vai acumular os operadores selecionados. - private List* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + *
* http://www.apache.org/licenses/LICENSE-2.0 - * + *
* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -16,12 +16,17 @@ package mujava; -import openjava.mop.*; -import openjava.ptree.*; -import java.io.*; import mujava.op.*; -import mujava.op.util.*; +import mujava.op.util.CodeChangeLog; +import mujava.op.util.DeclAnalyzer; import mujava.util.Debug; +import openjava.mop.FileEnvironment; +import openjava.ptree.ClassDeclaration; +import openjava.ptree.ClassDeclarationList; +import openjava.ptree.CompilationUnit; +import openjava.ptree.ParseTreeException; + +import java.io.File; /** *
Generate class mutants according to selected @@ -63,367 +68,310 @@ *
* @author Yu-Seung Ma * @version 1.0 -*/ - -public class ClassMutantsGeneratorCLI extends MutantsGenerator -{ - boolean existIHD = false; - - String[] classOp; - - public ClassMutantsGeneratorCLI (File f) - { - super(f); - classOp = MutationSystem.cm_operators; - } - - public ClassMutantsGeneratorCLI (File f, boolean debug) - { - super(f, debug); - classOp = MutationSystem.cm_operators; - } - - public ClassMutantsGeneratorCLI (File f, String[] cOP) - { - super(f); - classOp = cOP; - } - - /** - * Verify if the target Java source and class files exist, - * generate class mutants - */ - void genMutants() - { - if (comp_unit == null) - { - System.err.println(original_file + " is skipped."); - } - ClassDeclarationList cdecls = comp_unit.getClassDeclarations(); - - if (cdecls == null || cdecls.size() == 0) - return; + */ + +public class ClassMutantsGeneratorCLI extends MutantsGenerator { + boolean existIHD = false; + + String[] classOp; + + public ClassMutantsGeneratorCLI(File f) { + super(f); + classOp = MutationSystem.cm_operators; + } + + public ClassMutantsGeneratorCLI(File f, boolean debug) { + super(f, debug); + classOp = MutationSystem.cm_operators; + } + + public ClassMutantsGeneratorCLI(File f, String[] cOP) { + super(f); + classOp = cOP; + } + + /** + * Verify if the target Java source and class files exist, + * generate class mutants + */ + void genMutants() { + if (comp_unit == null) { + System.err.println(original_file + " is skipped."); + } + ClassDeclarationList cdecls = comp_unit.getClassDeclarations(); + + if (cdecls == null || cdecls.size() == 0) + return; // if (classOp != null && classOp.length > 0) - { - Debug.println("* Generating class mutants"); - MutationSystem.clearPreviousClassMutants(); - MutationSystem.MUTANT_PATH = MutationSystem.CLASS_MUTANT_PATH; - CodeChangeLog.openLogFile(); - genClassMutants(cdecls); - CodeChangeLog.closeLogFile(); - } - } - - /** - * Apply selected class mutation operators - * @param cdecls - */ - void genClassMutants (ClassDeclarationList cdecls) - { - genClassMutants1(cdecls); - genClassMutants2(cdecls); - } - - /** - * Apply selected class mutation operators: IHD, IHI, IOD, OMR, OMD, JDC - * @param cdecls - */ - void genClassMutants2 (ClassDeclarationList cdecls) - { - for (int j=0; j* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + *
* http://www.apache.org/licenses/LICENSE-2.0 - * + *
* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ - + */ + package mujava; -import openjava.ptree.*; -import java.io.*; import mujava.op.exception.*; -import mujava.op.util.*; +import mujava.op.util.CodeChangeLog; import mujava.util.Debug; +import openjava.ptree.ClassDeclaration; +import openjava.ptree.ClassDeclarationList; +import openjava.ptree.ParseTreeException; + +import java.io.File; /** *
Generate exception-related mutants *
* @author Yu-Seung Ma * @version 1.0 - */ - -public class ExceptionMutantsGenerator extends MutantsGenerator -{ - String[] exceptionOp; - - public ExceptionMutantsGenerator(File f) - { - super(f); - exceptionOp = MutationSystem.em_operators; - } - - public ExceptionMutantsGenerator(File f, boolean debug) - { - super(f, debug); - exceptionOp = MutationSystem.em_operators; - } - - public ExceptionMutantsGenerator(File f, String[] eOP) - { - super(f); - exceptionOp = eOP; - } - - void genMutants() - { - if (comp_unit == null) - { - System.err.println(original_file + " is skipped."); - } - - ClassDeclarationList cdecls = comp_unit.getClassDeclarations(); - if (cdecls == null || cdecls.size() == 0) - return; - - if (exceptionOp != null && exceptionOp.length > 0) - { - MutationSystem.clearPreviousMutants(); - MutationSystem.MUTANT_PATH = MutationSystem.EXCEPTION_MUTANT_PATH; - CodeChangeLog.openLogFile(); - genExceptionMutants(cdecls); - CodeChangeLog.closeLogFile(); - } - } - - /** - * Compile exception-related mutants into bytecode - */ - public void compileMutants() - { - if (exceptionOp != null && exceptionOp.length > 0) - { - Debug.println("* Compiling exception-related mutants into bytecode"); - MutationSystem.MUTANT_PATH = MutationSystem.EXCEPTION_MUTANT_PATH; - super.compileMutants(); - } - } - - void genExceptionMutants(ClassDeclarationList cdecls) - { - for (int j=0; j* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + *
* http://www.apache.org/licenses/LICENSE-2.0 - * + *
* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -16,20 +16,29 @@ package mujava; -import openjava.mop.*; +import com.sun.tools.javac.Main; +import mujava.cli.Util; +import mujava.op.util.DeclAnalyzer; +import mujava.op.util.MutantCodeWriter; +import mujava.util.Debug; +import mujava.util.ExtensionFilter; +import mujava.util.MutantDirFilter; +import openjava.mop.Environment; +import openjava.mop.FileEnvironment; +import openjava.mop.OJClass; +import openjava.mop.OJSystem; import openjava.ptree.*; -import openjava.tools.parser.*; -import openjava.ptree.util.*; - -import java.io.*; -import java.util.*; +import openjava.ptree.util.MemberAccessCorrector; +import openjava.ptree.util.TypeNameQualifier; +import openjava.tools.parser.ParseException; +import openjava.tools.parser.Parser; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; import java.lang.reflect.Constructor; - -import mujava.cli.Util; -import mujava.op.util.*; -import mujava.util.*; - -import com.sun.tools.javac.Main; +import java.util.Vector; /** *
@@ -37,447 +46,452 @@ * gui.GenMutantsMain. The original version is loaded, mutated, and compiled. * Outputs (mutated source and class files) are in the -mutants folder. *
- * + * * @author Yu-Seung Ma * @version 1.0 */ public abstract class MutantsGenerator { - // private boolean debug = false; - // static int counter; - /** Java source file where mutation operators are applied to */ - File original_file; // mutation�� ������ file - - /** mutation operators to apply */ - String[] operators = null; - - FileEnvironment file_env = null; - CompilationUnit comp_unit = null; - - public MutantsGenerator(File f) { - this.original_file = f; - initPrimitiveTypes(); + // private boolean debug = false; + // static int counter; + /** Java source file where mutation operators are applied to */ + File original_file; // mutation file + + /** mutation operators to apply */ + String[] operators = null; + + FileEnvironment file_env = null; + CompilationUnit comp_unit = null; + + public MutantsGenerator(File f) { + this.original_file = f; + initPrimitiveTypes(); + } + + public MutantsGenerator(File f, boolean debug_flag) { + this(f); + // debug = debug_flag; + } + + public MutantsGenerator(File f, String[] operator_list) { + this(f); + operators = operator_list; + } + + public MutantsGenerator(File f, String[] operator_list, boolean debug_flag) { + this(f, operator_list); + // debug = debug_flag; + } + + /** + * Generate and initialize parse tree from the original Java source file. + * Generate mutants. Arrange and compile the original Java source file. + * + * @return + * @throws OpenJavaException + */ + public boolean makeMutants() throws OpenJavaException { + Debug.print("-------------------------------------------------------\n"); + Debug.print("* Generating parse tree. \n"); + + generateParseTree(); + Debug.print("..done. \n"); + // System.out.println("0"); + Debug.print("* Initializing parse tree. \n"); + initParseTree(); + Debug.print("..done. \n"); + // System.out.println("1"); + Debug.print("* Generating Mutants \n"); + genMutants(); + Debug.print("..done.\n"); + // System.out.println("2"); + Debug.print("* Arranging original soure code. \n"); + arrangeOriginal(); + // System.out.println("3"); + compileOriginal(); + Debug.print("..done. \n"); + Debug.flush(); + return true; + } + + abstract void genMutants(); + + /* + * void generateMutant(OJClass mutant_op){ try { + * mutant_op.translateDefinition(comp_unit); }catch (Exception ex){ + * System.err.println("fail to translate " +mutant_op.getName()+" : " + ex); + * ex.printStackTrace(); } } + */ + + /** + * Generate mutants from Java bytecode + */ + void generateMutant(DeclAnalyzer mutant_op) { + try { + mutant_op.translateDefinition(comp_unit); + } catch (Exception ex) { + System.err.println("fail to translate " + mutant_op.getName() + " : " + ex); + ex.printStackTrace(); } - - public MutantsGenerator(File f, boolean debug_flag) { - this(f); - // debug = debug_flag; + } + + /** + * Arrange the original source file into an appropriate directory + */ + private void arrangeOriginal() { + if (comp_unit == null) { + System.err.println(original_file + " is skipped."); } - public MutantsGenerator(File f, String[] operator_list) { - this(f); - operators = operator_list; + ClassDeclarationList cdecls = comp_unit.getClassDeclarations(); + for (int j = 0; j < cdecls.size(); ++j) { + ClassDeclaration cdecl = cdecls.get(j); + File outfile = null; + try { + outfile = new File(MutationSystem.ORIGINAL_PATH, MutationSystem.CLASS_NAME + ".java"); + FileWriter fout = new FileWriter(outfile); + PrintWriter out = new PrintWriter(fout); + MutantCodeWriter writer = new MutantCodeWriter(out); + writer.setClassName(cdecl.getName()); + comp_unit.accept(writer); + out.flush(); + out.close(); + } catch (IOException e) { + System.err.println("fails to create " + outfile); + } catch (ParseTreeException e) { + System.err.println("errors during printing " + outfile); + e.printStackTrace(); + } } - - public MutantsGenerator(File f, String[] operator_list, boolean debug_flag) { - this(f, operator_list); - // debug = debug_flag; + } + + /** + * Initialize parse tree + * + * @throws OpenJavaException + */ +// private void initParseTree() throws OpenJavaException { + public void initParseTree() throws OpenJavaException { + try { + // System.out.println("OJSystem.env0 :" + OJSystem.env ); + comp_unit.accept(new TypeNameQualifier(file_env)); + // System.out.println("OJSystem.env1 :" + OJSystem.env ); + MemberAccessCorrector corrector = new MemberAccessCorrector(file_env); + // System.out.println("OJSystem.env2 :" + OJSystem.env ); + comp_unit.accept(corrector); + // System.out.println("OJSystem.env3 :" + OJSystem.env ); + } catch (ParseTreeException e) { + throw new OpenJavaException("can't initialize parse tree"); } - - /** - * Generate and initialize parse tree from the original Java source file. - * Generate mutants. Arrange and compile the original Java source file. - * - * @return - * @throws OpenJavaException - */ - public boolean makeMutants() throws OpenJavaException { - Debug.print("-------------------------------------------------------\n"); - Debug.print("* Generating parse tree. \n"); - - generateParseTree(); - Debug.print("..done. \n"); - // System.out.println("0"); - Debug.print("* Initializing parse tree. \n"); - initParseTree(); - Debug.print("..done. \n"); - // System.out.println("1"); - Debug.print("* Generating Mutants \n"); - genMutants(); - Debug.print("..done.\n"); - // System.out.println("2"); - Debug.print("* Arranging original soure code. \n"); - arrangeOriginal(); - // System.out.println("3"); - compileOriginal(); - Debug.print("..done. \n"); - Debug.flush(); - return true; - } - - abstract void genMutants(); - - /* - * void generateMutant(OJClass mutant_op){ try { - * mutant_op.translateDefinition(comp_unit); }catch (Exception ex){ - * System.err.println("fail to translate " +mutant_op.getName()+" : " + ex); - * ex.printStackTrace(); } } - */ - - /** - * Generate mutants from Java bytecode - */ - void generateMutant(DeclAnalyzer mutant_op) { - try { - mutant_op.translateDefinition(comp_unit); - } catch (Exception ex) { - System.err.println("fail to translate " + mutant_op.getName() + " : " + ex); - ex.printStackTrace(); - } + } + + /** + * Initialize parse tree + * + * @param parent_comp_unit + * @param parent_file_env + */ + void initParseTree(CompilationUnit[] parent_comp_unit, FileEnvironment[] parent_file_env) { + try { + parent_comp_unit[0].accept(new TypeNameQualifier(parent_file_env[0])); + MemberAccessCorrector corrector = new MemberAccessCorrector(parent_file_env[0]); + parent_comp_unit[0].accept(corrector); + } catch (ParseTreeException e) { + System.err.println("Encountered errors during analysis."); + e.printStackTrace(); } - - /** - * Arrange the original source file into an appropriate directory - */ - private void arrangeOriginal() { - if (comp_unit == null) { - System.err.println(original_file + " is skipped."); - } - - ClassDeclarationList cdecls = comp_unit.getClassDeclarations(); - for (int j = 0; j < cdecls.size(); ++j) { - ClassDeclaration cdecl = cdecls.get(j); - File outfile = null; - try { - outfile = new File(MutationSystem.ORIGINAL_PATH, MutationSystem.CLASS_NAME + ".java"); - FileWriter fout = new FileWriter(outfile); - PrintWriter out = new PrintWriter(fout); - MutantCodeWriter writer = new MutantCodeWriter(out); - writer.setClassName(cdecl.getName()); - comp_unit.accept(writer); - out.flush(); - out.close(); - } catch (IOException e) { - System.err.println("fails to create " + outfile); - } catch (ParseTreeException e) { - System.err.println("errors during printing " + outfile); - e.printStackTrace(); - } - } + } + + /** + * Generate parse tree + * + * @throws OpenJavaException + */ +// private void generateParseTree() throws OpenJavaException { + public void generateParseTree() throws OpenJavaException { + try { + comp_unit = parse(original_file); + + String pubcls_name = getMainClassName(file_env, comp_unit); + + if (pubcls_name == null) { + int len = original_file.getName().length(); + // This seems to intend to remove file extension + // Fixed bug where it removed more than it needed + String original_file_name = original_file.getName(); + pubcls_name = original_file.getName().substring(0, original_file_name.indexOf('.')); + } + + file_env = new FileEnvironment(OJSystem.env, comp_unit.getPackage(), pubcls_name, original_file); + ClassDeclarationList typedecls = comp_unit.getClassDeclarations(); + + for (int j = 0; j < typedecls.size(); ++j) { + ClassDeclaration class_decl = typedecls.get(j); + OJClass c = makeOJClass(file_env, class_decl); + OJSystem.env.record(c.getName(), c); + recordInnerClasses(c); + } + + } catch (OpenJavaException e1) { + throw e1; + } catch (Exception e) { + System.err.println("errors during parsing. " + e); + System.out.println(e); + e.printStackTrace(); } - - /** - * Initialize parse tree - * - * @throws OpenJavaException - */ - private void initParseTree() throws OpenJavaException { - try { - // System.out.println("OJSystem.env0 :" + OJSystem.env ); - comp_unit.accept(new TypeNameQualifier(file_env)); - // System.out.println("OJSystem.env1 :" + OJSystem.env ); - MemberAccessCorrector corrector = new MemberAccessCorrector(file_env); - // System.out.println("OJSystem.env2 :" + OJSystem.env ); - comp_unit.accept(corrector); - // System.out.println("OJSystem.env3 :" + OJSystem.env ); - } catch (ParseTreeException e) { - throw new OpenJavaException("can't initialize parse tree"); + } + + /** + * Evaluate whether a parse tree is successfully generated + * + * @param f + * @param comp_unit + * @param file_env + * @return + */ + boolean generateParseTree(File f, CompilationUnit[] comp_unit, FileEnvironment[] file_env) { + try { + comp_unit[0] = parse(f); + String pubcls_name = getMainClassName(file_env[0], comp_unit[0]); + if (pubcls_name == null) { + int len = f.getName().length(); + pubcls_name = f.getName().substring(0, len - 6); + } + + file_env[0] = new FileEnvironment(OJSystem.env, comp_unit[0], pubcls_name); + + ClassDeclarationList typedecls = comp_unit[0].getClassDeclarations(); + for (int j = 0; j < typedecls.size(); ++j) { + ClassDeclaration class_decl = typedecls.get(j); + + if (class_decl.getName().equals(MutationSystem.CLASS_NAME)) { + if (class_decl.isInterface() || class_decl.getModifiers().contains(ModifierList.ABSTRACT)) { + return false; + } } - } - /** - * Initialize parse tree - * - * @param parent_comp_unit - * @param parent_file_env - */ - void initParseTree(CompilationUnit[] parent_comp_unit, FileEnvironment[] parent_file_env) { - try { - parent_comp_unit[0].accept(new TypeNameQualifier(parent_file_env[0])); - MemberAccessCorrector corrector = new MemberAccessCorrector(parent_file_env[0]); - parent_comp_unit[0].accept(corrector); - } catch (ParseTreeException e) { - System.err.println("Encountered errors during analysis."); - e.printStackTrace(); - } + OJClass c = makeOJClass(file_env[0], class_decl); + OJSystem.env.record(c.getName(), c); + recordInnerClasses(c); + } + } catch (Exception e) { + System.err.println("errors during parsing. " + e); + e.printStackTrace(); + return false; } - - /** - * Generate parse tree - * - * @throws OpenJavaException - */ - private void generateParseTree() throws OpenJavaException { - try { - comp_unit = parse(original_file); - - String pubcls_name = getMainClassName(file_env, comp_unit); - - if (pubcls_name == null) { - int len = original_file.getName().length(); - pubcls_name = original_file.getName().substring(0, len - 6); - } - - file_env = new FileEnvironment(OJSystem.env, comp_unit, pubcls_name); - ClassDeclarationList typedecls = comp_unit.getClassDeclarations(); - - for (int j = 0; j < typedecls.size(); ++j) { - ClassDeclaration class_decl = typedecls.get(j); - OJClass c = makeOJClass(file_env, class_decl); - OJSystem.env.record(c.getName(), c); - recordInnerClasses(c); - } - - } catch (OpenJavaException e1) { - throw e1; - } catch (Exception e) { - System.err.println("errors during parsing. " + e); - System.out.println(e); - e.printStackTrace(); - } + return true; + } + + /** + * Record inner-classes + * + * @param c + */ + private static void recordInnerClasses(OJClass c) { + OJClass[] inners = c.getDeclaredClasses(); + for (int i = 0; i < inners.length; ++i) { + OJSystem.env.record(inners[i].getName(), inners[i]); + recordInnerClasses(inners[i]); } - - /** - * Evaluate whether a parse tree is successfully generated - * - * @param f - * @param comp_unit - * @param file_env - * @return - */ - boolean generateParseTree(File f, CompilationUnit[] comp_unit, FileEnvironment[] file_env) { - try { - comp_unit[0] = parse(f); - String pubcls_name = getMainClassName(file_env[0], comp_unit[0]); - if (pubcls_name == null) { - int len = f.getName().length(); - pubcls_name = f.getName().substring(0, len - 6); - } - - file_env[0] = new FileEnvironment(OJSystem.env, comp_unit[0], pubcls_name); - - ClassDeclarationList typedecls = comp_unit[0].getClassDeclarations(); - for (int j = 0; j < typedecls.size(); ++j) { - ClassDeclaration class_decl = typedecls.get(j); - - if (class_decl.getName().equals(MutationSystem.CLASS_NAME)) { - if (class_decl.isInterface() || class_decl.getModifiers().contains(ModifierList.ABSTRACT)) { - return false; - } - } - - OJClass c = makeOJClass(file_env[0], class_decl); - OJSystem.env.record(c.getName(), c); - recordInnerClasses(c); - } - } catch (Exception e) { - System.err.println("errors during parsing. " + e); - e.printStackTrace(); - return false; - } - return true; + } + + /** -> to move to OJClass.forParseTree() **/ + private OJClass makeOJClass(Environment env, ClassDeclaration cdecl) { + OJClass result; + String qname = env.toQualifiedName(cdecl.getName()); + Class meta = OJSystem.getMetabind(qname); + try { + Constructor constr = meta + .getConstructor(new Class[]{Environment.class, OJClass.class, ClassDeclaration.class}); + Object[] args = new Object[]{env, null, cdecl}; + result = (OJClass) constr.newInstance(args); + } catch (Exception ex) { + System.err.println("errors during gererating a metaobject for " + qname); + ex.printStackTrace(); + result = new OJClass(env, null, cdecl); } - - /** - * Record inner-classes - * - * @param c - */ - private static void recordInnerClasses(OJClass c) { - OJClass[] inners = c.getDeclaredClasses(); - for (int i = 0; i < inners.length; ++i) { - OJSystem.env.record(inners[i].getName(), inners[i]); - recordInnerClasses(inners[i]); - } + return result; + } + + /** + * Prepare a compilation unit + * + * @param file + * @return + * @throws OpenJavaException + */ + private static CompilationUnit parse(File file) throws OpenJavaException { + Parser parser; + try { + parser = new Parser(new java.io.FileInputStream(file)); + } catch (java.io.FileNotFoundException e) { + System.err.println("File " + file + " not found."); + return null; + } catch (UnsupportedClassVersionError e) { + System.err.println( + "[ERROR] Unable to use the OpenJava Parser because the class version is unsupported. It may be that the openjava.jar file was compiled with a version of Java later than the one you're using."); + System.err.println(); + e.printStackTrace(); + return null; } - /** -> to move to OJClass.forParseTree() **/ - private OJClass makeOJClass(Environment env, ClassDeclaration cdecl) { - OJClass result; - String qname = env.toQualifiedName(cdecl.getName()); - Class meta = OJSystem.getMetabind(qname); - try { - Constructor constr = meta - .getConstructor(new Class[] { Environment.class, OJClass.class, ClassDeclaration.class }); - Object[] args = new Object[] { env, null, cdecl }; - result = (OJClass) constr.newInstance(args); - } catch (Exception ex) { - System.err.println("errors during gererating a metaobject for " + qname); - ex.printStackTrace(); - result = new OJClass(env, null, cdecl); - } - return result; + CompilationUnit result; + try { + System.out.println("File " + file); + result = parser.CompilationUnit(OJSystem.env); + } catch (ParseException e) { + throw new OpenJavaException(" can't generate parse tree. Reason:" + e.getMessage()); + } catch (Exception e) { + e.printStackTrace(); + result = null; } + return result; + } + + /** + * + * @param env + * @param comp_unit + * @return + * @throws ParseTreeException + */ + private static String getMainClassName(FileEnvironment env, CompilationUnit comp_unit) throws ParseTreeException { + + ClassDeclaration cd = comp_unit.getPublicClass(); + if (cd != null) { + return cd.getName(); + } else + return null; + } + + /** + * Compile mutants + */ + public void compileMutants() { + // Lin add a counter 12/12/13 + int counter = 0; + String fileName = new String(); + + File f = new File(MutationSystem.MUTANT_PATH); + + String[] s = f.list(new MutantDirFilter()); + + for (int i = 0; i < s.length; i++) { + File target_dir = new File(MutationSystem.MUTANT_PATH + "/" + s[i]); + String[] target_file = target_dir.list(new ExtensionFilter("java")); + fileName = target_file[0]; + + Vector v = new Vector(); + for (int j = 0; j < target_file.length; j++) { + v.add(MutationSystem.MUTANT_PATH + "/" + s[i] + "/" + target_file[j]); + } + + String[] pars = new String[v.size() + 2]; + + pars[0] = "-classpath"; + pars[1] = MutationSystem.CLASS_PATH; + for (int j = 0; j < v.size(); j++) { + pars[2 + j] = v.get(j).toString(); + } + try { + // result = 0 : SUCCESS, result = 1 : FALSE + // int result = Main.compile(pars,new PrintWriter(new + // FileOutputStream("temp"))); + + /* + * 12/19/13 Lin modified: if not in debug mode, for not showing + * the compile result when some mutants can't pass compiler if + * in debug mode, display + */ + + int result; + if (Util.debug) + result = Main.compile(pars); + else { + File tempCompileResultFile = new File(MutationSystem.SYSTEM_HOME + "/compile_output"); + PrintWriter out = new PrintWriter(tempCompileResultFile); + + result = Main.compile(pars, out); + tempCompileResultFile.delete(); - /** - * Prepare a compilation unit - * - * @param file - * @return - * @throws OpenJavaException - */ - private static CompilationUnit parse(File file) throws OpenJavaException { - Parser parser; - try { - parser = new Parser(new java.io.FileInputStream(file)); - } catch (java.io.FileNotFoundException e) { - System.err.println("File " + file + " not found."); - return null; - } catch (UnsupportedClassVersionError e) { - System.err.println( - "[ERROR] Unable to use the OpenJava Parser because the class version is unsupported. It may be that the openjava.jar file was compiled with a version of Java later than the one you're using."); - System.err.println(); - e.printStackTrace(); - return null; } - CompilationUnit result; - try { - System.out.println("File " + file); - result = parser.CompilationUnit(OJSystem.env); - } catch (ParseException e) { - throw new OpenJavaException(" can't generate parse tree. Reason:" + e.getMessage()); - } catch (Exception e) { - e.printStackTrace(); - result = null; - } - return result; - } - - /** - * - * @param env - * @param comp_unit - * @return - * @throws ParseTreeException - */ - private static String getMainClassName(FileEnvironment env, CompilationUnit comp_unit) throws ParseTreeException { - - ClassDeclaration cd = comp_unit.getPublicClass(); - if (cd != null) { - return cd.getName(); - } else - return null; - } - - /** - * Compile mutants - */ - public void compileMutants() { - // Lin add a counter 12/12/13 - int counter = 0; - String fileName = new String(); - - File f = new File(MutationSystem.MUTANT_PATH); - - String[] s = f.list(new MutantDirFilter()); - - for (int i = 0; i < s.length; i++) { - File target_dir = new File(MutationSystem.MUTANT_PATH + "/" + s[i]); - String[] target_file = target_dir.list(new ExtensionFilter("java")); - fileName = target_file[0]; - - Vector v = new Vector(); - for (int j = 0; j < target_file.length; j++) { - v.add(MutationSystem.MUTANT_PATH + "/" + s[i] + "/" + target_file[j]); - } - - String[] pars = new String[v.size() + 2]; - - pars[0] = "-classpath"; - pars[1] = MutationSystem.CLASS_PATH; - for (int j = 0; j < v.size(); j++) { - pars[2 + j] = v.get(j).toString(); - } - try { - // result = 0 : SUCCESS, result = 1 : FALSE - // int result = Main.compile(pars,new PrintWriter(new - // FileOutputStream("temp"))); - - /* - * 12/19/13 Lin modified: if not in debug mode, for not showing - * the compile result when some mutants can't pass compiler if - * in debug mode, display - */ - - int result; - if (Util.debug) - result = Main.compile(pars); - else { - File tempCompileResultFile = new File(MutationSystem.SYSTEM_HOME + "/compile_output"); - PrintWriter out = new PrintWriter(tempCompileResultFile); - - result = Main.compile(pars, out); - tempCompileResultFile.delete(); - - } - - if (result == 0) { - Debug.print("+" + s[i] + " "); - counter++; - } else { - Debug.print("-" + s[i] + " "); - // delete directory - File dir_name = new File(MutationSystem.MUTANT_PATH + "/" + s[i]); - File[] mutants = dir_name.listFiles(); - boolean tr = false; - - for (int j = 0; j < mutants.length; j++) { - // [tricky solution] It can produce loop -_-;; - while (!tr) { - tr = mutants[j].delete(); - } - tr = false; - } - - while (!tr) { - tr = dir_name.delete(); - } - } - } catch (Exception e) { - System.err.println(e); + if (result == 0) { + Debug.print("+" + s[i] + " "); + counter++; + } else { + Debug.print("-" + s[i] + " "); + // delete directory + File dir_name = new File(MutationSystem.MUTANT_PATH + "/" + s[i]); + File[] mutants = dir_name.listFiles(); + boolean tr = false; + + for (int j = 0; j < mutants.length; j++) { + // [tricky solution] It can produce loop -_-;; + while (!tr) { + tr = mutants[j].delete(); } - } - Debug.println(); - - // Lin add printer total mutants - Util.Total = Util.Total + counter; - // System.out - // .println("------------------------------------------------------------------"); - // System.out.println("Total mutants gnerated for " + fileName +": " + - // Integer.toString(counter)); - } + tr = false; + } - /** - * Compile original java source file - */ - private void compileOriginal() { - String[] pars = { "-classpath", MutationSystem.CLASS_PATH, - MutationSystem.ORIGINAL_PATH + "/" + MutationSystem.CLASS_NAME + ".java" }; - try { - // result = 0 : SUCCESS, result = 1 : FALSE - // int result = Main.compile(pars,new PrintWriter(new - // FileOutputStream("temp"))); - Main.compile(pars); - } catch (NoClassDefFoundError e) { - System.err.println( - "[ERROR] Could not compile the generated mutants. Make sure that tools.jar is in your classpath."); - System.err.println( - "You may also need to delete the mutants that were generated (but not compiled) in the result/ directory of the muJava installation."); - System.err.println(); - e.printStackTrace(); - System.exit(1); - } catch (Exception e) { - System.err.println(e); + while (!tr) { + tr = dir_name.delete(); + } } + } catch (Exception e) { + System.err.println(e); + } } - - private static void initPrimitiveTypes() { - OJSystem.initConstants(); + Debug.println(); + + // Lin add printer total mutants + Util.Total = Util.Total + counter; + // System.out + // .println("------------------------------------------------------------------"); + // System.out.println("Total mutants gnerated for " + fileName +": " + + // Integer.toString(counter)); + } + + /** + * Compile original java source file + */ + private void compileOriginal() { + String[] pars = {"-classpath", MutationSystem.CLASS_PATH, + MutationSystem.ORIGINAL_PATH + "/" + MutationSystem.CLASS_NAME + ".java"}; + try { + // result = 0 : SUCCESS, result = 1 : FALSE + // int result = Main.compile(pars,new PrintWriter(new + // FileOutputStream("temp"))); + Main.compile(pars); + } catch (NoClassDefFoundError e) { + System.err.println( + "[ERROR] Could not compile the generated mutants. Make sure that tools.jar is in your classpath."); + System.err.println( + "You may also need to delete the mutants that were generated (but not compiled) in the result/ directory of the muJava installation."); + System.err.println(); + e.printStackTrace(); + System.exit(1); + } catch (Exception e) { + System.err.println(e); } - - /** - * Determine whether a string contain a certain operator - * - * @param list - * @param item - * @return true if a string contain the operator, false otherwise - */ - protected boolean hasOperator(String[] list, String item) { - for (int i = 0; i < list.length; i++) { - if (list[i].equals(item)) - return true; - } - return false; + } + + private static void initPrimitiveTypes() { + OJSystem.initConstants(); + } + + /** + * Determine whether a string contain a certain operator + * + * @param list + * @param item + * @return true if a string contain the operator, false otherwise + */ + protected boolean hasOperator(String[] list, String item) { + for (int i = 0; i < list.length; i++) { + if (list[i].equals(item)) + return true; } + return false; + } } \ No newline at end of file diff --git a/src/main/java/mujava/MutationSystem.java b/src/main/java/mujava/MutationSystem.java index 33631d5..9d66f1f 100644 --- a/src/main/java/mujava/MutationSystem.java +++ b/src/main/java/mujava/MutationSystem.java @@ -1,28 +1,31 @@ /** * Copyright (C) 2015 the original author or authors. - * + ** Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + *
* http://www.apache.org/licenses/LICENSE-2.0 - * + *
* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ - + */ + package mujava; -import openjava.mop.OJSystem; +import mujava.util.DirFileFilter; +import mujava.util.ExtensionFilter; +import mujava.util.InheritanceINFO; import openjava.mop.OJClass; +import openjava.mop.OJSystem; -import java.io.*; - -import mujava.util.*; - +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.net.URL; @@ -41,617 +44,552 @@ * list names of class mutation operators, traditional mutation operators, * and exception-related mutation operators; and * clean up previously generated mutants
- * + * *Requires: mujava.config must be stored in MuJava system home directory
* Limitation: MuJava currently does not support interface, abstract, gui,
* and applet.
- *
+ *
* @author Yu-Seung Ma
- * @update by Nan Li May 2012
+ * @update by Nan Li May 2012
+ * @update by Pedro Pinheiro 2019
* @new function addURL: classes are added to the CLASSPATH dynamically so that users do not need to set up the CLASSPATH manually any more
+ * @new introduced setJMutationStructureFromArg to allow configuration without mujava.config file
* @version 1.0
- */
-
-public class MutationSystem extends OJSystem
-{
- public static final int INTERFACE = 0;
- public static final int ABSTRACT = 1;
- public static final int GUI = 2;
- public static final int MAIN = 3;
- public static final int MAIN_ONLY = 4;
- public static final int NORMAL = 5;
- public static final int APPLET = 6;
-
- public static final int CM = 0; // Class Mutation Operator
- public static final int TM = 1; // Traditional Mutation Operator
- public static final int EM = 2; // Exceptional Mutation Operator
-
-
- /** home path where inputs and output of mujava system are located*/
- //public static String SYSTEM_HOME = "C:/jmutation";
- //public static String SYSTEM_HOME = "/Users/dmark/mujava";
+ */
+
+public class MutationSystem extends OJSystem {
+ public static final int INTERFACE = 0;
+ public static final int ABSTRACT = 1;
+ public static final int GUI = 2;
+ public static final int MAIN = 3;
+ public static final int MAIN_ONLY = 4;
+ public static final int NORMAL = 5;
+ public static final int APPLET = 6;
+
+ public static final int CM = 0; // Class Mutation Operator
+ public static final int TM = 1; // Traditional Mutation Operator
+ public static final int EM = 2; // Exceptional Mutation Operator
+
+
+ /** home path where inputs and output of mujava system are located*/
+ //public static String SYSTEM_HOME = "C:/jmutation";
+ //public static String SYSTEM_HOME = "/Users/dmark/mujava";
// public static String SYSTEM_HOME = "";
- public static String SYSTEM_HOME = System.getProperty("user.dir");
+ public static String SYSTEM_HOME = System.getProperty("user.dir");
+
+ /** path of Java source files which mutation is applied to */
+ public static String SRC_PATH = SYSTEM_HOME + "/src";
- /** path of Java source files which mutation is applied to */
- public static String SRC_PATH = SYSTEM_HOME + "/src";
+ /** path of classes of Java source files at SRC_PATH directory */
+ public static String CLASS_PATH = SYSTEM_HOME + "/classes";
- /** path of classes of Java source files at SRC_PATH directory */
- public static String CLASS_PATH = SYSTEM_HOME + "/classes";
+ /** home path which mutants are put into */
+ public static String MUTANT_HOME = SYSTEM_HOME + "/result";
- /** home path which mutants are put into */
- public static String MUTANT_HOME = SYSTEM_HOME + "/result";
+ /** path which class mutants are put into */
+ public static String CLASS_MUTANT_PATH = "";
- /** path which class mutants are put into */
- public static String CLASS_MUTANT_PATH = "";
+ /** path which traditional mutants are put into */
+ public static String TRADITIONAL_MUTANT_PATH = "";
- /** path which traditional mutants are put into */
- public static String TRADITIONAL_MUTANT_PATH = "";
+ /** path which exception-related mutants are put into */
+ public static String EXCEPTION_MUTANT_PATH = "";
- /** path which exception-related mutants are put into */
- public static String EXCEPTION_MUTANT_PATH = "";
+ /** ??? absolute path for ???*/
+ public static String MUTANT_PATH = "";
- /** ??? absolute path for ???*/
- public static String MUTANT_PATH = "";
+ /** ??? absolute path for the original Java source*/
+ public static String ORIGINAL_PATH = "";
- /** ??? absolute path for the original Java source*/
- public static String ORIGINAL_PATH = "";
+ /** absolute path where test cases are located */
+ public static String TESTSET_PATH = SYSTEM_HOME + "/testset";
- /** absolute path where test cases are located */
- public static String TESTSET_PATH = SYSTEM_HOME + "/testset";
+ /** class name without package name that mutation is applied into */
+ public static String CLASS_NAME;
- /** class name without package name that mutation is applied into */
- public static String CLASS_NAME;
+ public static String WHOLE_CLASS_NAME;
- public static String WHOLE_CLASS_NAME;
+ /** path for */
+ public static String DIR_NAME;
- /** path for */
- public static String DIR_NAME;
+ /** directory name for class mutants */
+ public static String CM_DIR_NAME = "class_mutants";
- /** directory name for class mutants */
- public static String CM_DIR_NAME = "class_mutants";
+ /** directory name for exception-related mutants */
+ public static String EM_DIR_NAME = "exception_mutants";
- /** directory name for exception-related mutants */
- public static String EM_DIR_NAME = "exception_mutants";
+ /** directory name for traditional mutants */
+ public static String TM_DIR_NAME = "traditional_mutants";
- /** directory name for traditional mutants */
- public static String TM_DIR_NAME = "traditional_mutants";
+ /** directory name for original class */
+ public static String ORIGINAL_DIR_NAME = "original";
- /** directory name for original class */
- public static String ORIGINAL_DIR_NAME = "original";
+ public static String LOG_IDENTIFIER = ":";
- public static String LOG_IDENTIFIER = ":";
-
- /** List of names of class mutation operators */
- public static String[] cm_operators = { "IHI","IHD","IOD","IOP","IOR","ISI","ISD","IPC", // 8��
- "PNC","PMD","PPD","PCI","PCC","PCD","PRV", // 7��
- "OMR","OMD","OAN", // 3��
- "JTI","JTD","JSI","JSD","JID","JDC", // 6��
- "EOA","EOC","EAM","EMM" }; // 4�� - �� 28��
+ /** List of names of class mutation operators */
+ public static String[] cm_operators = {"IHI", "IHD", "IOD", "IOP", "IOR", "ISI", "ISD", "IPC", // 8��
+ "PNC", "PMD", "PPD", "PCI", "PCC", "PCD", "PRV", // 7��
+ "OMR", "OMD", "OAN", // 3��
+ "JTI", "JTD", "JSI", "JSD", "JID", "JDC", // 6��
+ "EOA", "EOC", "EAM", "EMM"}; // 4�� - �� 28��
- // public static String[] first_tm_operators = { "ABS","AOR","LCR","ROR","UOI" };
+ // public static String[] first_tm_operators = { "ABS","AOR","LCR","ROR","UOI" };
/*public static String[] second_tm_operators = { "AOR","AOD","AOI","ROR",
"COR","COD","COI","SOR","LOR","LOI","LOD"
,"SCR","SCI","SCD"};*/
- /** List of names of traditional mutation operators */
- // Upsorn: (04/06/2009) added Statement Deletion operator (SID, SWD, SFD, SSD)
- public static String[] tm_operators = { "AORB","AORS","AOIU","AOIS","AODU","AODS",
- "ROR","COR","COD","COI","SOR","LOR","LOI","LOD","ASRS","SDL","VDL","CDL","ODL"};
+ /** List of names of traditional mutation operators */
+ // Upsorn: (04/06/2009) added Statement Deletion operator (SID, SWD, SFD, SSD)
+ public static String[] tm_operators = {"AORB", "AORS", "AOIU", "AOIS", "AODU", "AODS",
+ "ROR", "COR", "COD", "COI", "SOR", "LOR", "LOI", "LOD", "ASRS", "SDL", "VDL", "CDL", "ODL"};
// "IBD", "WBD", "FBD", "SBD" };
// "SID", "SWD", "SFD", "SSD" };
// "SDL"};
- /** List of names of exception-related mutation operators */
- public static String[] em_operators = { "EFD", "EHC", "EHD", "EHI",
- "ETC", "ETD"};
+ /** List of names of exception-related mutation operators */
+ public static String[] em_operators = {"EFD", "EHC", "EHD", "EHI",
+ "ETC", "ETD"};
-
- // Upsorn: (05/18/2009) added mutation operators' description
- public static String[] op_desc = { "" };
-
-
-
+ // Upsorn: (05/18/2009) added mutation operators' description
+ public static String[] op_desc = {""};
-
- /**
+
+ /**
* Return type of class.
- * @param name of class
+ * @param class_name name of class
* @return type of class ( types: interface, abstract, GUI, main, normal, applet )
*/
- public static int getClassType (String class_name)
- {
- try
- {
- Class c = Class.forName (class_name);
- if (c.isInterface())
- return INTERFACE;
-
- if (Modifier.isAbstract(c.getModifiers()))
- return ABSTRACT;
-
- Method[] ms = c.getDeclaredMethods();
-
- if (ms != null)
- {
- if ( (ms.length == 1) && (ms[0].getName().equals("main")))
- return MAIN_ONLY;
-
- for (int i=0; i Recognize file structure for mutation system based on "mujava.config". ** CAUTION : this function or `setJMutationStructure(String home_path)' should be called before generating and running mutants. */
- public static void setJMutationStructure()
- {
- try
- {
- File f = new File (MutationSystem.SYSTEM_HOME + "/mujava.config");
- FileReader r = new FileReader(f);
- BufferedReader reader = new BufferedReader(r);
- String str = reader.readLine();
- String home_path = str.substring("MuJava_HOME=".length(), str.length());
- SYSTEM_HOME = home_path;
- SRC_PATH = home_path + "/src";
- CLASS_PATH = home_path + "/classes";
- MUTANT_HOME = home_path + "/result";
- TESTSET_PATH = home_path + "/testset";
- } catch (FileNotFoundException e1)
- {
- System.err.println("[ERROR] Can't find mujava.config file");
- e1.printStackTrace();
- } catch (Exception e)
- {
- e.printStackTrace();
- }
- }
+ public static void setJMutationStructure() {
+ try {
+ File f = new File(MutationSystem.SYSTEM_HOME + "/mujava.config");
+ FileReader r = new FileReader(f);
+ BufferedReader reader = new BufferedReader(r);
+ String str = reader.readLine();
+ String home_path = str.substring("MuJava_HOME=".length(), str.length());
+ SYSTEM_HOME = home_path;
+ SRC_PATH = home_path + "/src";
+ CLASS_PATH = home_path + "/classes";
+ MUTANT_HOME = home_path + "/result";
+ TESTSET_PATH = home_path + "/testset";
+ } catch (FileNotFoundException e1) {
+ System.err.println("[ERROR] Can't find mujava.config file");
+ e1.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
/** Recognize file structure for mutation system from not "mujava.config" but from user directly
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
- */
-
+ */
+
package mujava;
@@ -21,16 +21,16 @@
* Description:
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
- */
-
-
+ */
+
+
package mujava;
-import java.io.*;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.*;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Vector;
import mujava.test.*;
-import mujava.util.*;
-
-import org.junit.*;
-import org.junit.internal.RealSystem;
+import mujava.util.Debug;
+import mujava.util.MutantDirFilter;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
-import org.junit.runners.*;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.util.*;
/**
* Description:
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
- */
-
+ */
package mujava;
-import java.io.*;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.*;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Random;
-import java.util.Vector;
-
import mujava.cli.Util;
import mujava.cli.runmutes;
import mujava.test.*;
-import mujava.util.*;
-
-import org.junit.*;
-import org.junit.internal.RealSystem;
+import mujava.util.Debug;
+import mujava.util.MutantDirFilter;
import org.junit.runner.JUnitCore;
-import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
-import org.junit.runners.*;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.lang.annotation.Annotation;
+import java.util.*;
+
/**
- *
+ *
*
* Description: New test executer class build exclusively for command line version
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
- */
-
+ */
+
package mujava;
+import mujava.cli.Util;
+import mujava.cli.runmutes;
+import mujava.test.JMutationLoader;
+import mujava.test.NoMutantDirException;
+import mujava.test.NoMutantException;
+import mujava.test.TestResultCLI;
+import mujava.util.Debug;
+import org.junit.runner.JUnitCore;
+import org.junit.runner.notification.Failure;
+
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
@@ -27,183 +37,173 @@
import java.util.Random;
import java.util.Vector;
-import mujava.cli.Util;
-import mujava.cli.runmutes;
-import mujava.test.JMutationLoader;
-import mujava.test.NoMutantDirException;
-import mujava.test.NoMutantException;
-import mujava.test.TestResultCLI;
-import mujava.util.Debug;
-
-import org.junit.runner.JUnitCore;
-import org.junit.runner.notification.Failure;
/**
- *
+ *
*
* Description: New test executer class build exclusively for command line version
* try single thread execution.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
+ *
+ * Generate traditional mutants according to selected
+ * operator(s) from gui.GenMutantsMain.
+ * The original version is loaded, mutated, and compiled.
+ * Outputs (mutated source and class files) are in
+ * the traditional-mutants folder. Currently available traditional mutation operators:
+ * (1) AORB: Arithmetic Operator Replacement (Binary),
+ * (2) AORU: Arithmetic Operator Replacement (Unary),
+ * (3) AORS: Arithmetic Operator Replacement (Short-cut),
+ * (4) AODU: Arithmetic Operator Deletion (Unary),
+ * (5) AODS: Arithmetic Operator Deletion (Short-cut),
+ * (6) AOIU: Arithmetic Operator Insertion (Unary),
+ * (7) AOIS: Arithmetic Operator Insertion (Short-cut),
+ * (8) ROR: Rational Operator Replacement,
+ * (9) COR: Conditional Operator Replacement,
+ * (10) COD: Conditional Operator Deletion,
+ * (11) COI: Conditional Operator Insertion,
+ * (12) SOR: Shift Operator Replacement,
+ * (13) LOR: Logical Operator Replacement,
+ * (14) LOI: Logical Operator Insertion,
+ * (15) LOD: Logical Operator Deletion,
+ * (16) ASRS: Assignment Operator Replacement (short-cut)
+ *
- * @param name of class (including package name) */
- public static void setJMutationPaths(String whole_class_name)
- {
- int temp_start = whole_class_name.lastIndexOf(".") + 1;
- if (temp_start < 0)
- {
- temp_start=0;
- }
-
- int temp_end = whole_class_name.length();
- MutationSystem.CLASS_NAME = whole_class_name.substring(temp_start, temp_end);
- MutationSystem.DIR_NAME = whole_class_name;
- MutationSystem.ORIGINAL_PATH = MutationSystem.MUTANT_HOME
- + "/" + whole_class_name + "/" + MutationSystem.ORIGINAL_DIR_NAME;
- MutationSystem.CLASS_MUTANT_PATH = MutationSystem.MUTANT_HOME
- + "/" + whole_class_name + "/" + MutationSystem.CM_DIR_NAME;
- MutationSystem.TRADITIONAL_MUTANT_PATH = MutationSystem.MUTANT_HOME
- + "/" + whole_class_name + "/" + MutationSystem.TM_DIR_NAME;
- MutationSystem.EXCEPTION_MUTANT_PATH = MutationSystem.MUTANT_HOME
- + "/" + whole_class_name + "/" + MutationSystem.EM_DIR_NAME;
-
- }
+ * @param whole_class_name name of class (including package name) */
+ public static void setJMutationPaths(String whole_class_name) {
+ int temp_start = whole_class_name.lastIndexOf(".") + 1;
+ if (temp_start < 0) {
+ temp_start = 0;
+ }
+
+ int temp_end = whole_class_name.length();
+ MutationSystem.CLASS_NAME = whole_class_name.substring(temp_start, temp_end);
+ MutationSystem.DIR_NAME = whole_class_name;
+ MutationSystem.ORIGINAL_PATH = MutationSystem.MUTANT_HOME
+ + "/" + whole_class_name + "/" + MutationSystem.ORIGINAL_DIR_NAME;
+ MutationSystem.CLASS_MUTANT_PATH = MutationSystem.MUTANT_HOME
+ + "/" + whole_class_name + "/" + MutationSystem.CM_DIR_NAME;
+ MutationSystem.TRADITIONAL_MUTANT_PATH = MutationSystem.MUTANT_HOME
+ + "/" + whole_class_name + "/" + MutationSystem.TM_DIR_NAME;
+ MutationSystem.EXCEPTION_MUTANT_PATH = MutationSystem.MUTANT_HOME
+ + "/" + whole_class_name + "/" + MutationSystem.EM_DIR_NAME;
+
+ }
/** Default mujava system structure setting function
*
Currently available traditional mutation operators: * (1) AORB: Arithmetic Operator Replacement (Binary), * (2) AORU: Arithmetic Operator Replacement (Unary), @@ -41,269 +69,277 @@ *
* @author Yu-Seung Ma * @version 1.0 -*/ + */ package mujava; -import openjava.ptree.*; -import java.io.*; -import java.util.List; - import mujava.op.basic.*; -import mujava.op.util.*; +import mujava.op.util.CodeChangeLog; import mujava.util.Debug; +import openjava.ptree.ClassDeclaration; +import openjava.ptree.ClassDeclarationList; +import openjava.ptree.ParseTreeException; -public class TraditionalMutantsGenerator extends MutantsGenerator { - String[] traditionalOp; - private List* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + *
* http://www.apache.org/licenses/LICENSE-2.0 - * + *
* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ - + */ package mujava; -import openjava.ptree.*; +import mujava.op.basic.*; +import mujava.op.util.CodeChangeLog; +import mujava.util.Debug; +import openjava.ptree.ClassDeclaration; +import openjava.ptree.ClassDeclarationList; +import openjava.ptree.ParseTreeException; + import java.io.*; import java.util.HashMap; import java.util.List; -import mujava.op.basic.*; -import mujava.op.util.*; -import mujava.util.Debug; /** *
* Description: New tranditional mutants generator class build exclusively for command line version *
- * + * * @author Lin Deng * @version 1.0 - * + * */ public class TraditionalMutantsGeneratorCLI extends TraditionalMutantsGenerator { - - HashMap* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + *
* http://www.apache.org/licenses/LICENSE-2.0 - * + *
* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ - + */ package mujava.cli; import java.util.ArrayList; - /** + +/** *
* Description: Pair class used for storing results of mutation scores *
- * + * * @author Lin Deng - * @version 1.0 + * @version 1.0 */ -public class Pair -{ - public ArrayList* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + *
* http://www.apache.org/licenses/LICENSE-2.0 - * + *
* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ - + */ package mujava.cli; +import org.apache.commons.io.IOUtils; + import java.io.FileInputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Vector; -import org.apache.commons.io.IOUtils; /** *
* Description: Uitility class for command line version *
- * + * * @author Lin Deng * @version 1.0 - * + * */ -public class Util -{ - public static int Total = 0; - public static boolean debug = false; - - //all mutants in a class - public static Vector mutants = new Vector(); +public class Util { + public static int Total = 0; + public static boolean debug = false; + + //all mutants in a class + public static Vector mutants = new Vector(); + //killed mutants in a class + public static Vector killed_mutants = new Vector(); + //live mutants in a class + public static Vector live_mutants = new Vector(); + //eq mutants in a class + public static Vector eq_mutants = new Vector(); + + public static Map* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + *
* http://www.apache.org/licenses/LICENSE-2.0 - * + *
* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ + */ package mujava.cli; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.UnsupportedEncodingException; +import java.io.*; import java.security.SecureRandom; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; - /** + +/** *
* Description: The Class doRandomGivenMutationOperator. * Overview: This class is used to calculate mutation scores * based on randomly generated adequate test set of given mutation operators. * Experiment use only. *
- * + * * @author Lin Deng * @version 1.0 $Date: 06/10/2014 $ - */ + */ public class doRandomGivenMutationOperator { - /** - * The main method. - * - * @param args - * the arguments - * @throws IOException - * Signals that an I/O exception has occurred. - */ - public static void main(String[] args) throws IOException { - // need result file name + /** + * The main method. + * + * @param args + * the arguments + * @throws IOException + * Signals that an I/O exception has occurred. + */ + public static void main(String[] args) throws IOException { + // need result file name // String[] argv = { "/Users/dmark/COVDLsExpCopy/Triangle/result_list_2014_7_22_11_13_35.csv", "twoPred", "CDL", "10", // "/Users/dmark/COVDLsExpCopy/Triangle/" }; - String path = args[0]; - String target = args[2]; + String path = args[0]; + String target = args[2]; - int numOfRandom = Integer.valueOf(args[3]); - if (numOfRandom < 1) { - System.out.println("need more random times"); - return; - } + int numOfRandom = Integer.valueOf(args[3]); + if (numOfRandom < 1) { + System.out.println("need more random times"); + return; + } - String resultPath = args[4]; + String resultPath = args[4]; + + ArrayList* http://www.apache.org/licenses/LICENSE-2.0 - * + *
* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ - + */ package mujava.cli; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.UnsupportedEncodingException; +import java.io.*; import java.security.SecureRandom; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; +import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; -import com.sun.tools.classfile.Opcode.Set; - /** +/** *
* Description: The Class doRandomGivenPercentMutants. * Overview: This class is used to get random mutants, given a percentage *
- * + * * @author Lin Deng * @version 1.0 $Date: 06/10/2014 $ - */ + */ public class doRandomGivenPercentMutants { - /** - * The main method. - * - * @param args - * the arguments - * @throws IOException - * Signals that an I/O exception has occurred. - */ - public static void main(String[] args) throws IOException { - // need result file name + /** + * The main method. + * + * @param args + * the arguments + * @throws IOException + * Signals that an I/O exception has occurred. + */ + public static void main(String[] args) throws IOException { + // need result file name // String[] argv = { "/Users/dmark/COVDLsExpCopy/Triangle/result_list_2014_7_22_11_13_35.csv", "100", "10", // "/Users/dmark/COVDLsExpCopy/Triangle/result/" }; - String path = args[0]; - double percent = Double.valueOf(args[1])/100.0; - int numOfRandom = Integer.valueOf(args[2]); - if (numOfRandom < 1) { - System.out.println("need more random times"); - return; - } + String path = args[0]; + double percent = Double.valueOf(args[1]) / 100.0; + int numOfRandom = Integer.valueOf(args[2]); + if (numOfRandom < 1) { + System.out.println("need more random times"); + return; + } - String resultPath = args[3]; + String resultPath = args[3]; - ArrayList