initial commit

This commit is contained in:
2026-02-12 00:45:31 -08:00
commit 5f168f370b
3024 changed files with 804889 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
#include "test.h"
#include "fl/json.h"
using namespace fl;
TEST_CASE("JSON Round Trip Serialization Test") {
// Create the initial JSON string
const char* initialJson = "{\"name\":\"bob\",\"value\":21}";
// 1. Parse the JSON string into a Json document
Json parsedJson = Json::parse(initialJson);
// Verify parsing was successful
CHECK(parsedJson.has_value());
CHECK(parsedJson.is_object());
CHECK(parsedJson.contains("name"));
CHECK(parsedJson.contains("value"));
// Check values
CHECK_EQ(parsedJson["name"].as_or(string("")), "bob");
CHECK_EQ(parsedJson["value"].as_or(0), 21);
// 2. Serialize it back to a string
string serializedJson = parsedJson.to_string();
// 3. Confirm that the string is the same (after normalization)
// Since JSON serialization might reorder keys or add spaces, we'll normalize both strings
string normalizedInitial = Json::normalizeJsonString(initialJson);
string normalizedSerialized = Json::normalizeJsonString(serializedJson.c_str());
CHECK_EQ(normalizedInitial, normalizedSerialized);
// Also test with a more structured approach - parse the serialized string again
Json reparsedJson = Json::parse(serializedJson);
CHECK(reparsedJson.has_value());
CHECK(reparsedJson.is_object());
CHECK(reparsedJson.contains("name"));
CHECK(reparsedJson.contains("value"));
CHECK_EQ(reparsedJson["name"].as_or(string("")), "bob");
CHECK_EQ(reparsedJson["value"].as_or(0), 21);
}