Initialize emulator using settings struct

This commit is contained in:
momo5502
2024-10-28 19:05:24 +01:00
parent dfccd6a929
commit ebd2dbc29e
7 changed files with 64 additions and 34 deletions

View File

@@ -4,8 +4,7 @@ namespace test
{
TEST(EmulationTest, BasicEmulationWorks)
{
windows_emulator emu{"./test-sample.exe"};
emu.logger.disable_output(true);
auto emu = create_sample_emulator();
emu.start();
ASSERT_TERMINATED_SUCCESSFULLY(emu);
@@ -15,8 +14,7 @@ namespace test
{
constexpr auto count = 200000;
windows_emulator emu{"./test-sample.exe"};
emu.logger.disable_output(true);
auto emu = create_sample_emulator();
emu.start({}, count);
ASSERT_EQ(emu.process().executed_instructions, count);
@@ -24,16 +22,14 @@ namespace test
TEST(EmulationTest, CountedEmulationIsAccurate)
{
windows_emulator emu{"./test-sample.exe"};
emu.logger.disable_output(true);
auto emu = create_sample_emulator();
emu.start();
ASSERT_TERMINATED_SUCCESSFULLY(emu);
const auto executedInstructions = emu.process().executed_instructions;
windows_emulator new_emu{"./test-sample.exe"};
new_emu.logger.disable_output(true);
auto new_emu = create_sample_emulator();
constexpr auto offset = 1;
const auto instructionsToExecute = executedInstructions - offset;

View File

@@ -17,3 +17,17 @@
#define ASSERT_TERMINATED_SUCCESSFULLY(win_emu) \
ASSERT_TERMINATED_WITH_STATUS(win_emu, STATUS_SUCCESS)
namespace test
{
inline windows_emulator create_sample_emulator()
{
const emulator_settings settings
{
.application = "./test-sample.exe",
.disable_logging = true,
};
return windows_emulator{settings};
}
}

View File

@@ -4,8 +4,7 @@ namespace test
{
TEST(SerializationTest, SerializedDataIsReproducible)
{
windows_emulator emu1{"./test-sample.exe"};
emu1.logger.disable_output(true);
auto emu1 = create_sample_emulator();
emu1.start();
ASSERT_TERMINATED_SUCCESSFULLY(emu1);
@@ -29,8 +28,7 @@ namespace test
TEST(SerializationTest, EmulationIsReproducible)
{
windows_emulator emu1{"./test-sample.exe"};
emu1.logger.disable_output(true);
auto emu1 = create_sample_emulator();
emu1.start();
ASSERT_TERMINATED_SUCCESSFULLY(emu1);
@@ -38,8 +36,7 @@ namespace test
utils::buffer_serializer serializer1{};
emu1.serialize(serializer1);
windows_emulator emu2{"./test-sample.exe"};
emu2.logger.disable_output(true);
auto emu2 = create_sample_emulator();
emu2.start();
ASSERT_TERMINATED_SUCCESSFULLY(emu2);
@@ -52,8 +49,7 @@ namespace test
TEST(SerializationTest, DeserializedEmulatorBehavesLikeSource)
{
windows_emulator emu{"./test-sample.exe"};
emu.logger.disable_output(true);
auto emu = create_sample_emulator();
emu.start({}, 100);
utils::buffer_serializer serializer{};