mirror of
https://github.com/antopilo/Nuake.git
synced 2026-01-01 05:48:14 +03:00
79 lines
2.4 KiB
C++
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);
|
|
}
|
|
} |