diff --git a/test/swen90006/machine/PartitioningTests.java b/test/swen90006/machine/PartitioningTests.java new file mode 100644 index 0000000000000000000000000000000000000000..dc7d9a7c93492edc76c73e57c21fdca6acc83282 --- /dev/null +++ b/test/swen90006/machine/PartitioningTests.java @@ -0,0 +1,139 @@ +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 int actual = Machine.execute("RET R0 R1"); + assertEquals(expected, actual); + } + + //To test EC6 in Machine. + @Test public void ec6Test() + { + final int expected = NoReturnValueException; + final int actual = Machine.execute({“MOV R0 1”, “MOV R1 1”, “ADD R2 R0 R1”}); + assertEquals(expected, actual); + } + + //To test EC7 in Machine. + @Test public void ec7Test() + { + final int expected = 0; + final int actual = Machine.execute({“ADD R2 R0 R1”, “RET R2”}); + assertEquals(expected, actual); + } + + //To test EC8 in Machine. + @Test public void ec8Test() + { + final int expected = InvalidInstructionException; + final int actual = Machine.execute({“ADD R2 R0 R32”, “RET R2”}); + assertEquals(expected, actual); + } + + //To test EC9 in Machine. + @Test public void ec9Test() + { + final int expected = InvalidInstructionException; + final int actual = Machine.execute({“ADD R2 R0”, “RET R2”}); + assertEquals(expected, actual); + } + + //To test EC11 in Machine. + @Test public void ec11Test() + { + final int expected = InvalidInstructionException; + final int actual = Machine.execute({“LDR R2 R0 -1”, “RET R2”}); + assertEquals(expected, actual); + } + + //To test EC13 in Machine. + @Test public void ec13Test() + { + final int expected = InvalidInstructionException; + final int actual = Machine.execute({“LDR R2 R0 32”, “RET R2”}); + assertEquals(expected, actual); + } + + //To test EC18 in Machine. + @Test public void ec18Test() + { + final int expected = InvalidInstructionException; + final int actual = Machine.execute({“JMP -65536”, “RET R0”}); + assertEquals(expected, actual); + } + + //To test EC20 in Machine. + @Test public void ec20Test() + { + final int expected = InvalidInstructionException; + final int actual = Machine.execute({“JMP 65536”, “RET R0”}); + assertEquals(expected, actual); + } + + //To test EC21 in Machine. + @Test public void ec21Test() + { + final int expected = InvalidInstructionException; + final int actual = Machine.execute({“JMP abc”, “RET R0”}); + assertEquals(expected, actual); + } + + //To test EC22 in Machine. + @Test public void ec22Test() + { + final int expected = InvalidInstructionException; + final int actual = Machine.execute({“RET R0”, “RET R1”}); + assertEquals(expected, actual); + } + + //To test EC23 in Machine. + @Test public void ec23Test() + { + final int expected = InvalidInstructionException; + final int actual = Machine.execute({“R0”}); + assertEquals(expected, actual); + } + + //Read in a file containing a program and convert into a list of + //string instructions + private List<String> readInstructions(String file) + { + Charset charset = Charset.forName("UTF-8"); + List<String> lines = null; + try { + lines = Files.readAllLines(FileSystems.getDefault().getPath(file), charset); + } + catch (Exception e){ + System.err.println("Invalid input file! (stacktrace follows)"); + e.printStackTrace(System.err); + System.exit(1); + } + return lines; + } +}