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