Add more tests

This commit is contained in:
momo5502
2024-10-25 17:32:19 +02:00
parent a3a95ec829
commit 9091131a96
4 changed files with 73 additions and 12 deletions

View File

@@ -1,6 +1,4 @@
#include <gtest/gtest.h>
#include <windows_emulator.hpp>
#include "emulation_test_utils.hpp"
namespace test
{
@@ -10,8 +8,7 @@ namespace test
emu.logger.disable_output(true);
emu.start();
ASSERT_TRUE(emu.process().exit_status.has_value());
ASSERT_EQ(*emu.process().exit_status, 0);
assert_terminated_successfully(emu);
}
TEST(EmulationTest, CountedEmulationWorks)

View File

@@ -0,0 +1,18 @@
#pragma once
#include <gtest/gtest.h>
#include <windows_emulator.hpp>
namespace test
{
inline void assert_terminated_with_status(const windows_emulator& win_emu, const NTSTATUS status)
{
ASSERT_TRUE(win_emu.process().exit_status.has_value());
ASSERT_EQ(*win_emu.process().exit_status, status);
}
inline void assert_terminated_successfully(const windows_emulator& win_emu)
{
assert_terminated_with_status(win_emu, STATUS_SUCCESS);
}
}

View File

@@ -1,26 +1,72 @@
#include <gtest/gtest.h>
#include <windows_emulator.hpp>
#include "emulation_test_utils.hpp"
namespace test
{
TEST(SerializationTest, BasicSerializationWorks)
TEST(SerializationTest, DISABLED_SerializedDataIsReproducible)
{
windows_emulator emu{"./test-sample.exe"};
windows_emulator emu1{ "./test-sample.exe" };
emu1.logger.disable_output(true);
emu1.start();
assert_terminated_successfully(emu1);
utils::buffer_serializer serializer1{};
emu1.serialize(serializer1);
utils::buffer_deserializer deserializer{ serializer1.get_buffer() };
windows_emulator new_emu{};
new_emu.deserialize(deserializer);
utils::buffer_serializer serializer2{};
new_emu.serialize(serializer2);
ASSERT_EQ(serializer1.get_buffer(), serializer2.get_buffer());
}
TEST(SerializationTest, DISABLED_EmulationIsReproducible)
{
windows_emulator emu1{ "./test-sample.exe" };
emu1.logger.disable_output(true);
emu1.start();
assert_terminated_successfully(emu1);
utils::buffer_serializer serializer1{};
emu1.serialize(serializer1);
windows_emulator emu2{ "./test-sample.exe" };
emu2.logger.disable_output(true);
emu2.start();
assert_terminated_successfully(emu2);
utils::buffer_serializer serializer2{};
emu2.serialize(serializer2);
ASSERT_EQ(serializer1.get_buffer(), serializer2.get_buffer());
}
TEST(SerializationTest, DISABLED_BasicSerializationWorks)
{
windows_emulator emu{ "./test-sample.exe" };
emu.logger.disable_output(true);
emu.start({}, 100);
utils::buffer_serializer serializer{};
emu.serialize(serializer);
utils::buffer_deserializer deserializer{serializer.get_buffer()};
utils::buffer_deserializer deserializer{ serializer.get_buffer() };
windows_emulator new_emu{};
new_emu.logger.disable_output(true);
new_emu.deserialize(deserializer);
new_emu.start();
assert_terminated_successfully(new_emu);
emu.start();
assert_terminated_successfully(emu);
utils::buffer_serializer serializer1{};
utils::buffer_serializer serializer2{};

View File

@@ -2154,7 +2154,7 @@ namespace
{
if (lock.value())
{
puts("NtAlertThreadByThreadIdEx with lock not supported yet!");
c.win_emu.logger.print(color::gray, "NtAlertThreadByThreadIdEx with lock not supported yet!");
//c.emu.stop();
//return STATUS_NOT_SUPPORTED;
}