From 6390b47c96175cb91927ef3e197a5e8e9732153f Mon Sep 17 00:00:00 2001
From: XUJIAZHU <43055837+XUJIAZHU@users.noreply.github.com>
Date: Sun, 16 Sep 2018 16:39:56 +1000
Subject: [PATCH] val

---
 examples/EC22.s                                 | 6 ++++++
 mutants/mutant-2/swen90006/machine/Machine.java | 4 ++--
 mutants/mutant-3/swen90006/machine/Machine.java | 4 ++--
 mutants/mutant-4/swen90006/machine/Machine.java | 4 ++--
 mutants/mutant-5/swen90006/machine/Machine.java | 4 ++--
 test/swen90006/machine/BoundaryTests.java       | 7 +++++++
 test/swen90006/machine/PartitioningTests.java   | 7 +++++++
 7 files changed, 28 insertions(+), 8 deletions(-)
 create mode 100644 examples/EC22.s

diff --git a/examples/EC22.s b/examples/EC22.s
new file mode 100644
index 0000000..023976a
--- /dev/null
+++ b/examples/EC22.s
@@ -0,0 +1,6 @@
+     MOV R1 0
+     MOV R2 2
+     MOV R3 3
+     DIV R3 R1 R2
+     RET R3
+
diff --git a/mutants/mutant-2/swen90006/machine/Machine.java b/mutants/mutant-2/swen90006/machine/Machine.java
index 1ff5cbf..8ba0f38 100644
--- a/mutants/mutant-2/swen90006/machine/Machine.java
+++ b/mutants/mutant-2/swen90006/machine/Machine.java
@@ -211,7 +211,7 @@ public class Machine
 	int rs2 = parseReg(toks[3]);
 	do_add(rd,rs1,rs2);
       } else if (toks[0].equals(INSTRUCTION_SUBTRACT)){
-	if (toks.length == 4){
+	if (toks.length != 4){
 	  throw new InvalidInstructionException();
 	}
 	int rd = parseReg(toks[1]);
@@ -275,7 +275,7 @@ public class Machine
 	}
 	int ra = parseReg(toks[1]);
 	int offs = parseOffset(toks[2]);
-	if (regs[ra] == 0){
+	if (regs[ra] != 0){
 	  pc = pc + offs;
 	}else{
 	  pc = pc + 1;
diff --git a/mutants/mutant-3/swen90006/machine/Machine.java b/mutants/mutant-3/swen90006/machine/Machine.java
index ea9d43b..70f63e0 100644
--- a/mutants/mutant-3/swen90006/machine/Machine.java
+++ b/mutants/mutant-3/swen90006/machine/Machine.java
@@ -91,9 +91,9 @@ public class Machine
   }
 
   private void do_store(int a, int offs, int b)  {
-    if (regs[a] + offs < MAX_ADDR){
+    if (regs[b] + offs > MAX_ADDR){
       /* no op */
-    }else if(regs[a] + offs > 0){
+    }else if(regs[a] + offs < 0){
       /* no op */
     }else{
       memory[regs[a] + offs] = regs[b];
diff --git a/mutants/mutant-4/swen90006/machine/Machine.java b/mutants/mutant-4/swen90006/machine/Machine.java
index f3d8622..7c95d0b 100644
--- a/mutants/mutant-4/swen90006/machine/Machine.java
+++ b/mutants/mutant-4/swen90006/machine/Machine.java
@@ -58,7 +58,7 @@ public class Machine
 
   private void do_add(int dest, int src1, int src2)
   {
-    regs[dest] = regs[src1] = regs[src2];
+    regs[dest] = regs[src1] + regs[src2];
   }
     
   private void do_sub(int dest, int src1, int src2)
@@ -73,7 +73,7 @@ public class Machine
     
   private void do_div(int dest, int src1, int src2)
   {
-    if (regs[src2] == 0){
+    if (regs[src1] == 0){
       /* no op */
     }else{
       regs[dest] = regs[src1] / regs[src2];
diff --git a/mutants/mutant-5/swen90006/machine/Machine.java b/mutants/mutant-5/swen90006/machine/Machine.java
index e0c1ba7..4b87d94 100644
--- a/mutants/mutant-5/swen90006/machine/Machine.java
+++ b/mutants/mutant-5/swen90006/machine/Machine.java
@@ -188,7 +188,7 @@ public class Machine
 
       /* check for blank lines */
       if (inst.equals("")){
-	pc = pc + 1;
+	pc = pc + 2;
 	count++;
 	continue;
       }
@@ -266,7 +266,7 @@ public class Machine
 	  throw new InvalidInstructionException();
 	}
 	int offs = parseOffset(toks[1]);
-	pc  = pc = offs;
+	pc  = pc + offs;
 	count++;
 	continue; /* avoid default increment of pc below */
       } else if (toks[0].equals(INSTRUCTION_JZ)){
diff --git a/test/swen90006/machine/BoundaryTests.java b/test/swen90006/machine/BoundaryTests.java
index 8d55d19..7dbe22a 100644
--- a/test/swen90006/machine/BoundaryTests.java
+++ b/test/swen90006/machine/BoundaryTests.java
@@ -240,6 +240,13 @@ public class BoundaryTests
     Machine m = new Machine();
     m.execute(lines);
   }
+  
+  @Test public void EC22()
+  {
+    final List<String> lines = readInstructions("examples/EC22.s");
+    Machine m = new Machine();
+    assertEquals(m.execute(lines), 0);
+  }
   //To test an exception, specify the expected exception after the @Test
  /* @Test(expected = java.io.IOException.class) 
     public void anExceptionTest()
diff --git a/test/swen90006/machine/PartitioningTests.java b/test/swen90006/machine/PartitioningTests.java
index 676b17f..2761b22 100644
--- a/test/swen90006/machine/PartitioningTests.java
+++ b/test/swen90006/machine/PartitioningTests.java
@@ -240,6 +240,13 @@ public class PartitioningTests
     Machine m = new Machine();
     m.execute(lines);
   }
+  
+  @Test public void EC22()
+  {
+    final List<String> lines = readInstructions("examples/EC22.s");
+    Machine m = new Machine();
+    assertEquals(m.execute(lines), 0);
+  }
   //To test an exception, specify the expected exception after the @Test
   /*@Test(expected = java.io.IOException.class) 
     public void anExceptionTest()
-- 
GitLab