45 lines
1.3 KiB
C++
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);
|
|
}
|
|
}
|