update tests, cleanup old interfaces
This commit is contained in:
@@ -26,32 +26,6 @@ class MockPpu : public PpuInterface {
|
|||||||
MOCK_METHOD(void, Write, (uint16_t address, uint8_t data), (override));
|
MOCK_METHOD(void, Write, (uint16_t address, uint8_t data), (override));
|
||||||
MOCK_METHOD(uint8_t, Read, (uint16_t address), (const, override));
|
MOCK_METHOD(uint8_t, Read, (uint16_t address), (const, override));
|
||||||
|
|
||||||
MOCK_METHOD(void, RenderFrame, (), (override));
|
|
||||||
MOCK_METHOD(void, RenderScanline, (), (override));
|
|
||||||
MOCK_METHOD(void, RenderBackground, (int layer), (override));
|
|
||||||
MOCK_METHOD(void, RenderSprites, (), (override));
|
|
||||||
|
|
||||||
MOCK_METHOD(void, Init, (), (override));
|
|
||||||
MOCK_METHOD(void, Reset, (), (override));
|
|
||||||
MOCK_METHOD(void, Update, (double deltaTime), (override));
|
|
||||||
MOCK_METHOD(void, UpdateClock, (double deltaTime), (override));
|
|
||||||
MOCK_METHOD(void, UpdateInternalState, (int cycles), (override));
|
|
||||||
|
|
||||||
MOCK_METHOD(const std::vector<uint8_t>&, GetFrameBuffer, (),
|
|
||||||
(const, override));
|
|
||||||
MOCK_METHOD(std::shared_ptr<Bitmap>, GetScreen, (), (const, override));
|
|
||||||
|
|
||||||
MOCK_METHOD(void, UpdateModeSettings, (), (override));
|
|
||||||
MOCK_METHOD(void, UpdateTileData, (), (override));
|
|
||||||
MOCK_METHOD(void, UpdateTileMapData, (), (override));
|
|
||||||
MOCK_METHOD(void, UpdatePaletteData, (), (override));
|
|
||||||
|
|
||||||
MOCK_METHOD(void, ApplyEffects, (), (override));
|
|
||||||
MOCK_METHOD(void, ComposeLayers, (), (override));
|
|
||||||
|
|
||||||
MOCK_METHOD(void, DisplayFrameBuffer, (), (override));
|
|
||||||
MOCK_METHOD(void, Notify, (uint32_t address, uint8_t data), (override));
|
|
||||||
|
|
||||||
std::vector<uint8_t> internalFrameBuffer;
|
std::vector<uint8_t> internalFrameBuffer;
|
||||||
std::vector<uint8_t> vram;
|
std::vector<uint8_t> vram;
|
||||||
std::vector<SpriteAttributes> sprites;
|
std::vector<SpriteAttributes> sprites;
|
||||||
@@ -71,11 +45,6 @@ class PpuTest : public ::testing::Test {
|
|||||||
PpuTest() {}
|
PpuTest() {}
|
||||||
|
|
||||||
void SetUp() override {
|
void SetUp() override {
|
||||||
ON_CALL(mock_ppu, Init()).WillByDefault([this]() {
|
|
||||||
mock_ppu.internalFrameBuffer.resize(256 * 240);
|
|
||||||
mock_ppu.vram.resize(0x10000);
|
|
||||||
});
|
|
||||||
|
|
||||||
ON_CALL(mock_ppu, Write(::testing::_, ::testing::_))
|
ON_CALL(mock_ppu, Write(::testing::_, ::testing::_))
|
||||||
.WillByDefault([this](uint16_t address, uint8_t data) {
|
.WillByDefault([this](uint16_t address, uint8_t data) {
|
||||||
mock_ppu.vram[address] = data;
|
mock_ppu.vram[address] = data;
|
||||||
@@ -84,76 +53,8 @@ class PpuTest : public ::testing::Test {
|
|||||||
ON_CALL(mock_ppu, Read(::testing::_))
|
ON_CALL(mock_ppu, Read(::testing::_))
|
||||||
.WillByDefault(
|
.WillByDefault(
|
||||||
[this](uint16_t address) { return mock_ppu.vram[address]; });
|
[this](uint16_t address) { return mock_ppu.vram[address]; });
|
||||||
|
|
||||||
ON_CALL(mock_ppu, RenderScanline()).WillByDefault([this]() {
|
|
||||||
// Simulate scanline rendering logic...
|
|
||||||
});
|
|
||||||
|
|
||||||
ON_CALL(mock_ppu, GetFrameBuffer()).WillByDefault([this]() {
|
|
||||||
return mock_ppu.internalFrameBuffer;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Additional ON_CALL setups as needed...
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TearDown() override {
|
|
||||||
// Common cleanup (if necessary)
|
|
||||||
}
|
|
||||||
|
|
||||||
const uint8_t testVRAMValue = 0xAB;
|
|
||||||
const uint16_t testVRAMAddress = 0x2000;
|
|
||||||
const std::vector<uint8_t> spriteData = {/* ... */};
|
|
||||||
const std::vector<uint8_t> bgData = {/* ... */};
|
|
||||||
const uint8_t testPaletteIndex = 3;
|
|
||||||
const uint16_t testTileIndex = 42;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Test Initialization
|
|
||||||
TEST_F(PpuTest, InitializationSetsCorrectFrameBufferSize) {
|
|
||||||
EXPECT_CALL(mock_ppu, Init()).Times(1);
|
|
||||||
mock_ppu.Init();
|
|
||||||
EXPECT_EQ(mock_ppu.GetFrameBuffer().size(), 256 * 240);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test State Reset
|
|
||||||
TEST_F(PpuTest, ResetClearsFrameBuffer) {
|
|
||||||
EXPECT_CALL(mock_ppu, Reset()).Times(1);
|
|
||||||
mock_ppu.Reset();
|
|
||||||
auto frameBuffer = mock_ppu.GetFrameBuffer();
|
|
||||||
EXPECT_TRUE(std::all_of(frameBuffer.begin(), frameBuffer.end(),
|
|
||||||
[](uint8_t val) { return val == 0; }));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test Memory Interaction
|
|
||||||
TEST_F(PpuTest, ReadWriteVRAM) {
|
|
||||||
uint16_t address = testVRAMAddress;
|
|
||||||
uint8_t value = testVRAMValue;
|
|
||||||
EXPECT_CALL(mock_ppu, Write(address, value)).Times(1);
|
|
||||||
mock_ppu.Write(address, value);
|
|
||||||
EXPECT_EQ(mock_ppu.Read(address), value);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test Rendering Mechanics
|
|
||||||
TEST_F(PpuTest, RenderScanlineUpdatesFrameBuffer) {
|
|
||||||
// Setup PPU with necessary background and sprite data
|
|
||||||
// Call RenderScanline and check if the framebuffer is updated correctly
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test Mode and Register Handling
|
|
||||||
TEST_F(PpuTest, Mode0Rendering) {
|
|
||||||
// Set PPU to Mode0 and verify correct rendering behavior
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test Interrupts and Counters
|
|
||||||
TEST_F(PpuTest, VBlankInterruptTriggered) {
|
|
||||||
// Simulate conditions for V-Blank and test if the interrupt is triggered
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test Composite Rendering and Output
|
|
||||||
TEST_F(PpuTest, FrameComposition) {
|
|
||||||
// Setup various layers and sprites, call ComposeLayers, and verify the frame
|
|
||||||
// buffer
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace emu_test
|
} // namespace emu_test
|
||||||
} // namespace yaze_test
|
} // namespace yaze_test
|
||||||
@@ -72,7 +72,7 @@ class Spc700Test : public ::testing::Test {
|
|||||||
|
|
||||||
testing::StrictMock<MockAudioRam> audioRAM;
|
testing::StrictMock<MockAudioRam> audioRAM;
|
||||||
ApuCallbacks callbacks_;
|
ApuCallbacks callbacks_;
|
||||||
Spc700 spc700{audioRAM, callbacks_};
|
Spc700 spc700{callbacks_};
|
||||||
};
|
};
|
||||||
|
|
||||||
// ========================================================
|
// ========================================================
|
||||||
|
|||||||
@@ -12,12 +12,11 @@ using ::testing::ElementsAreArray;
|
|||||||
using yaze::app::gfx::ConvertRGBtoSNES;
|
using yaze::app::gfx::ConvertRGBtoSNES;
|
||||||
using yaze::app::gfx::ConvertSNEStoRGB;
|
using yaze::app::gfx::ConvertSNEStoRGB;
|
||||||
using yaze::app::gfx::Extract;
|
using yaze::app::gfx::Extract;
|
||||||
using yaze::app::gfx::snes_color;
|
|
||||||
using yaze::app::gfx::snes_palette;
|
using yaze::app::gfx::snes_palette;
|
||||||
using yaze::app::gfx::SnesPalette;
|
using yaze::app::gfx::SnesPalette;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
unsigned int test_convert(yaze::app::gfx::snes_color col) {
|
unsigned int test_convert(snes_color col) {
|
||||||
unsigned int toret;
|
unsigned int toret;
|
||||||
toret = col.red << 16;
|
toret = col.red << 16;
|
||||||
toret += col.green << 8;
|
toret += col.green << 8;
|
||||||
@@ -99,7 +98,7 @@ TEST(SNESColorTest, Convert) {
|
|||||||
static_cast<char>(0xFF),
|
static_cast<char>(0xFF),
|
||||||
0x1F};
|
0x1F};
|
||||||
auto pal = Extract(data, 0, 5);
|
auto pal = Extract(data, 0, 5);
|
||||||
auto snes_string = Convert(pal);
|
auto snes_string = yaze::app::gfx::Convert(pal);
|
||||||
EXPECT_EQ(10, snes_string.size());
|
EXPECT_EQ(10, snes_string.size());
|
||||||
EXPECT_THAT(data, ElementsAreArray(snes_string.data(), 10));
|
EXPECT_THAT(data, ElementsAreArray(snes_string.data(), 10));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user