diff --git a/test/swen90006/machine/PartitioningTests.java b/test/swen90006/machine/PartitioningTests.java
new file mode 100644
index 0000000000000000000000000000000000000000..135dfeba246418adb46d51f459e199c64790d22b
--- /dev/null
+++ b/test/swen90006/machine/PartitioningTests.java
@@ -0,0 +1,805 @@
+package swen90006.machine;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.nio.charset.Charset;
+import java.nio.file.Path;
+import java.nio.file.Files;
+import java.nio.file.FileSystems;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+import org.junit.Rule;
+import org.junit.rules.ExpectedException;
+
+public class PartitioningTests
+{
+  //Any method annotated with "@Before" will be executed before each test,
+  //allowing the tester to set up some shared resources.
+  @Before public void setUp()
+  {
+  }
+
+  //Any method annotated with "@After" will be executed after each test,
+  //allowing the tester to release any shared resources used in the setup.
+  @After public void tearDown()
+  {
+  }
+
+  //Any method annotation with "@Test" is executed as a test.
+@Rule
+public ExpectedException thrown= ExpectedException.none();
+
+//ADD R10 R-1 R10;(Off point)
+@Test public void Add_Regsiter_1()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("add R10 R-5 R10;");
+    list.add("ret R10;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//ADD R10 R32 R10;(Off point)
+@Test public void Add_Regsiter_2()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("add R10 r40 R10;");
+    list.add("ret R10;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//ADD R10 R10 R20;(On point)
+@Test
+public void Add_Regsiter_3(){
+   try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("add R10 R20 R10;");
+    list.add("ret R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+@Test public void ADD_Value_1()
+{ 
+      //execute code that you expect not to throw Exceptions.
+    List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 1;");
+    list.add("MOV R1 2;");
+    list.add("MOV R2 1;");
+    list.add("ADD R1 R1 R2;");
+    list.add("RET R1;");
+    assertEquals(3, m.execute(list));
+}
+//MOV R-1  200;(Off point)
+@Test public void ADD_X()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("ADD R0;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//SUB R10 R32 R10;(Off point)
+@Test public void Sub_Regsiter_1()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("sub R10 r40 R10;");
+    list.add("ret R10;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//SUB R10 R-1 R10;(Off point)
+@Test public void Sub_Regsiter_2()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("Sub R10 r-5 R10;");
+    list.add("ret R10;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//SUB R10 R10 R20;(On point)
+@Test public void Sub_Regsiter_3(){
+   try{
+      //execute code that you expect not to throw Exceptions.
+    List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("sub R10 R20 R10;");
+    list.add("ret R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+@Test public void Sub_Value_1()
+{ 
+      //execute code that you expect not to throw Exceptions.
+    List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 1;");
+    list.add("MOV R1 2;");
+    list.add("MOV R2 1;");
+    list.add("SUB R1 R1 R2;");
+    list.add("RET R1;");
+    assertEquals(1, m.execute(list));
+}
+@Test public void SUB_X()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("SUB R0;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//Mul R10 R32 R10;(Off point)
+@Test public void Mul_Regsiter_1()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("Mul R10 r40 R10;");
+    list.add("ret R10;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//mUL R10 R-1 R10;(Off point)
+@Test public void Mul_Regsiter_2()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("Mul R10 r-5 R10;");
+    list.add("ret R10;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//SUB R10 R10 R20;(On point)
+@Test public void Mul_Regsiter_3(){
+   try{
+      //execute code that you expect not to throw Exceptions.
+    List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("Mul R10 R20 R10;");
+    list.add("ret R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+@Test public void Mul_Value_1()
+{ 
+      //execute code that you expect not to throw Exceptions.
+    List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 1;");
+    list.add("MOV R1 2;");
+    list.add("MOV R2 1;");
+    list.add("Mul R1 R1 R2;");
+    list.add("RET R1;");
+    assertEquals(2, m.execute(list));
+}
+@Test public void MUL_X()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MUL R0;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//Div R10 R32 R10;(Off point)
+@Test public void Div_Regsiter_1()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("Div R10 r40 R10;");
+    list.add("ret R10;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//Div R10 R-1 R10;(Off point)
+@Test public void Div_Regsiter_2()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("Div R10 r-5 R10;");
+    list.add("ret R10;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//DIV R10 R10 R20;(On point)
+@Test public void Div_Regsiter_3(){
+   try{
+      //execute code that you expect not to throw Exceptions.
+    List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("mov r10 2");
+    list.add("div R10 R20 R10;");
+    list.add("ret R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+@Test public void Div_Value_1()
+{ 
+      //execute code that you expect not to throw Exceptions.
+    List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 1;");
+    list.add("MOV R1 4;");
+    list.add("MOV R2 2;");
+    list.add("DIV R1 R1 R2;");
+    list.add("RET R1;");
+    assertEquals(2, m.execute(list));
+}
+@Test public void Div_Value_2()
+{ 
+      //execute code that you expect not to throw Exceptions.
+    List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 0;");
+    list.add("MOV R1 4;");
+    list.add("MOV R2 2;");
+    list.add("DIV R1 R1 R10;");
+    list.add("RET R1;");
+    m.execute(list);
+}
+@Test public void DIV_X()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("DIV R0 R1;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//RET R-1;(Off point)
+@Test public void Ret_Regsiter_1()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("ret r-5;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//RET R32;(Off point)
+@Test public void Ret_Regsiter_2()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("ret r40;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//RET R10;(On point)
+@Test public void Ret_Regsiter_3(){
+   try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("ret R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+//RET R20;(On point)
+@Test public void Ret_Regsiter_4(){
+   try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("ret R20 R31;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+   }
+   catch(NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+//MOV R-1  200;(Off point)
+@Test public void Mov_Regsiter_1()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R-1 200;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//MOV R-1  200;(Off point)
+@Test public void Mov_Regsiter_X()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R0;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//MOV R10 200;(On point)
+@Test public void Mov_Regsiter_2()
+{ 
+    try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 200;");
+    list.add("Ret R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+//MOV R20 200;(On point)
+@Test public void Mov_Regsiter_3()
+{ 
+    try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R20 200;");
+    list.add("Ret R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+//MOV R32  200;(Off point)
+@Test public void Mov_Regsiter_4()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R32 200;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//MOV R10 65536;(Off point)
+@Test public void Mov_Value_1()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 65536;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//MOV R10  -65536;(Off point)
+@Test public void Mov_Value_2()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10  -65536;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//MOV R10  -200;(On point)
+@Test public void Mov_Value_3()
+{ 
+    try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10  -200;");
+    list.add("Ret R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+//LDR R1 R-1  200;(Off point)
+@Test public void LDR_Regsiter_1()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("LDR R1 R-1  200;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//LDR R1 R10 200;(On point)
+@Test public void LDR_Regsiter_2()
+{ 
+    try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("LDR R1 R10 200;");
+    list.add("Ret R1;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+//LDR R1 R20  200;(On point)
+@Test public void LDR_Regsiter_3()
+{ 
+    try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("LDR R1 R20  200;");
+    list.add("Ret R1;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+//LDR R1 R32  200;(Off point)
+@Test public void LDR_Regsiter_4()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("LDR R1 R32  200;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//LDR R1 R10  -65536;(Off point)
+@Test public void LDR_Value_1()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("R1 R10  -65536;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//LDR R1 R10  -200;(On point)
+@Test public void LDR_Value_2()
+{ 
+    try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10  -200;");
+    list.add("Ret R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+//LDR R1 R10  65536;(On point)
+@Test public void LDR_Value_3()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("R1 R10  65536;");
+    list.add("Ret R1;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//b+val<0
+@Test public void LDR_Value_4()
+{ 
+    try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R20 1;");
+    list.add("LDR R10 R20 -2;");
+    list.add("RET R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+//b+val=0
+@Test public void LDR_Value_5()
+{ 
+    try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R20 1;");
+    list.add("LDR R10 R20 -1;");
+    list.add("RET R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+// b+val=200
+@Test public void LDR_Value_6()
+{ 
+    try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R20 0;");
+    list.add("LDR R10 R20 200;");
+    list.add("RET R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+// b+val=65536
+@Test public void LDR_Value_7()
+{ 
+    try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R20 1;");
+    list.add("LDR R10 R20 200;");
+    list.add("RET R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+@Test public void LDR_X()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("LDR R0 R1;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//JMP -65536;(Off point)
+@Test public void Jmp_Value_1()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("JMP -65536;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//JMP -200;(On point)
+@Test public void JMP_Value_2()
+{  List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("JMP -200;");
+    thrown.expect(NoReturnValueException.class);
+    m.execute(list);
+}
+//JMP 200(On point)
+@Test public void JMP_Value_3()
+{  List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("JMP 200;");
+    thrown.expect(NoReturnValueException.class);
+    m.execute(list);
+}
+//JMP 65536;(Off point)
+@Test public void Jmp_Value_4()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("JMP 65536;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//JMP pc+val = -1;(Off point)
+@Test public void JMP_Value_5()
+{  List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 1;");
+    list.add("JMP -2;");
+    list.add("RET R10;");
+    thrown.expect(NoReturnValueException.class);
+    m.execute(list);
+}
+//JMP pc+val = progLength;(On point)
+@Test public void JMP_Value_6()
+{ 
+    try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 1;");
+    list.add("JMP 1;");
+    list.add("RET R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+//JMP pc+val = progLength+1;(Off point)
+@Test public void JMP_Value_7()
+{  List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 1;");
+    list.add("JMP 2;");
+    list.add("RET R10;");
+    thrown.expect(NoReturnValueException.class);
+    m.execute(list);
+}
+@Test public void JMP_X()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("JMP R0;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//JZ R-1 200;(Off point)
+@Test public void JZ_Regsiter_1()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("JZ R-1 200;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//JZ R10 200;(On point)
+@Test public void JZ_Regsiter_2()
+{ 
+    try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("mov R10 1;");
+    list.add("JZ R10 200;");
+    list.add("RET R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+@Test public void JZ_Regsiter_3()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("mov R10 0;");
+    list.add("JZ R10 200;");
+    list.add("RET R10;");
+    thrown.expect(NoReturnValueException.class);
+    m.execute(list);
+}
+//JZ R20 200;(On point)
+@Test public void JZ_Regsiter_4()
+{ 
+    try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("mov R20 1;");
+    list.add("JZ R20 200;");
+    list.add("RET R20;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+@Test public void JZ_Regsiter_5()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("mov R20 0;");
+    list.add("JZ R20 200;");
+    list.add("RET R20;");
+    thrown.expect(NoReturnValueException.class);
+    m.execute(list);
+}
+//JZ R32 200;(Off point)
+@Test public void JZ_Regsiter_6()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("JZ R32 200;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//JZ R10 65536;(Off point)
+@Test public void JZ_Value_1()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 0;");
+    list.add("JZ R10 65536;");
+    list.add("RET R20;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//JZ R10 -200
+@Test public void JZ_Value_2()
+{ 
+    try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("mov R20 1;");
+    list.add("JZ R20 -200;");
+    list.add("RET R20;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+@Test public void JZ_Value_3()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("mov R20 0;");
+    list.add("JZ R20 -200;");
+    list.add("RET R20;");
+    thrown.expect(NoReturnValueException.class);
+    m.execute(list);
+}
+//JZ R10 -65536;(Off point)
+@Test public void JZ_Value_4()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 0;");
+    list.add("JZ R10 -65536;");
+    list.add("RET R20;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+//JZ R10 pc+val = -1;(Off point)
+@Test public void JZ_Value_5()
+{  List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 0;");
+    list.add("JZ R10 -2;");
+    list.add("RET R10;");
+    thrown.expect(NoReturnValueException.class);
+    m.execute(list);
+}
+//JZ R10 pc+val = -1;(Off point)
+@Test public void JZ_Value_6()
+{ 
+    try{
+      //execute code that you expect not to throw Exceptions.
+      List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 1;");
+    list.add("JZ R10 -2;");
+    list.add("RET R10;");
+    m.execute(list);
+   }
+   catch(InvalidInstructionException | NoReturnValueException e){
+      fail("Should not have thrown any exception");
+   }
+}
+//JMP pc+val = progLength;(On point)
+@Test public void JZ_Value_7()
+{ 
+      //execute code that you expect not to throw Exceptions.
+    List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 1;");
+    list.add("MOV R1 2;");
+    list.add("MOV R2 1;");
+    list.add("JZ R10 2;");
+    list.add("ADD R1 R1 R2;");
+    list.add("RET R1;");
+    assertEquals(3, m.execute(list));
+
+}
+@Test public void JZ_Value_8()
+{ 
+      //execute code that you expect not to throw Exceptions.
+    List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 0;");
+    list.add("MOV R1 2;");
+    list.add("MOV R2 1;");
+    list.add("JZ R10 2;");
+    list.add("ADD R1 R1 R2;");
+    list.add("RET R1;");
+    assertEquals(2, m.execute(list));
+
+}
+//JMP pc+val = progLength+1;(Off point)
+@Test public void JZ_Value_9()
+{ 
+      //execute code that you expect not to throw Exceptions.
+    List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 0;");
+    list.add("MOV R1 2;");
+    list.add("MOV R2 1;");
+    list.add("JZ R10 3;");
+    list.add("ADD R1 R1 R2;");
+    list.add("RET R1;");
+    thrown.expect(NoReturnValueException.class);
+    m.execute(list);
+}
+@Test public void JZ_Value_10()
+{ 
+      //execute code that you expect not to throw Exceptions.
+    List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("MOV R10 1;");
+    list.add("MOV R1 2;");
+    list.add("MOV R2 1;");
+    list.add("JZ R10 3;");
+    list.add("ADD R1 R1 R2;");
+    list.add("RET R1;");
+    assertEquals(3, m.execute(list));
+}
+@Test public void JZ_X()
+{ List<String> list = new ArrayList<>();
+    Machine m =new Machine();
+    list.add("JZ R0;");
+    thrown.expect(InvalidInstructionException.class);
+    m.execute(list);
+}
+}