More test cases
This commit is contained in:
@@ -14,6 +14,8 @@ public class AbstractMachineTests {
|
|||||||
assertTrue(tram.isHalted(), "Machine should halt.");
|
assertTrue(tram.isHalted(), "Machine should halt.");
|
||||||
int y = tram.results().get(1);
|
int y = tram.results().get(1);
|
||||||
assertEquals(28, y, "Expected y = 6*3 + 5*2 = 28.");
|
assertEquals(28, y, "Expected y = 6*3 + 5*2 = 28.");
|
||||||
|
int x = tram.results().get(0);
|
||||||
|
assertEquals(6, x, "See test output.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -24,8 +26,9 @@ public class AbstractMachineTests {
|
|||||||
|
|
||||||
assertTrue(tram.isHalted(), "Machine should halt.");
|
assertTrue(tram.isHalted(), "Machine should halt.");
|
||||||
var results = tram.results();
|
var results = tram.results();
|
||||||
assertEquals(200, results.get(results.size() - 2), "Expected value 200 since x!=0.");
|
assertEquals(200, results.get(1), "Expected value 200 since x!=0.");
|
||||||
assertEquals(3, results.getLast(), "Expected final constant 3 on stack.");
|
assertEquals(3, results.get(2), "Expected final constant 3 on stack.");
|
||||||
|
assertEquals(10, results.get(0), "See test output.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -40,7 +43,7 @@ public class AbstractMachineTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testSquareFunction() {
|
void testSquare() {
|
||||||
Instruction[] code = Assembler.readTRAMCode("tramcode/square.tram");
|
Instruction[] code = Assembler.readTRAMCode("tramcode/square.tram");
|
||||||
AbstractMachine tram = new AbstractMachine(code, new Integer[]{}); // empty stack
|
AbstractMachine tram = new AbstractMachine(code, new Integer[]{}); // empty stack
|
||||||
tram.execute();
|
tram.execute();
|
||||||
@@ -62,7 +65,7 @@ public class AbstractMachineTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testWrapperSquare() {
|
void testWrappedSquare() {
|
||||||
Instruction[] code = Assembler.readTRAMCode("tramcode/wrapper.tram");
|
Instruction[] code = Assembler.readTRAMCode("tramcode/wrapper.tram");
|
||||||
AbstractMachine tram = new AbstractMachine(code, new Integer[]{}); // empty stack
|
AbstractMachine tram = new AbstractMachine(code, new Integer[]{}); // empty stack
|
||||||
tram.execute();
|
tram.execute();
|
||||||
@@ -116,6 +119,28 @@ public class AbstractMachineTests {
|
|||||||
assertEquals(5, result, "Expected 37 mod 16 = 5.");
|
assertEquals(5, result, "Expected 37 mod 16 = 5.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testMODx100y7() {
|
||||||
|
Instruction[] code = Assembler.readTRAMCode("tramcode/mod.tram");
|
||||||
|
AbstractMachine tram = new AbstractMachine(code, new Integer[]{100, 7});
|
||||||
|
tram.execute();
|
||||||
|
|
||||||
|
assertTrue(tram.isHalted(), "Machine should halt.");
|
||||||
|
int result = tram.result();
|
||||||
|
assertEquals(2, result, "Expected 100 mod 7 = 2.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testMODx1y10() {
|
||||||
|
Instruction[] code = Assembler.readTRAMCode("tramcode/mod.tram");
|
||||||
|
AbstractMachine tram = new AbstractMachine(code, new Integer[]{1, 10});
|
||||||
|
tram.execute();
|
||||||
|
|
||||||
|
assertTrue(tram.isHalted(), "Machine should halt.");
|
||||||
|
int result = tram.result();
|
||||||
|
assertEquals(1, result, "Expected 1 mod 10 = 1.");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testGGTx17y5() {
|
void testGGTx17y5() {
|
||||||
Instruction[] code = Assembler.readTRAMCode("tramcode/ggt.tram");
|
Instruction[] code = Assembler.readTRAMCode("tramcode/ggt.tram");
|
||||||
@@ -225,4 +250,48 @@ public class AbstractMachineTests {
|
|||||||
int result = tram.result();
|
int result = tram.result();
|
||||||
assertEquals(1, result, "Expected ggt(37,16) = 1.");
|
assertEquals(1, result, "Expected ggt(37,16) = 1.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testGGTx100y50() {
|
||||||
|
Instruction[] code = Assembler.readTRAMCode("tramcode/ggt.tram");
|
||||||
|
AbstractMachine tram = new AbstractMachine(code, new Integer[]{100, 50});
|
||||||
|
tram.execute();
|
||||||
|
|
||||||
|
assertTrue(tram.isHalted(), "Machine should halt.");
|
||||||
|
int result = tram.result();
|
||||||
|
assertEquals(50, result, "Expected ggt(100,50) = 50.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testGGTx13y13() {
|
||||||
|
Instruction[] code = Assembler.readTRAMCode("tramcode/ggt.tram");
|
||||||
|
AbstractMachine tram = new AbstractMachine(code, new Integer[]{13, 13});
|
||||||
|
tram.execute();
|
||||||
|
|
||||||
|
assertTrue(tram.isHalted(), "Machine should halt.");
|
||||||
|
int result = tram.result();
|
||||||
|
assertEquals(13, result, "Expected ggt(13,13) = 13.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testGGTx84y36() {
|
||||||
|
Instruction[] code = Assembler.readTRAMCode("tramcode/ggt.tram");
|
||||||
|
AbstractMachine tram = new AbstractMachine(code, new Integer[]{84, 36});
|
||||||
|
tram.execute();
|
||||||
|
|
||||||
|
assertTrue(tram.isHalted(), "Machine should halt.");
|
||||||
|
int result = tram.result();
|
||||||
|
assertEquals(12, result, "Expected ggt(84,36) = 12.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testGGTx1y100() {
|
||||||
|
Instruction[] code = Assembler.readTRAMCode("tramcode/ggt.tram");
|
||||||
|
AbstractMachine tram = new AbstractMachine(code, new Integer[]{1, 100});
|
||||||
|
tram.execute();
|
||||||
|
|
||||||
|
assertTrue(tram.isHalted(), "Machine should halt.");
|
||||||
|
int result = tram.result();
|
||||||
|
assertEquals(1, result, "Expected ggt(1,100) = 1.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user