aboutsummaryrefslogtreecommitdiff
path: root/qtmips_machine/tests/testinstruction.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qtmips_machine/tests/testinstruction.cpp')
-rw-r--r--qtmips_machine/tests/testinstruction.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/qtmips_machine/tests/testinstruction.cpp b/qtmips_machine/tests/testinstruction.cpp
index e69de29..4efedac 100644
--- a/qtmips_machine/tests/testinstruction.cpp
+++ b/qtmips_machine/tests/testinstruction.cpp
@@ -0,0 +1,25 @@
+#include "tst_machine.h"
+#include "instruction.h"
+
+// Test that we are correctly encoding instructions in constructor
+void MachineTests::instruction() {
+ QCOMPARE(Instruction(0x00), Instruction(0,0));
+ QCOMPARE(Instruction(0x4000002), Instruction(1, 2));
+ // QCOMPARE(Instruction(0x4000002), Instruction(1, 2, 3, 4));
+ // TODO other combinations
+}
+
+// Test that we are correctly decoding instruction fields
+void MachineTests::instruction_access() {
+ Instruction i(0xffffffff);
+
+ QCOMPARE(i.data(), (std::uint32_t) 0xffffffff);
+ QCOMPARE(i.opcode(), (std::uint8_t) 0x3f);
+ QCOMPARE(i.rs(), (std::uint8_t) 0x1f);
+ QCOMPARE(i.rt(), (std::uint8_t) 0x1f);
+ QCOMPARE(i.rd(), (std::uint8_t) 0x1f);
+ QCOMPARE(i.shamt(), (std::uint8_t) 0x1f);
+ QCOMPARE(i.funct(), (std::uint8_t) 0x3f);
+ QCOMPARE(i.immediate(), (std::uint16_t) 0xffff);
+ QCOMPARE(i.address(), (std::uint32_t) 0x3ffffff);
+}