diff --git a/test/swen90006/machine/PartitioningTests.java b/test/swen90006/machine/PartitioningTests.java new file mode 100644 index 0000000000000000000000000000000000000000..1331aa4329bb4576fc35396abdd72f20dd303e7d --- /dev/null +++ b/test/swen90006/machine/PartitioningTests.java @@ -0,0 +1,229 @@ +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.*; + +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() + { + } + + //To test EC5 in Machine. + @Test public void ec5Test() + { + final int expected = 0; + final List<String> instructions = new ArrayList<>(); + instructions.add("RET R0 R1"); + Machine m = new Machine(); + assertEquals(expected, m.execute(instructions)); + } + + //To test EC6 in Machine. + @Test public void ec6Test() + { + final NoReturnValueException expected = new NoReturnValueException(); + final List<String> instructions = new ArrayList<>(); + instructions.add("MOV R0 1"); + instructions.add("MOV R1 1"); + instructions.add("ADD R2 R0 R1"); + Machine m = new Machine(); + try { + m.execute(instructions); + } + catch (NoReturnValueException e){ + assertSame(expected.toString(), e.toString()); + return; + } + assertEquals(expected.toString(), m.execute(instructions)); + } + + //To test EC7 in Machine. + @Test public void ec7Test() + { + final int expected = 0; + final List<String> instructions = new ArrayList<>(); + instructions.add("ADD R2 R0 R1"); + instructions.add("RET R2"); + Machine m = new Machine(); + assertEquals(expected, m.execute(instructions)); + } + + //To test EC8 in Machine. + @Test public void ec8Test() + { + final InvalidInstructionException expected = new InvalidInstructionException(); + final List<String> instructions = new ArrayList<>(); + instructions.add("ADD R2 R0 R32"); + instructions.add("RET R2"); + Machine m = new Machine(); + try { + m.execute(instructions); + } + catch (InvalidInstructionException e){ + assertSame(expected.toString(), e.toString()); + return; + } + assertEquals(expected.toString(), m.execute(instructions)); + } + + //To test EC9 in Machine. + @Test public void ec9Test() + { + final InvalidInstructionException expected = new InvalidInstructionException(); + final List<String> instructions = new ArrayList<>(); + instructions.add("ADD R2 R0"); + instructions.add("RET R2"); + Machine m = new Machine(); + try { + m.execute(instructions); + } + catch (InvalidInstructionException e){ + assertSame(expected.toString(), e.toString()); + return; + } + assertEquals(expected.toString(), m.execute(instructions)); + } + + //To test EC11 in Machine. + @Test public void ec11Test() + { + final InvalidInstructionException expected = new InvalidInstructionException(); + final List<String> instructions = new ArrayList<>(); + instructions.add("LDR R2 R0 -1"); + instructions.add("RET R2"); + Machine m = new Machine(); + try { + m.execute(instructions); + } + catch (InvalidInstructionException e){ + assertSame(expected.toString(), e.toString()); + return; + } + assertEquals(expected.toString(), m.execute(instructions)); + } + + //To test EC13 in Machine. + @Test public void ec13Test() + { + final InvalidInstructionException expected = new InvalidInstructionException(); + final List<String> instructions = new ArrayList<>(); + instructions.add("LDR R2 R0 65536"); + instructions.add("RET R2"); + Machine m = new Machine(); + try { + m.execute(instructions); + } + catch (InvalidInstructionException e){ + assertSame(expected.toString(), e.toString()); + return; + } + assertEquals(expected.toString(), m.execute(instructions)); + } + + //To test EC18 in Machine. + @Test public void ec18Test() + { + final InvalidInstructionException expected = new InvalidInstructionException(); + final List<String> instructions = new ArrayList<>(); + instructions.add("JMP -65536"); + instructions.add("RET R0"); + Machine m = new Machine(); + try { + m.execute(instructions); + } + catch (InvalidInstructionException e){ + assertSame(expected.toString(), e.toString()); + return; + } + assertEquals(expected.toString(), m.execute(instructions)); + } + + //To test EC20 in Machine. + @Test public void ec20Test() + { + final InvalidInstructionException expected = new InvalidInstructionException(); + final List<String> instructions = new ArrayList<>(); + instructions.add("JMP 65536"); + instructions.add("RET R0"); + Machine m = new Machine(); + try { + m.execute(instructions); + } + catch (InvalidInstructionException e){ + assertSame(expected.toString(), e.toString()); + return; + } + assertEquals(expected.toString(), m.execute(instructions)); + } + + //To test EC21 in Machine. + @Test public void ec21Test() + { + final InvalidInstructionException expected = new InvalidInstructionException(); + final List<String> instructions = new ArrayList<>(); + instructions.add("JMP abc"); + instructions.add("RET R0"); + Machine m = new Machine(); + try { + m.execute(instructions); + } + catch (InvalidInstructionException e){ + assertSame(expected.toString(), e.toString()); + return; + } + assertEquals(expected.toString(), m.execute(instructions)); + } + + //To test EC22 in Machine. + @Test public void ec22Test() + { + final InvalidInstructionException expected = new InvalidInstructionException(); + final List<String> instructions = new ArrayList<>(); + instructions.add("RET R0"); + instructions.add("RET R1"); + Machine m = new Machine(); + try { + m.execute(instructions); + } + catch (InvalidInstructionException e){ + assertSame(expected.toString(), e.toString()); + return; + } + assertEquals(expected.toString(), m.execute(instructions)); + } + + //To test EC23 in Machine. + @Test public void ec23Test() + { + final InvalidInstructionException expected = new InvalidInstructionException(); + final List<String> instructions = new ArrayList<>(); + instructions.add("R0"); + Machine m = new Machine(); + try { + m.execute(instructions); + } + catch (InvalidInstructionException e){ + assertSame(expected.toString(), e.toString()); + return; + } + assertEquals(expected.toString(), m.execute(instructions)); + } + +}