diff --git a/tests/bus.cc b/tests/bus.cc new file mode 100644 index 0000000..b288103 --- /dev/null +++ b/tests/bus.cc @@ -0,0 +1,45 @@ +#include "bus.hh" +#include + +#define TAG "bus" + +using namespace matar; + +class BusFixture { + public: + BusFixture() + : bus(Memory(std::array(), + std::vector(Header::HEADER_SIZE))) {} + + protected: + Bus bus; +}; + +TEST_CASE_METHOD(BusFixture, "Byte", TAG) { + CHECK(bus.read_byte(3349) == 0); + + bus.write_byte(3349, 0xEC); + CHECK(bus.read_byte(3349) == 0xEC); + CHECK(bus.read_word(3349) == 0xEC); + CHECK(bus.read_halfword(3349) == 0xEC); +} + +TEST_CASE_METHOD(BusFixture, "Halfword", TAG) { + CHECK(bus.read_halfword(33750745) == 0); + + bus.write_halfword(33750745, 0x1A4A); + CHECK(bus.read_halfword(33750745) == 0x1A4A); + CHECK(bus.read_word(33750745) == 0x1A4A); + CHECK(bus.read_byte(33750745) == 0x4A); +} + +TEST_CASE_METHOD(BusFixture, "Word", TAG) { + CHECK(bus.read_word(100724276) == 0); + + bus.write_word(100724276, 0x3ACC491D); + CHECK(bus.read_word(100724276) == 0x3ACC491D); + CHECK(bus.read_halfword(100724276) == 0x491D); + CHECK(bus.read_byte(100724276) == 0x1D); +} + +#undef TAG diff --git a/tests/meson.build b/tests/meson.build index d06ab7c..81007e9 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -5,7 +5,8 @@ tests_deps = [ src = include_directories('../src') tests_sources = files( - 'main.cc' + 'main.cc', + 'bus.cc' ) subdir('cpu')