diff options
author | Karel Kočí <cynerd@email.cz> | 2017-08-30 21:37:53 +0200 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2017-08-30 21:42:02 +0200 |
commit | 9cf92379d5fcf0076c25dae0935daab446c992cd (patch) | |
tree | dd09a2e996db1e5a8117f01bec76f1e93eaca6e1 /qtmips_machine/tests/testmemory.cpp | |
download | qtmips-9cf92379d5fcf0076c25dae0935daab446c992cd.tar.gz qtmips-9cf92379d5fcf0076c25dae0935daab446c992cd.tar.bz2 qtmips-9cf92379d5fcf0076c25dae0935daab446c992cd.zip |
Initial commit
Adding work done so far.
Diffstat (limited to 'qtmips_machine/tests/testmemory.cpp')
-rw-r--r-- | qtmips_machine/tests/testmemory.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/qtmips_machine/tests/testmemory.cpp b/qtmips_machine/tests/testmemory.cpp new file mode 100644 index 0000000..991e1f1 --- /dev/null +++ b/qtmips_machine/tests/testmemory.cpp @@ -0,0 +1,61 @@ +#include "tst_machine.h" +#include "memory.h" + +void MachineTests::memory_data() { + QTest::addColumn<std::uint32_t>("address"); + + QTest::newRow("memory begin") << (std::uint32_t)0x00; + QTest::newRow("memory end") << (std::uint32_t)0xFFFFFFFC; + QTest::newRow("memory midle start") << (std::uint32_t)0xFFFF00; + QTest::newRow("memory midle end") << (std::uint32_t)0xFFFFFF; +} + +void MachineTests::memory() { + Memory m; + + QFETCH(std::uint32_t, address); + + // Uninitialize memory should read as zero + QCOMPARE(m.read_byte(address), (std::uint8_t)0); + QCOMPARE(m.read_hword(address), (std::uint16_t)0); + QCOMPARE(m.read_word(address), (std::uint32_t)0); + // Just a byte + m.write_byte(address, 0x42); + QCOMPARE(m.read_byte(address), (std::uint8_t)0x42); + // Half word + m.write_hword(address, 0x4243); + QCOMPARE(m.read_hword(address), (std::uint16_t)0x4243); + // Word + m.write_word(address, 0x42434445); + QCOMPARE(m.read_word(address), (std::uint32_t)0x42434445); +} + +void MachineTests::memory_section_data() { + QTest::addColumn<std::uint32_t>("address"); + + QTest::newRow("memory begin") << (std::uint32_t)0x00; + QTest::newRow("memory end") << (std::uint32_t)0xFFFFFFFF; + QTest::newRow("memory midle start") << (std::uint32_t)0xFFFF00; + QTest::newRow("memory midle end") << (std::uint32_t)0xFFFFFF; +} + +void MachineTests::memory_section() { + Memory m; + + QFETCH(std::uint32_t, address); + + // First section shouldn't exists + QCOMPARE(m.get_section(address, false), (MemorySection*)nullptr); + // Create section + MemorySection *s = m.get_section(address, true); + QVERIFY(s != nullptr); + + // Write some data to memory + m.write_byte(address, 0x42); + // Read it trough section (mask bits outside of the memory section) + QCOMPARE(s->read_byte(address & ((1 << MEMORY_SECTION_BITS) - 1)), (std::uint8_t)0x42); + // Write some other data trough section + s->write_byte(address & ((1 << MEMORY_SECTION_BITS) - 1), 0x66); + // Read trough memory + QCOMPARE(m.read_byte(address), (std::uint8_t)0x66); +} |