From fc82e2263303eda794fc28bd56276939eff74cc3 Mon Sep 17 00:00:00 2001 From: XUJIAZHU <43055837+XUJIAZHU@users.noreply.github.com> Date: Sun, 16 Sep 2018 15:13:35 +1000 Subject: [PATCH] Test case --- .classpath | 14 ++ .gitignore | 1 + .project | 17 ++ examples/EC1.s | 4 + examples/EC10.s | 4 + examples/EC11.s | 6 + examples/EC12-1.s | 6 + examples/EC12-2.s | 6 + examples/EC13.s | 6 + examples/EC14.s | 3 + examples/EC15.s | 8 + examples/EC16.s | 7 + examples/EC17-1.s | 8 + examples/EC17-2.s | 9 + examples/EC18.s | 7 + examples/EC19.s | 8 + examples/EC2.s | 5 + examples/EC20.s | 4 + examples/EC21.s | 2 + examples/EC3-1.s | 5 + examples/EC3-2.s | 5 + examples/EC4.s | 5 + examples/EC5.s | 4 + examples/EC6.s | 5 + examples/EC7-1.s | 4 + examples/EC7-2.s | 5 + examples/EC8.s | 5 + examples/EC9.s | 5 + .../mutant-1/swen90006/machine/Machine.java | 2 +- .../mutant-2/swen90006/machine/Machine.java | 2 +- test/swen90006/machine/BoundaryTests.java | 166 +++++++++++++++++- test/swen90006/machine/PartitioningTests.java | 8 +- 32 files changed, 336 insertions(+), 10 deletions(-) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 examples/EC1.s create mode 100644 examples/EC10.s create mode 100644 examples/EC11.s create mode 100644 examples/EC12-1.s create mode 100644 examples/EC12-2.s create mode 100644 examples/EC13.s create mode 100644 examples/EC14.s create mode 100644 examples/EC15.s create mode 100644 examples/EC16.s create mode 100644 examples/EC17-1.s create mode 100644 examples/EC17-2.s create mode 100644 examples/EC18.s create mode 100644 examples/EC19.s create mode 100644 examples/EC2.s create mode 100644 examples/EC20.s create mode 100644 examples/EC21.s create mode 100644 examples/EC3-1.s create mode 100644 examples/EC3-2.s create mode 100644 examples/EC4.s create mode 100644 examples/EC5.s create mode 100644 examples/EC6.s create mode 100644 examples/EC7-1.s create mode 100644 examples/EC7-2.s create mode 100644 examples/EC8.s create mode 100644 examples/EC9.s diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..23c928d --- /dev/null +++ b/.classpath @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="src" path="mutants/mutant-1"/> + <classpathentry kind="src" path="mutants/mutant-2"/> + <classpathentry kind="src" path="mutants/mutant-3"/> + <classpathentry kind="src" path="mutants/mutant-4"/> + <classpathentry kind="src" path="mutants/mutant-5"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="src" path="test"/> + <classpathentry kind="lib" path="lib/hamcrest-core-1.3.jar"/> + <classpathentry kind="lib" path="lib/junit-4.11.jar"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/.project b/.project new file mode 100644 index 0000000..88a7b69 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>SWEN90006-A1-2018</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/examples/EC1.s b/examples/EC1.s new file mode 100644 index 0000000..8c3e45c --- /dev/null +++ b/examples/EC1.s @@ -0,0 +1,4 @@ + ;; R1 hold N + MOV R1 1 + RET R1 + diff --git a/examples/EC10.s b/examples/EC10.s new file mode 100644 index 0000000..197e689 --- /dev/null +++ b/examples/EC10.s @@ -0,0 +1,4 @@ + MOV R1 1 + LDR R-1 R1 1 + RET R-1 + diff --git a/examples/EC11.s b/examples/EC11.s new file mode 100644 index 0000000..eaefeb5 --- /dev/null +++ b/examples/EC11.s @@ -0,0 +1,6 @@ + MOV R0 0 + MOV R2 3 + STR R0 -1 R2 + LDR R1 R0 -1 + RET R1 + diff --git a/examples/EC12-1.s b/examples/EC12-1.s new file mode 100644 index 0000000..7a80117 --- /dev/null +++ b/examples/EC12-1.s @@ -0,0 +1,6 @@ + MOV R0 0 + MOV R2 3 + STR R0 0 R2 + LDR R1 R0 0 + RET R1 + diff --git a/examples/EC12-2.s b/examples/EC12-2.s new file mode 100644 index 0000000..46b189c --- /dev/null +++ b/examples/EC12-2.s @@ -0,0 +1,6 @@ + MOV R0 0 + MOV R2 3 + STR R0 65535 R2 + LDR R1 R0 65535 + RET R1 + diff --git a/examples/EC13.s b/examples/EC13.s new file mode 100644 index 0000000..b234243 --- /dev/null +++ b/examples/EC13.s @@ -0,0 +1,6 @@ + MOV R0 1 + MOV R2 3 + STR R0 65535 R2 + LDR R1 R0 65535 + RET R1 + diff --git a/examples/EC14.s b/examples/EC14.s new file mode 100644 index 0000000..78dace8 --- /dev/null +++ b/examples/EC14.s @@ -0,0 +1,3 @@ + MOV R0 1 + LDR R32 R0 1 + RET R32 diff --git a/examples/EC15.s b/examples/EC15.s new file mode 100644 index 0000000..407f5f7 --- /dev/null +++ b/examples/EC15.s @@ -0,0 +1,8 @@ + MOV R-1 0 + MOV R2 2 + MOV R3 1 + JZ R-1 2 + SUB R0 R2 R3 + ADD R4 R2 R3 + RET R4 + diff --git a/examples/EC16.s b/examples/EC16.s new file mode 100644 index 0000000..1b9e17a --- /dev/null +++ b/examples/EC16.s @@ -0,0 +1,7 @@ + MOV R1 0 + MOV R2 2 + MOV R3 1 + JZ R1 -5 + SUB R0 R2 R3 + ADD R4 R2 R3 + RET R4 diff --git a/examples/EC17-1.s b/examples/EC17-1.s new file mode 100644 index 0000000..997867b --- /dev/null +++ b/examples/EC17-1.s @@ -0,0 +1,8 @@ + MOV R1 0 + MOV R2 2 + MOV R3 1 + JZ R1 1 + SUB R0 R2 R3 + ADD R4 R2 R3 + RET R4 + diff --git a/examples/EC17-2.s b/examples/EC17-2.s new file mode 100644 index 0000000..0e2d636 --- /dev/null +++ b/examples/EC17-2.s @@ -0,0 +1,9 @@ + MOV R1 0 + MOV R2 2 + MOV R3 1 + MOV R4 5 + JZ R1 3 + SUB R0 R2 R3 + ADD R4 R2 R3 + RET R4 + diff --git a/examples/EC18.s b/examples/EC18.s new file mode 100644 index 0000000..7c5ea9b --- /dev/null +++ b/examples/EC18.s @@ -0,0 +1,7 @@ + MOV R1 0 + MOV R2 2 + MOV R3 1 + JZ R1 3 + SUB R0 R2 R3 + ADD R4 R2 R3 + RET R4 diff --git a/examples/EC19.s b/examples/EC19.s new file mode 100644 index 0000000..acc1443 --- /dev/null +++ b/examples/EC19.s @@ -0,0 +1,8 @@ + MOV R32 0 + MOV R2 2 + MOV R3 1 + JZ R32 2 + SUB R0 R2 R3 + ADD R4 R2 R3 + RET R4 + diff --git a/examples/EC2.s b/examples/EC2.s new file mode 100644 index 0000000..386c61c --- /dev/null +++ b/examples/EC2.s @@ -0,0 +1,5 @@ + MOV R1 1 + MOV R2 2 + ADD R-1 R1 R2 + RET R-1 + diff --git a/examples/EC20.s b/examples/EC20.s new file mode 100644 index 0000000..652b281 --- /dev/null +++ b/examples/EC20.s @@ -0,0 +1,4 @@ + ERC R1 R2 + YGT R3 R1 R2 + RET R3 + diff --git a/examples/EC21.s b/examples/EC21.s new file mode 100644 index 0000000..257a7d7 --- /dev/null +++ b/examples/EC21.s @@ -0,0 +1,2 @@ + MOV R1 1 + MOV R2 2 diff --git a/examples/EC3-1.s b/examples/EC3-1.s new file mode 100644 index 0000000..f44acab --- /dev/null +++ b/examples/EC3-1.s @@ -0,0 +1,5 @@ + MOV R1 1 + MOV R2 2 + ADD R0 R1 R2 + RET R0 + diff --git a/examples/EC3-2.s b/examples/EC3-2.s new file mode 100644 index 0000000..855320f --- /dev/null +++ b/examples/EC3-2.s @@ -0,0 +1,5 @@ + MOV R1 1 + MOV R2 2 + ADD R31 R1 R2 + RET R31 + diff --git a/examples/EC4.s b/examples/EC4.s new file mode 100644 index 0000000..b693c15 --- /dev/null +++ b/examples/EC4.s @@ -0,0 +1,5 @@ + MOV R1 1 + MOV R2 2 + ADD R32 R1 R2 + RET R32 + diff --git a/examples/EC5.s b/examples/EC5.s new file mode 100644 index 0000000..2558071 --- /dev/null +++ b/examples/EC5.s @@ -0,0 +1,4 @@ + MOV R-1 1 + MOV R2 2 + ADD R3 R-1 R2 + RET R3 diff --git a/examples/EC6.s b/examples/EC6.s new file mode 100644 index 0000000..fdd1682 --- /dev/null +++ b/examples/EC6.s @@ -0,0 +1,5 @@ + MOV R0 -65536 + MOV R1 2 + ADD R3 R0 R1 + RET R3 + diff --git a/examples/EC7-1.s b/examples/EC7-1.s new file mode 100644 index 0000000..b888d48 --- /dev/null +++ b/examples/EC7-1.s @@ -0,0 +1,4 @@ + MOV R0 -65535 + MOV R1 2 + ADD R3 R0 R1 + RET R3 diff --git a/examples/EC7-2.s b/examples/EC7-2.s new file mode 100644 index 0000000..b70382e --- /dev/null +++ b/examples/EC7-2.s @@ -0,0 +1,5 @@ + MOV R0 65535 + MOV R1 2 + ADD R3 R0 R1 + RET R3 + diff --git a/examples/EC8.s b/examples/EC8.s new file mode 100644 index 0000000..7b586eb --- /dev/null +++ b/examples/EC8.s @@ -0,0 +1,5 @@ + MOV R0 65536 + MOV R1 2 + ADD R3 R0 R1 + RET R3 + diff --git a/examples/EC9.s b/examples/EC9.s new file mode 100644 index 0000000..4934ecf --- /dev/null +++ b/examples/EC9.s @@ -0,0 +1,5 @@ + MOV R32 1 + MOV R1 2 + ADD R3 R32 R1 + RET R3 + diff --git a/mutants/mutant-1/swen90006/machine/Machine.java b/mutants/mutant-1/swen90006/machine/Machine.java index 3dd0f55..9bf5731 100644 --- a/mutants/mutant-1/swen90006/machine/Machine.java +++ b/mutants/mutant-1/swen90006/machine/Machine.java @@ -198,7 +198,7 @@ public class Machine toks = inst.split("\\s+"); /* check minimum number of tokens */ - if (toks.length >= 2){ + if (toks.length < 2){ throw new InvalidInstructionException(); } diff --git a/mutants/mutant-2/swen90006/machine/Machine.java b/mutants/mutant-2/swen90006/machine/Machine.java index 0939a8c..1ff5cbf 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]); diff --git a/test/swen90006/machine/BoundaryTests.java b/test/swen90006/machine/BoundaryTests.java index 61ce1ca..77ad3e3 100644 --- a/test/swen90006/machine/BoundaryTests.java +++ b/test/swen90006/machine/BoundaryTests.java @@ -52,24 +52,182 @@ public class BoundaryTests assertEquals(m.execute(lines), 45); } + @Test public void EC1() + { + final List<String> lines = readInstructions("examples/EC1.s"); + Machine m = new Machine(); + assertEquals(m.execute(lines), 1); + } + + @Test(expected = swen90006.machine.InvalidInstructionException.class) + public void EC2() + { + final List<String> lines = readInstructions("examples/EC2.s"); + Machine m = new Machine(); + m.execute(lines); + } + + @Test public void EC31() + { + final List<String> lines = readInstructions("examples/EC3-1.s"); + Machine m = new Machine(); + assertEquals(m.execute(lines), 3); + } + + @Test public void EC32() + { + final List<String> lines = readInstructions("examples/EC3-2.s"); + Machine m = new Machine(); + assertEquals(m.execute(lines), 3); + } + + @Test(expected = swen90006.machine.InvalidInstructionException.class) + public void EC4() + { + final List<String> lines = readInstructions("examples/EC4.s"); + Machine m = new Machine(); + m.execute(lines); + } + + @Test(expected = swen90006.machine.InvalidInstructionException.class) + public void EC5() + { + final List<String> lines = readInstructions("examples/EC5.s"); + Machine m = new Machine(); + m.execute(lines); + } + + @Test(expected = swen90006.machine.InvalidInstructionException.class) + public void EC6() + { + final List<String> lines = readInstructions("examples/EC6.s"); + Machine m = new Machine(); + m.execute(lines); + } + + @Test public void EC71() + { + final List<String> lines = readInstructions("examples/EC7-1.s"); + Machine m = new Machine(); + assertEquals(m.execute(lines), -65533); + } + + @Test public void EC72() + { + final List<String> lines = readInstructions("examples/EC7-2.s"); + Machine m = new Machine(); + assertEquals(m.execute(lines), 65537); + } + + @Test(expected = swen90006.machine.InvalidInstructionException.class) + public void EC8() + { + final List<String> lines = readInstructions("examples/EC8.s"); + Machine m = new Machine(); + m.execute(lines); + } + + @Test(expected = swen90006.machine.InvalidInstructionException.class) + public void EC9() + { + final List<String> lines = readInstructions("examples/EC9.s"); + Machine m = new Machine(); + m.execute(lines); + } + + @Test(expected = swen90006.machine.InvalidInstructionException.class) + public void EC10() + { + final List<String> lines = readInstructions("examples/EC10.s"); + Machine m = new Machine(); + m.execute(lines); + } + + @Test public void EC11() + { + final List<String> lines = readInstructions("examples/EC11.s"); + Machine m = new Machine(); + assertEquals(m.execute(lines), 0); + } + + @Test public void EC121() + { + final List<String> lines = readInstructions("examples/EC12-1.s"); + Machine m = new Machine(); + assertEquals(m.execute(lines), 3); + } + + @Test public void EC122() + { + final List<String> lines = readInstructions("examples/EC12-2.s"); + Machine m = new Machine(); + assertEquals(m.execute(lines), 3); + } + + @Test public void EC13() + { + final List<String> lines = readInstructions("examples/EC13.s"); + Machine m = new Machine(); + assertEquals(m.execute(lines), 0); + } + + @Test(expected = swen90006.machine.InvalidInstructionException.class) + public void EC14() + { + final List<String> lines = readInstructions("examples/EC14.s"); + Machine m = new Machine(); + m.execute(lines); + } + + @Test(expected = swen90006.machine.InvalidInstructionException.class) + public void EC15() + { + final List<String> lines = readInstructions("examples/EC15.s"); + Machine m = new Machine(); + m.execute(lines); + } + + @Test(expected = swen90006.machine.NoReturnValueException.class) + public void EC16() + { + final List<String> lines = readInstructions("examples/EC16.s"); + Machine m = new Machine(); + m.execute(lines); + } + + @Test public void EC171() + { + final List<String> lines = readInstructions("examples/EC17-1.s"); + Machine m = new Machine(); + assertEquals(m.execute(lines), 3); + } + + @Test public void EC172() + { + final List<String> lines = readInstructions("examples/EC17-2.s"); + Machine m = new Machine(); + assertEquals(m.execute(lines), 5); + } + + //To test an exception, specify the expected exception after the @Test - @Test(expected = java.io.IOException.class) + /* @Test(expected = java.io.IOException.class) public void anExceptionTest() throws Throwable { throw new java.io.IOException(); - } + }*/ //This test should fail. //To provide additional feedback when a test fails, an error message //can be included - @Test public void aFailedTest() + /*@Test public void aFailedTest() { //include a message for better feedback final int expected = 2; final int actual = 1 + 2; assertEquals("Some failure message", expected, actual); - } + }*/ //Read in a file containing a program and convert into a list of //string instructions diff --git a/test/swen90006/machine/PartitioningTests.java b/test/swen90006/machine/PartitioningTests.java index 5494b44..aad359d 100644 --- a/test/swen90006/machine/PartitioningTests.java +++ b/test/swen90006/machine/PartitioningTests.java @@ -53,23 +53,23 @@ public class PartitioningTests } //To test an exception, specify the expected exception after the @Test - @Test(expected = java.io.IOException.class) + /*@Test(expected = java.io.IOException.class) public void anExceptionTest() throws Throwable { throw new java.io.IOException(); - } + }*/ //This test should fail. //To provide additional feedback when a test fails, an error message //can be included - @Test public void aFailedTest() + /*@Test public void aFailedTest() { //include a message for better feedback final int expected = 2; final int actual = 1 + 2; assertEquals("Some failure message", expected, actual); - } + }*/ //Read in a file containing a program and convert into a list of //string instructions -- GitLab