Files
juiceboy/juiceboy/test/memory_region_test.cpp
T

45 lines
1.3 KiB
C++

#include "juiceboy/memory_region.hpp"
#include <gtest/gtest.h>
namespace juiceboy::test {
TEST(MemoryRegion, DefaultConstructorZeroesEverythingOut) {
constexpr MemoryRegion<0x00, 0x02> region;
EXPECT_EQ(region.ReadByte(0x00), 0);
EXPECT_EQ(region.ReadByte(0x01), 0);
}
TEST(MemoryRegion, ConstructorSetsGivenValues) {
constexpr MemoryRegion<0x00, 0x02> region{{0xFF, 0xFF}};
EXPECT_EQ(region.ReadByte(0x00), 0xFF);
EXPECT_EQ(region.ReadByte(0x01), 0xFF);
}
TEST(MemoryRegion, StartAddressTranslatesAddressCorrectly) {
constexpr MemoryRegion<0x2, 0x02> region{{0xFF, 0xFF}};
EXPECT_EQ(region.ReadByte(0x02), 0xFF);
EXPECT_EQ(region.ReadByte(0x03), 0xFF);
}
TEST(MemoryRegion, WriteByteUpdatesValue) {
MemoryRegion<0x0, 0x2> region;
region.WriteByte(0x0, 0x1);
EXPECT_EQ(region.ReadByte(0x0), 0x1);
}
TEST(MemoryRegion, ReadByteOutOfRangeThrows) {
constexpr MemoryRegion<0x0, 0x02> region;
EXPECT_THROW((void)region.ReadByte(0xFF), std::invalid_argument);
}
TEST(MemoryRegion, WriteByteOutOfRangeThrows) {
MemoryRegion<0x0, 0x02> region;
EXPECT_THROW(region.WriteByte(0xFF, 0x0), std::invalid_argument);
}
}