diff --git a/test/swen90006/machine/PartitioningTests.java b/test/swen90006/machine/PartitioningTests.java index 5494b44f4615351a610fc7b0b649d30b4b2d0a40..0a2dbe685ce39c7f06ef0c3628980bdf53654f5e 100644 --- a/test/swen90006/machine/PartitioningTests.java +++ b/test/swen90006/machine/PartitioningTests.java @@ -10,81 +10,188 @@ 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() - { - } +public class PartitioningTests { + @Test + public void test1() { + /* mutation: regs[src1] +1 */ + List<String> list = new ArrayList<String>(); + list.add("MOV R0 3"); + list.add("MOV R1 1"); + list.add("DIV R2 R0 R1"); + list.add("RET R2"); + Machine m = new Machine(); + // the assertTrue method is used to check whether something holds. + assertEquals(3, m.execute(list)); + } - //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() - { - } + @Test(expected = InvalidInstructionException.class) + public void test2() { + List<String> list = new ArrayList<String>(); + list.add("MOV R33 33"); + list.add("RET R2"); + Machine m = new Machine(); + m.execute(list); + } - //Any method annotation with "@Test" is executed as a test. - @Test public void aTest() - { - //the assertEquals method used to check whether two values are - //equal, using the equals method - final int expected = 2; - final int actual = 1 + 1; - assertEquals(expected, actual); - } + @Test(expected = InvalidInstructionException.class) + public void test3() { + List<String> list = new ArrayList<String>(); + list.add("MOV R0 1"); + list.add("JMP 1 1"); + list.add("RET R2"); + Machine m = new Machine(); + m.execute(list); + } - @Test public void anotherTest() - { - List<String> list = new ArrayList<String>(); - list.add("a"); - list.add("b"); + @Test + public void test4() { + /* mutation: regs[src1] +1 */ + List<String> list = new ArrayList<String>(); + list.add("RET R19"); + Machine m = new Machine(); + // the assertTrue method is used to check whether something holds. + assertEquals(0, m.execute(list)); + } - //the assertTrue method is used to check whether something holds. - assertTrue(list.contains("a")); - } + @Test + public void test5() { + /* mutation: regs[src1] +1 */ + List<String> list = new ArrayList<String>(); + list.add("LDR R0 R1 655"); + list.add("RET R0"); + Machine m = new Machine(); + // the assertTrue method is used to check whether something holds. + assertEquals(0, m.execute(list)); + } - //Test test opens a file and executes the machine - @Test public void aFileOpenTest() - { - final List<String> lines = readInstructions("examples/array.s"); - Machine m = new Machine(); - assertEquals(m.execute(lines), 45); - } - - //To test an exception, specify the expected exception after the @Test - @Test(expected = java.io.IOException.class) - public void anExceptionTest() - throws Throwable - { - throw new java.io.IOException(); - } + @Test(expected = NoReturnValueException.class) + public void test6() { + /* mutation: regs[src1] +1 */ + List<String> list = new ArrayList<String>(); + list.add(""); + Machine m = new Machine(); + // the assertTrue method is used to check whether something holds. + assertEquals(0, m.execute(list)); + } - //This test should fail. - //To provide additional feedback when a test fails, an error message - //can be included - @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); - } + @Test + public void test7() { + /* mutation: regs[src1] +1 */ + List<String> list = new ArrayList<String>(); + list.add("MOV R3 10"); + list.add("MOV R2 1"); + list.add("MOV R1 0"); + list.add("MOV R0 100"); + list.add("SUB R4 R3 R1"); + list.add("JZ R4 5"); + list.add("STR R0 0 R1"); + list.add("ADD R1 R1 R2"); + list.add("ADD R0 R0 R2"); + list.add("JMP -5"); + list.add("MOV R1 0"); + list.add("MOV R0 100"); + list.add("MOV R5 0"); + list.add("SUB R4 R3 R1"); + list.add("JZ R4 6"); + list.add("LDR R4 R0 0"); + list.add("ADD R5 R5 R4"); + list.add("ADD R0 R0 R2"); + list.add("ADD R1 R1 R2"); + list.add("JMP -6"); + list.add("RET R5"); + list.add(""); + list.add(""); + Machine m = new Machine(); + // the assertTrue method is used to check whether something holds. + assertEquals(45, m.execute(list)); + } - //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; - } + @Test + public void test8() { + /* mutation: regs[src1] +1 */ + List<String> list = new ArrayList<String>(); + for (int i = 0; i <= 31; i++) { + String command="MOV R"+i+" 5"; + list.add(command); + } + list.add("RET R0"); + Machine m = new Machine(); + // the assertTrue method is used to check whether something holds. + assertEquals(5, m.execute(list)); + } + + @Test(expected = InvalidInstructionException.class) + public void test9() { + List<String> list = new ArrayList<String>(); + list.add("MOV R-1 1"); + Machine m = new Machine(); + // the assertTrue method is used to check whether something holds. + m.execute(list); + } + + @Test(expected = InvalidInstructionException.class) + public void test10() { + List<String> list = new ArrayList<String>(); + list.add("MOV R32 1"); + Machine m = new Machine(); + // the assertTrue method is used to check whether something holds. + m.execute(list); + } + + @Test(expected = InvalidInstructionException.class) + public void test11() { + List<String> list = new ArrayList<String>(); + list.add("MOV R0 65536"); + Machine m = new Machine(); + // the assertTrue method is used to check whether something holds. + m.execute(list); + } + + @Test(expected = InvalidInstructionException.class) + public void test12() { + List<String> list = new ArrayList<String>(); + list.add("MOV R0 -65536"); + Machine m = new Machine(); + // the assertTrue method is used to check whether something holds. + m.execute(list); + } + + @Test + public void test13() { + /* mutation: regs[src1] +1 */ + List<String> list = new ArrayList<String>(); + list.add("MOV R0 1"); + list.add("MOV R1 10"); + list.add("DIV R1 R0 R2"); + list.add("RET R1"); + Machine m = new Machine(); + // the assertTrue method is used to check whether something holds. + assertEquals(10, m.execute(list)); + } + + @Test + public void test14() { + /* mutation: regs[src1] +1 */ + List<String> list = new ArrayList<String>(); + list.add("MOV R0 0"); + list.add("JZ R0 2"); + list.add("MOV R0 2"); + list.add("RET R0"); + Machine m = new Machine(); + // the assertTrue method is used to check whether something holds. + assertEquals(0, m.execute(list)); + } + + @Test + public void test15() { + /* mutation: regs[src1] +1 */ + List<String> list = new ArrayList<String>(); + list.add("MOV R0 0"); + list.add("MOV R1 -2"); + list.add("LDR R1 R0 -65535"); + list.add("RET R1"); + Machine m = new Machine(); + // the assertTrue method is used to check whether something holds. + assertEquals(-2, m.execute(list)); + } }