diff --git a/examples/EC18.s b/examples/EC18.s
index 7c5ea9bf6e651c501be2f86824b953295a8ecc0a..36c2bf3fcb6c323a8e5f8a51f5003a37beb60c8d 100644
--- a/examples/EC18.s
+++ b/examples/EC18.s
@@ -1,7 +1,7 @@
      MOV R1 0
      MOV R2 2
      MOV R3 1
-     JZ R1 3
+     JZ R1 4
      SUB R0 R2 R3
      ADD R4 R2 R3
      RET R4
diff --git a/test/swen90006/machine/BoundaryTests.java b/test/swen90006/machine/BoundaryTests.java
index 77ad3e3b29bbeb0c2c4773a6038d236e654b13cd..8d55d193ccbea0c76c2e46d78f00457abb87f125 100644
--- a/test/swen90006/machine/BoundaryTests.java
+++ b/test/swen90006/machine/BoundaryTests.java
@@ -209,7 +209,37 @@ public class BoundaryTests
     assertEquals(m.execute(lines), 5);
   }
   
+  @Test(expected = swen90006.machine.NoReturnValueException.class)
+  public void EC18()
+  {
+    final List<String> lines = readInstructions("examples/EC18.s");
+    Machine m = new Machine();
+    m.execute(lines);
+  }
+  
+  @Test(expected = swen90006.machine.InvalidInstructionException.class)
+  public void EC19()
+  {
+    final List<String> lines = readInstructions("examples/EC19.s");
+    Machine m = new Machine();
+    m.execute(lines);
+  }
   
+  @Test(expected = swen90006.machine.InvalidInstructionException.class)
+  public void EC20()
+  {
+    final List<String> lines = readInstructions("examples/EC20.s");
+    Machine m = new Machine();
+    m.execute(lines);
+  }
+  
+  @Test(expected = swen90006.machine.NoReturnValueException.class)
+  public void EC21()
+  {
+    final List<String> lines = readInstructions("examples/EC21.s");
+    Machine m = new Machine();
+    m.execute(lines);
+  }
   //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 aad359dadaab3853f9af4f5fc835d3b3af271455..676b17f21266f61f8f01b615574c8c4da40b25e5 100644
--- a/test/swen90006/machine/PartitioningTests.java
+++ b/test/swen90006/machine/PartitioningTests.java
@@ -52,6 +52,194 @@ public class PartitioningTests
     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);
+  }
+  
+  @Test(expected = swen90006.machine.NoReturnValueException.class)
+  public void EC18()
+  {
+    final List<String> lines = readInstructions("examples/EC18.s");
+    Machine m = new Machine();
+    m.execute(lines);
+  }
+  
+  @Test(expected = swen90006.machine.InvalidInstructionException.class)
+  public void EC19()
+  {
+    final List<String> lines = readInstructions("examples/EC19.s");
+    Machine m = new Machine();
+    m.execute(lines);
+  }
+  
+  @Test(expected = swen90006.machine.InvalidInstructionException.class)
+  public void EC20()
+  {
+    final List<String> lines = readInstructions("examples/EC20.s");
+    Machine m = new Machine();
+    m.execute(lines);
+  }
+  
+  @Test(expected = swen90006.machine.NoReturnValueException.class)
+  public void EC21()
+  {
+    final List<String> lines = readInstructions("examples/EC21.s");
+    Machine m = new Machine();
+    m.execute(lines);
+  }
   //To test an exception, specify the expected exception after the @Test
   /*@Test(expected = java.io.IOException.class) 
     public void anExceptionTest()