Add VirtualClock, MockClock, dependency injection

This commit is contained in:
scawful
2023-08-20 23:45:56 -04:00
parent 2084f2d5a5
commit d538317629
9 changed files with 62 additions and 26 deletions

View File

@@ -3,12 +3,22 @@
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include "app/emu/clock.h"
#include "app/emu/mem.h"
namespace yaze {
namespace app {
namespace emu {
class MockClock : public VirtualClock {
public:
MOCK_METHOD(void, UpdateClock, (double delta), (override));
MOCK_METHOD(unsigned long long, GetCycleCount, (), (const, override));
MOCK_METHOD(void, ResetAccumulatedTime, (), (override));
MOCK_METHOD(void, SetFrequency, (float new_frequency), (override));
MOCK_METHOD(float, GetFrequency, (), (const, override));
};
class MockMemory : public Memory {
public:
MOCK_CONST_METHOD1(ReadByte, uint8_t(uint16_t address));
@@ -133,7 +143,8 @@ class CPUTest : public ::testing::Test {
}
MockMemory mock_memory;
CPU cpu{mock_memory};
MockClock mock_clock;
CPU cpu{mock_memory, mock_clock};
};
using ::testing::_;