From a06f488aa956894aba11e043834a1d0b21fe4a9b Mon Sep 17 00:00:00 2001 From: Kevin ZHANG <36391958+GodDeath7th@users.noreply.github.com> Date: Sun, 2 Sep 2018 14:01:51 +1000 Subject: [PATCH] new change --- .project | 11 +++ examples/BV1.s | 3 + examples/BV10.s | 6 ++ examples/BV11.s | 7 ++ examples/BV12.s | 5 + examples/BV13.s | 4 + examples/BV14.s | 4 + examples/BV15.s | 4 + examples/BV16.s | 4 + examples/BV17.s | 4 + examples/BV18.s | 4 + examples/BV19.s | 4 + examples/BV2.s | 2 + examples/BV20.s | 1 + examples/BV21.s | 6 ++ examples/BV22.s | 1 + examples/BV23.s | 2 + examples/BV3.s | 3 + examples/BV4.s | 3 + examples/BV5.s | 4 + examples/BV6.s | 4 + examples/BV7.s | 3 + examples/BV8.s | 3 + examples/BV9.s | 5 + examples/EC1.s | 9 ++ examples/EC10.s | 1 + examples/EC11.s | 5 + examples/EC12.s | 5 + examples/EC13-1.s | 1 + examples/EC13-2.s | 1 + examples/EC14.s | 4 + examples/EC2.s | 3 + examples/EC3.s | 3 + examples/EC4.S | 9 ++ examples/EC5.s | 2 + examples/EC6.s | 2 + examples/EC7.s | 7 ++ examples/EC8.s | 5 + examples/EC9.s | 1 + .../mutant-1/swen90006/machine/Machine.java | 3 +- .../mutant-2/swen90006/machine/Machine.java | 2 +- .../mutant-3/swen90006/machine/Machine.java | 2 +- .../mutant-4/swen90006/machine/Machine.java | 2 +- .../mutant-5/swen90006/machine/Machine.java | 2 +- test/swen90006/machine/BoundaryTests.java | 92 +++++++++++++++++++ test/swen90006/machine/PartitioningTests.java | 75 +++++++++++++++ 46 files changed, 328 insertions(+), 5 deletions(-) create mode 100644 .project create mode 100644 examples/BV1.s create mode 100644 examples/BV10.s create mode 100644 examples/BV11.s create mode 100644 examples/BV12.s create mode 100644 examples/BV13.s create mode 100644 examples/BV14.s create mode 100644 examples/BV15.s create mode 100644 examples/BV16.s create mode 100644 examples/BV17.s create mode 100644 examples/BV18.s create mode 100644 examples/BV19.s create mode 100644 examples/BV2.s create mode 100644 examples/BV20.s create mode 100644 examples/BV21.s create mode 100644 examples/BV22.s create mode 100644 examples/BV23.s create mode 100644 examples/BV3.s create mode 100644 examples/BV4.s create mode 100644 examples/BV5.s create mode 100644 examples/BV6.s create mode 100644 examples/BV7.s create mode 100644 examples/BV8.s create mode 100644 examples/BV9.s create mode 100644 examples/EC1.s create mode 100644 examples/EC10.s create mode 100644 examples/EC11.s create mode 100644 examples/EC12.s create mode 100644 examples/EC13-1.s create mode 100644 examples/EC13-2.s create mode 100644 examples/EC14.s create mode 100644 examples/EC2.s create mode 100644 examples/EC3.s create mode 100644 examples/EC4.S create mode 100644 examples/EC5.s create mode 100644 examples/EC6.s create mode 100644 examples/EC7.s create mode 100644 examples/EC8.s create mode 100644 examples/EC9.s diff --git a/.project b/.project new file mode 100644 index 0000000..d622d08 --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>SWEN90006-A1-2018</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/examples/BV1.s b/examples/BV1.s new file mode 100644 index 0000000..be3afd1 --- /dev/null +++ b/examples/BV1.s @@ -0,0 +1,3 @@ + +MOV R10 -65535 +RET R10 \ No newline at end of file diff --git a/examples/BV10.s b/examples/BV10.s new file mode 100644 index 0000000..d23bd5b --- /dev/null +++ b/examples/BV10.s @@ -0,0 +1,6 @@ +MOV R0 65535 +MOV R1 32768 +MOV R2 32767 +MUL R0 R0 R1 +ADD R0 R0 R2 +RET 0 \ No newline at end of file diff --git a/examples/BV11.s b/examples/BV11.s new file mode 100644 index 0000000..8bd37be --- /dev/null +++ b/examples/BV11.s @@ -0,0 +1,7 @@ +MOV R0 65535 +MOV R1 -32768 +MOV R2 -1 +MUL R0 R0 R1 +ADD R0 R0 R1 +ADD R0 R0 R2 +RET R0 \ No newline at end of file diff --git a/examples/BV12.s b/examples/BV12.s new file mode 100644 index 0000000..c4a1ebc --- /dev/null +++ b/examples/BV12.s @@ -0,0 +1,5 @@ +MOV R0 65535 +MOV R1 32768 +MUL R0 R0 R1 +ADD R0 R0 R1 +RET R0 \ No newline at end of file diff --git a/examples/BV13.s b/examples/BV13.s new file mode 100644 index 0000000..2daacf8 --- /dev/null +++ b/examples/BV13.s @@ -0,0 +1,4 @@ +MOV R0 5 +MOV R1 0 +LDR R0 R1 0 +RET R0 \ No newline at end of file diff --git a/examples/BV14.s b/examples/BV14.s new file mode 100644 index 0000000..254ed19 --- /dev/null +++ b/examples/BV14.s @@ -0,0 +1,4 @@ +MOV R0 5 +MOV R1 1 +LDR R0 R1 65534 +RET R0 \ No newline at end of file diff --git a/examples/BV15.s b/examples/BV15.s new file mode 100644 index 0000000..830f9e5 --- /dev/null +++ b/examples/BV15.s @@ -0,0 +1,4 @@ +MOV R0 5 +MOV R1 -1 +LDR R0 R1 0 +RET R0 \ No newline at end of file diff --git a/examples/BV16.s b/examples/BV16.s new file mode 100644 index 0000000..ced433b --- /dev/null +++ b/examples/BV16.s @@ -0,0 +1,4 @@ +MOV R0 5 +MOV R1 2 +LDR R0 R1 65534 +RET R0 \ No newline at end of file diff --git a/examples/BV17.s b/examples/BV17.s new file mode 100644 index 0000000..ef3b148 --- /dev/null +++ b/examples/BV17.s @@ -0,0 +1,4 @@ +MOV R0 2 +MOV R1 0 +DIV R0 R0 R1 +RET R0 \ No newline at end of file diff --git a/examples/BV18.s b/examples/BV18.s new file mode 100644 index 0000000..e864c0b --- /dev/null +++ b/examples/BV18.s @@ -0,0 +1,4 @@ +MOV R0 2 +MOV R1 1 +DIV R0 R0 R1 +RET R0 \ No newline at end of file diff --git a/examples/BV19.s b/examples/BV19.s new file mode 100644 index 0000000..45b2f52 --- /dev/null +++ b/examples/BV19.s @@ -0,0 +1,4 @@ +MOV R0 2 +MOV R1 -1 +DIV R0 R0 R1 +RET R0 \ No newline at end of file diff --git a/examples/BV2.s b/examples/BV2.s new file mode 100644 index 0000000..7565977 --- /dev/null +++ b/examples/BV2.s @@ -0,0 +1,2 @@ +MOV R10 65535 +RET R10 \ No newline at end of file diff --git a/examples/BV20.s b/examples/BV20.s new file mode 100644 index 0000000..8604c4d --- /dev/null +++ b/examples/BV20.s @@ -0,0 +1 @@ +RET R0 \ No newline at end of file diff --git a/examples/BV21.s b/examples/BV21.s new file mode 100644 index 0000000..1ee6d52 --- /dev/null +++ b/examples/BV21.s @@ -0,0 +1,6 @@ +MOV R0 1 +MOV R1 1 +JZ R1 3 +SUB R1 R1 R1 +JMP -2 +RET R0 \ No newline at end of file diff --git a/examples/BV22.s b/examples/BV22.s new file mode 100644 index 0000000..859f1f0 --- /dev/null +++ b/examples/BV22.s @@ -0,0 +1 @@ +JMP -1 \ No newline at end of file diff --git a/examples/BV23.s b/examples/BV23.s new file mode 100644 index 0000000..ce2cc96 --- /dev/null +++ b/examples/BV23.s @@ -0,0 +1,2 @@ +MOV R0 1 +JMP 2 \ No newline at end of file diff --git a/examples/BV3.s b/examples/BV3.s new file mode 100644 index 0000000..3a98001 --- /dev/null +++ b/examples/BV3.s @@ -0,0 +1,3 @@ +MOV R10 1 +MOV R11 1 +STR R11 -65536 R10 \ No newline at end of file diff --git a/examples/BV4.s b/examples/BV4.s new file mode 100644 index 0000000..a756856 --- /dev/null +++ b/examples/BV4.s @@ -0,0 +1,3 @@ +MOV R10 1 +MOV R11 1 +LDR R10 R11 65536 \ No newline at end of file diff --git a/examples/BV5.s b/examples/BV5.s new file mode 100644 index 0000000..aa806bc --- /dev/null +++ b/examples/BV5.s @@ -0,0 +1,4 @@ +MOV R0 1 +MOV R11 1 +ADD R0 R0 R11 +RET R0 \ No newline at end of file diff --git a/examples/BV6.s b/examples/BV6.s new file mode 100644 index 0000000..64cf38b --- /dev/null +++ b/examples/BV6.s @@ -0,0 +1,4 @@ +MOV R31 3 +MOV R1 1 +SUB R31 R31 R1 +RET R31 \ No newline at end of file diff --git a/examples/BV7.s b/examples/BV7.s new file mode 100644 index 0000000..b7d2374 --- /dev/null +++ b/examples/BV7.s @@ -0,0 +1,3 @@ +MOV R1 1 +MOV R2 1 +MUL R-1 R1 R2 \ No newline at end of file diff --git a/examples/BV8.s b/examples/BV8.s new file mode 100644 index 0000000..2dc29c5 --- /dev/null +++ b/examples/BV8.s @@ -0,0 +1,3 @@ +MOV R1 1 +MOV R2 1 +DIV R32 R1 R2 \ No newline at end of file diff --git a/examples/BV9.s b/examples/BV9.s new file mode 100644 index 0000000..6426563 --- /dev/null +++ b/examples/BV9.s @@ -0,0 +1,5 @@ +MOV R0 65535 +MOV R1 -32768 +MUL R0 R0 R1 +ADD R0 R0 R1 +RET R0 \ No newline at end of file diff --git a/examples/EC1.s b/examples/EC1.s new file mode 100644 index 0000000..c47e29f --- /dev/null +++ b/examples/EC1.s @@ -0,0 +1,9 @@ +MOV R0 5 + +MOV R1 10 +SUB R0 R0 R1 +STR R0 5 R1 +LDR R0 R0 5 +JMP 2 +MOV R1 20 +RET R0 \ No newline at end of file diff --git a/examples/EC10.s b/examples/EC10.s new file mode 100644 index 0000000..5fc21e7 --- /dev/null +++ b/examples/EC10.s @@ -0,0 +1 @@ +MOV R0 -65536 \ No newline at end of file diff --git a/examples/EC11.s b/examples/EC11.s new file mode 100644 index 0000000..8e64b74 --- /dev/null +++ b/examples/EC11.s @@ -0,0 +1,5 @@ +MOV R0 2 +MOV R1 -40000 +MUL R0 R0 R1 +STR R0 100 R1 +RET R0 \ No newline at end of file diff --git a/examples/EC12.s b/examples/EC12.s new file mode 100644 index 0000000..7f78ed0 --- /dev/null +++ b/examples/EC12.s @@ -0,0 +1,5 @@ +MOV R0 2 +MOV R1 40000 +MUL R0 R0 R1 +LDR R1 R0 100 +RET R0 \ No newline at end of file diff --git a/examples/EC13-1.s b/examples/EC13-1.s new file mode 100644 index 0000000..c09ca2c --- /dev/null +++ b/examples/EC13-1.s @@ -0,0 +1 @@ +MOVV R0 5 \ No newline at end of file diff --git a/examples/EC13-2.s b/examples/EC13-2.s new file mode 100644 index 0000000..d7ffc7f --- /dev/null +++ b/examples/EC13-2.s @@ -0,0 +1 @@ +PUSH R0 \ No newline at end of file diff --git a/examples/EC14.s b/examples/EC14.s new file mode 100644 index 0000000..743ffad --- /dev/null +++ b/examples/EC14.s @@ -0,0 +1,4 @@ +MOV R0 1 +MOV R1 0 +DIV R0 R0 R1 +RET R0 \ No newline at end of file diff --git a/examples/EC2.s b/examples/EC2.s new file mode 100644 index 0000000..e3f76e8 --- /dev/null +++ b/examples/EC2.s @@ -0,0 +1,3 @@ +MOV R0 1 +MOV R1 5 +DIV R0 R1 R0 \ No newline at end of file diff --git a/examples/EC3.s b/examples/EC3.s new file mode 100644 index 0000000..ae117e8 --- /dev/null +++ b/examples/EC3.s @@ -0,0 +1,3 @@ +MOV R0 1 +JMP -2 +RET R0 \ No newline at end of file diff --git a/examples/EC4.S b/examples/EC4.S new file mode 100644 index 0000000..29ce191 --- /dev/null +++ b/examples/EC4.S @@ -0,0 +1,9 @@ +MOV R0 5 +MOV R1 3 +MOV R2 2 +MOV R3 1 +JZ R1 5 +MUL R0 R0 R2 +SUB R1 R1 R3 +JMP -3 +RET R0 \ No newline at end of file diff --git a/examples/EC5.s b/examples/EC5.s new file mode 100644 index 0000000..cd9a4d3 --- /dev/null +++ b/examples/EC5.s @@ -0,0 +1,2 @@ +MOV R0 1 +STR R-1 10000 R0 \ No newline at end of file diff --git a/examples/EC6.s b/examples/EC6.s new file mode 100644 index 0000000..47b7c2f --- /dev/null +++ b/examples/EC6.s @@ -0,0 +1,2 @@ +MOV R0 1 +LDR R0 R32 10000 \ No newline at end of file diff --git a/examples/EC7.s b/examples/EC7.s new file mode 100644 index 0000000..8bd37be --- /dev/null +++ b/examples/EC7.s @@ -0,0 +1,7 @@ +MOV R0 65535 +MOV R1 -32768 +MOV R2 -1 +MUL R0 R0 R1 +ADD R0 R0 R1 +ADD R0 R0 R2 +RET R0 \ No newline at end of file diff --git a/examples/EC8.s b/examples/EC8.s new file mode 100644 index 0000000..c4a1ebc --- /dev/null +++ b/examples/EC8.s @@ -0,0 +1,5 @@ +MOV R0 65535 +MOV R1 32768 +MUL R0 R0 R1 +ADD R0 R0 R1 +RET R0 \ No newline at end of file diff --git a/examples/EC9.s b/examples/EC9.s new file mode 100644 index 0000000..9ddba8b --- /dev/null +++ b/examples/EC9.s @@ -0,0 +1 @@ +MOV R0 65536 \ No newline at end of file diff --git a/mutants/mutant-1/swen90006/machine/Machine.java b/mutants/mutant-1/swen90006/machine/Machine.java index 9bf5731..cb45d1e 100644 --- a/mutants/mutant-1/swen90006/machine/Machine.java +++ b/mutants/mutant-1/swen90006/machine/Machine.java @@ -2,6 +2,7 @@ package swen90006.machine; import java.util.Arrays; import java.util.List; +import java.Math; public class Machine { @@ -237,7 +238,7 @@ public class Machine } else if (toks[0].equals(INSTRUCTION_RETURN)){ int rs = parseReg(toks[1]); count++; - return regs[rs]; + return Math.abs(regs[rs]); } else if (toks[0].equals(INSTRUCTION_LOAD)){ if (toks.length != 4){ throw new InvalidInstructionException(); diff --git a/mutants/mutant-2/swen90006/machine/Machine.java b/mutants/mutant-2/swen90006/machine/Machine.java index 9bf5731..63be597 100644 --- a/mutants/mutant-2/swen90006/machine/Machine.java +++ b/mutants/mutant-2/swen90006/machine/Machine.java @@ -168,7 +168,7 @@ public class Machine int instructionsExecuted = 0; int pc = 0; - final int progLength = instructions.size(); + final int progLength = instructions.size()+1; while(true){ if (pc < 0 || pc >= progLength){ /* will cause NoReturnValueException to be thrown diff --git a/mutants/mutant-3/swen90006/machine/Machine.java b/mutants/mutant-3/swen90006/machine/Machine.java index 9bf5731..f6ff7c8 100644 --- a/mutants/mutant-3/swen90006/machine/Machine.java +++ b/mutants/mutant-3/swen90006/machine/Machine.java @@ -115,7 +115,7 @@ public class Machine String numstr = s.substring(1); int num = 0; try { - num = Integer.parseInt(numstr); + num = Integer.parseInt(numstr)%31; } catch (Exception e){ throw new InvalidInstructionException(); } diff --git a/mutants/mutant-4/swen90006/machine/Machine.java b/mutants/mutant-4/swen90006/machine/Machine.java index 9bf5731..f082b7f 100644 --- a/mutants/mutant-4/swen90006/machine/Machine.java +++ b/mutants/mutant-4/swen90006/machine/Machine.java @@ -93,7 +93,7 @@ public class Machine private void do_store(int a, int offs, int b) { if (regs[a] + 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-5/swen90006/machine/Machine.java b/mutants/mutant-5/swen90006/machine/Machine.java index 9bf5731..511c04a 100644 --- a/mutants/mutant-5/swen90006/machine/Machine.java +++ b/mutants/mutant-5/swen90006/machine/Machine.java @@ -83,7 +83,7 @@ public class Machine private void do_load(int dest, int src, int offs) { if (regs[src] + offs > MAX_ADDR){ /* no op */ - }else if(regs[src] + offs < 0){ + }else if(regs[src] + offs <= 0){ /* no op */ }else{ regs[dest] = memory[regs[src] + offs]; diff --git a/test/swen90006/machine/BoundaryTests.java b/test/swen90006/machine/BoundaryTests.java index 61ce1ca..285be42 100644 --- a/test/swen90006/machine/BoundaryTests.java +++ b/test/swen90006/machine/BoundaryTests.java @@ -87,4 +87,96 @@ public class BoundaryTests } return lines; } + @Test + public void boundaryTest1() throws Exception { + SimpleDriver.main(new String[]{"examples/BV1.s"}); + } + @Test + public void boundaryTest2() throws Exception { + SimpleDriver.main(new String[]{"examples/BV2.s"}); + } + @Test + public void boundaryTest3() throws Exception { + SimpleDriver.main(new String[]{"examples/BV3.s"}); + } + @Test + public void boundaryTest4() throws Exception { + SimpleDriver.main(new String[]{"examples/BV4.s"}); + } + @Test + public void boundaryTest5() throws Exception { + SimpleDriver.main(new String[]{"examples/BV5.s"}); + } + @Test + public void boundaryTest6() throws Exception { + SimpleDriver.main(new String[]{"examples/BV6.s"}); + } + @Test + public void boundaryTest7() throws Exception { + SimpleDriver.main(new String[]{"examples/BV7.s"}); + } + @Test + public void boundaryTest8() throws Exception { + SimpleDriver.main(new String[]{"examples/BV8.s"}); + } + @Test + public void boundaryTest9() throws Exception { + SimpleDriver.main(new String[]{"examples/BV9.s"}); + } + @Test + public void boundaryTest10() throws Exception { + SimpleDriver.main(new String[]{"examples/BV10.s"}); + } + @Test + public void boundaryTest11() throws Exception { + SimpleDriver.main(new String[]{"examples/BV11.s"}); + } + @Test + public void boundaryTest12() throws Exception { + SimpleDriver.main(new String[]{"examples/BV12.s"}); + } + @Test + public void boundaryTest13() throws Exception { + SimpleDriver.main(new String[]{"examples/BV13.s"}); + } + @Test + public void boundaryTest14() throws Exception { + SimpleDriver.main(new String[]{"examples/BV14.s"}); + } + @Test + public void boundaryTest15() throws Exception { + SimpleDriver.main(new String[]{"examples/BV15.s"}); + } + @Test + public void boundaryTest16() throws Exception { + SimpleDriver.main(new String[]{"examples/BV16.s"}); + } + @Test + public void boundaryTest17() throws Exception { + SimpleDriver.main(new String[]{"examples/BV17.s"}); + } + @Test + public void boundaryTest18() throws Exception { + SimpleDriver.main(new String[]{"examples/BV18.s"}); + } + @Test + public void boundaryTest19() throws Exception { + SimpleDriver.main(new String[]{"examples/BV19.s"}); + } + @Test + public void boundaryTest20() throws Exception { + SimpleDriver.main(new String[]{"examples/BV20.s"}); + } + @Test + public void boundaryTest21() throws Exception { + SimpleDriver.main(new String[]{"examples/BV21.s"}); + } + @Test + public void boundaryTest22() throws Exception { + SimpleDriver.main(new String[]{"examples/BV22.s"}); + } + @Test + public void boundaryTest23() throws Exception { + SimpleDriver.main(new String[]{"examples/BV23.s"}); + } } diff --git a/test/swen90006/machine/PartitioningTests.java b/test/swen90006/machine/PartitioningTests.java index 5494b44..3254908 100644 --- a/test/swen90006/machine/PartitioningTests.java +++ b/test/swen90006/machine/PartitioningTests.java @@ -87,4 +87,79 @@ public class PartitioningTests } return lines; } + @Test + public void partitionTest1() throws Exception{ + SimpleDriver.main(new String[]{"examples/EC1.s"}); + + } + @Test + public void partitionTest2() throws Exception{ + SimpleDriver.main(new String[]{"examples/EC2.s"}); + + } + @Test + public void partitionTest3() throws Exception{ + SimpleDriver.main(new String[]{"examples/EC3.s"}); + + } + @Test + public void partitionTest4() throws Exception{ + SimpleDriver.main(new String[]{"examples/EC4.s"}); + + } + @Test + public void partitionTest5() throws Exception{ + SimpleDriver.main(new String[]{"examples/EC5.s"}); + + } + @Test + public void partitionTest6() throws Exception{ + SimpleDriver.main(new String[]{"examples/EC6.s"}); + + } + @Test + public void partitionTest7() throws Exception{ + SimpleDriver.main(new String[]{"examples/EC7.s"}); + + } + @Test + public void partitionTest8() throws Exception{ + SimpleDriver.main(new String[]{"examples/EC8.s"}); + + } + @Test + public void partitionTest9() throws Exception{ + SimpleDriver.main(new String[]{"examples/EC9.s"}); + + } + @Test + public void partitionTest10() throws Exception{ + SimpleDriver.main(new String[]{"examples/EC10.s"}); + + } + @Test + public void partitionTest11() throws Exception{ + SimpleDriver.main(new String[]{"examples/EC11.s"}); + + } + @Test + public void partitionTest12() throws Exception{ + SimpleDriver.main(new String[]{"examples/EC12.s"}); + + } + @Test + public void partitionTest131() throws Exception{ + SimpleDriver.main(new String[]{"examples/EC13-1.s"}); + + } + @Test + public void partitionTest132() throws Exception{ + SimpleDriver.main(new String[]{"examples/EC13-2.s"}); + + } + @Test + public void partitionTest14() throws Exception{ + SimpleDriver.main(new String[]{"examples/EC14.s"}); + + } } -- GitLab