aboutsummaryrefslogtreecommitdiff
path: root/qtmips_machine/tests/testmemory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qtmips_machine/tests/testmemory.cpp')
-rw-r--r--qtmips_machine/tests/testmemory.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/qtmips_machine/tests/testmemory.cpp b/qtmips_machine/tests/testmemory.cpp
index 091c26d..f1c6b80 100644
--- a/qtmips_machine/tests/testmemory.cpp
+++ b/qtmips_machine/tests/testmemory.cpp
@@ -103,3 +103,61 @@ void MachineTests::memory_compare() {
m3.write_byte(0x18, 0x22);
QVERIFY(m1 != m3);
}
+
+void MachineTests::memory_write_ctl_data() {
+ QTest::addColumn<MemoryAccess::AccessControl>("ctl");
+ QTest::addColumn<Memory>("result");
+
+ Memory mem;
+ QTest::newRow("none") << MemoryAccess::AC_NONE \
+ << mem;
+ mem.write_byte(0x20, 0x26);
+ QTest::newRow("byte") << MemoryAccess::AC_BYTE \
+ << mem;
+ QTest::newRow("byte-unsigned") << MemoryAccess::AC_BYTE_UNSIGNED \
+ << mem;
+ mem.write_hword(0x20, 0x2526);
+ QTest::newRow("halfword") << MemoryAccess::AC_HALFWORD \
+ << mem;
+ QTest::newRow("haldword-unsigned") << MemoryAccess::AC_HALFWORD_UNSIGNED \
+ << mem;
+ mem.write_word(0x20, 0x23242526);
+ QTest::newRow("word") << MemoryAccess::AC_WORD \
+ << mem;
+}
+
+void MachineTests::memory_write_ctl() {
+ QFETCH(MemoryAccess::AccessControl, ctl);
+ QFETCH(Memory, result);
+
+ Memory mem;
+ mem.write_ctl(ctl, 0x20, 0x23242526);
+ QCOMPARE(mem, result);
+}
+
+void MachineTests::memory_read_ctl_data() {
+ QTest::addColumn<MemoryAccess::AccessControl>("ctl");
+ QTest::addColumn<std::uint32_t>("result");
+
+ QTest::newRow("none") << MemoryAccess::AC_NONE \
+ << (std::uint32_t)0;
+ QTest::newRow("byte") << MemoryAccess::AC_BYTE \
+ << (std::uint32_t)0x80000023;
+ QTest::newRow("halfword") << MemoryAccess::AC_HALFWORD \
+ << (std::uint32_t)0x80002324;
+ QTest::newRow("word") << MemoryAccess::AC_WORD \
+ << (std::uint32_t)0xA3242526;
+ QTest::newRow("byte-unsigned") << MemoryAccess::AC_BYTE_UNSIGNED \
+ << (std::uint32_t)0xA3;
+ QTest::newRow("halfword-unsigned") << MemoryAccess::AC_HALFWORD_UNSIGNED \
+ << (std::uint32_t)0xA324;
+}
+
+void MachineTests::memory_read_ctl() {
+ QFETCH(MemoryAccess::AccessControl, ctl);
+ QFETCH(std::uint32_t, result);
+
+ Memory mem;
+ mem.write_word(0x20, 0xA3242526);
+ QCOMPARE(mem.read_ctl(ctl, 0x20), result);
+}