mirror of
https://github.com/momo5502/emulator.git
synced 2026-01-18 11:13:57 +00:00
48 lines
1.2 KiB
C++
48 lines
1.2 KiB
C++
#include "emulation_test_utils.hpp"
|
|
|
|
namespace test
|
|
{
|
|
TEST(EmulationTest, BasicEmulationWorks)
|
|
{
|
|
auto emu = create_sample_emulator();
|
|
emu.start();
|
|
|
|
ASSERT_TERMINATED_SUCCESSFULLY(emu);
|
|
}
|
|
|
|
TEST(EmulationTest, CountedEmulationWorks)
|
|
{
|
|
constexpr auto count = 200000;
|
|
|
|
auto emu = create_sample_emulator();
|
|
emu.start({}, count);
|
|
|
|
ASSERT_EQ(emu.get_executed_instructions(), count);
|
|
}
|
|
|
|
TEST(EmulationTest, CountedEmulationIsAccurate)
|
|
{
|
|
auto emu = create_reproducible_sample_emulator();
|
|
emu.start();
|
|
|
|
ASSERT_TERMINATED_SUCCESSFULLY(emu);
|
|
|
|
const auto executedInstructions = emu.get_executed_instructions();
|
|
|
|
auto new_emu = create_reproducible_sample_emulator();
|
|
|
|
constexpr auto offset = 1;
|
|
const auto instructionsToExecute = executedInstructions - offset;
|
|
|
|
new_emu.start({}, instructionsToExecute);
|
|
|
|
ASSERT_EQ(new_emu.get_executed_instructions(), instructionsToExecute);
|
|
ASSERT_NOT_TERMINATED(new_emu);
|
|
|
|
new_emu.start({}, offset);
|
|
|
|
ASSERT_TERMINATED_SUCCESSFULLY(new_emu);
|
|
ASSERT_EQ(new_emu.get_executed_instructions(), executedInstructions);
|
|
}
|
|
}
|