diff --git a/examples/EC22.s b/examples/EC22.s new file mode 100644 index 0000000000000000000000000000000000000000..023976a7d2f08d81d48f20b2b1628df95b227018 --- /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 1ff5cbf47db17acd1b5ae71b1697fc70bdca7cc2..8ba0f3820b8e69cafb480067d5d882f2995e915e 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 ea9d43b06cc9f16d05e1af3338dc3f815f1d2511..70f63e09096ce06c780caa62dee7c28d9154c9f9 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 f3d8622cca181d580d3c3e7adf90010b312db690..7c95d0ba3df955a7430500f1bcd350d38f579279 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 e0c1ba79d8a5e87f3339003160d5d69f35565d30..4b87d94b2de1a473cd87ac29144473d9b61cffb7 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 8d55d193ccbea0c76c2e46d78f00457abb87f125..7dbe22adead0263f2bc68da7ad12961e5defb1d2 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 676b17f21266f61f8f01b615574c8c4da40b25e5..2761b2285235cdf84d6ddcc4666265865173c64f 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()