Files
Nuake/Test/NuakeTest/Source/SerializationTest.cpp
Antoine Pilote 70141a7ee6 Added catch2
2025-05-02 16:50:34 -04:00

79 lines
2.4 KiB
C++

#include "catch2/catch_amalgamated.hpp"
#include "Nuake/Scene/Components/Component.h"
#include "Nuake/Resource/Serializer/ComponentSerializer.h"
#include "entt/entt.hpp"
namespace Serialization
{
using namespace Nuake;
class TestData : public Component
{
NUAKECOMPONENT(TestData, "TestData");
public:
int myInt;
bool myBool;
std::string myString;
Vector2 myVec2;
Vector3 myVec3;
Vector4 myVec4;
static void InitializeComponentClass()
{
BindComponentField<&TestData::myInt>("myInt", "myInt");
BindComponentField<&TestData::myBool>("myBool", "myBool");
BindComponentField<&TestData::myString>("myString", "myString");
BindComponentField<&TestData::myVec2>("myVec2", "myVec2");
BindComponentField<&TestData::myVec3>("myVec3", "myVec3");
BindComponentField<&TestData::myVec4>("myVec4", "myVec4");
}
};
TEST_CASE("Serialize Struct", "[Serialization]")
{
// Initialize component
TestData::InternalInitializeClass();
TestData testData =
{
.myInt = 1337,
.myBool = true,
.myString = "Hello World",
.myVec2 = Vector2(1, 2),
.myVec3 = Vector3(3, 4, 5),
.myVec4 = Vector4(6, 7, 8, 9)
};
// Serialize into json
ComponentSerializer serializer;
json result = serializer.Serialize(testData);
// Test JSON result
REQUIRE(result.contains("TestData"));
REQUIRE(result["TestData"].contains("myInt"));
REQUIRE(result["TestData"]["myInt"] == testData.myInt);
REQUIRE(result["TestData"].contains("myBool"));
REQUIRE(result["TestData"]["myBool"] == testData.myBool);
REQUIRE(result["TestData"].contains("myString"));
REQUIRE(result["TestData"]["myString"] == testData.myString);
REQUIRE(result["TestData"].contains("myVec2"));
REQUIRE(result["TestData"]["myVec2"]["x"] == testData.myVec2.x);
REQUIRE(result["TestData"]["myVec2"]["y"] == testData.myVec2.y);
REQUIRE(result["TestData"].contains("myVec3"));
REQUIRE(result["TestData"]["myVec3"]["x"] == testData.myVec3.x);
REQUIRE(result["TestData"]["myVec3"]["y"] == testData.myVec3.y);
REQUIRE(result["TestData"]["myVec3"]["z"] == testData.myVec3.z);
REQUIRE(result["TestData"].contains("myVec4"));
REQUIRE(result["TestData"]["myVec4"]["x"] == testData.myVec4.x);
REQUIRE(result["TestData"]["myVec4"]["y"] == testData.myVec4.y);
REQUIRE(result["TestData"]["myVec4"]["z"] == testData.myVec4.z);
REQUIRE(result["TestData"]["myVec4"]["w"] == testData.myVec4.w);
}
}