mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Added support for CMake's unity builds
This commit is contained in:
		| @@ -5,7 +5,7 @@ | ||||
| #include <ArduinoJson.h> | ||||
| #include <catch.hpp> | ||||
|  | ||||
| static void check(JsonArray array, std::string expected) { | ||||
| static void checkArray(JsonArray array, std::string expected) { | ||||
|   std::string actual; | ||||
|   size_t actualLen = serializeJsonPretty(array, actual); | ||||
|   size_t measuredLen = measureJsonPretty(array); | ||||
| @@ -19,38 +19,38 @@ TEST_CASE("serializeJsonPretty(JsonArray)") { | ||||
|   JsonArray array = doc.to<JsonArray>(); | ||||
|  | ||||
|   SECTION("Empty") { | ||||
|     check(array, "[]"); | ||||
|     checkArray(array, "[]"); | ||||
|   } | ||||
|  | ||||
|   SECTION("OneElement") { | ||||
|     array.add(1); | ||||
|  | ||||
|     check(array, | ||||
|           "[\r\n" | ||||
|           "  1\r\n" | ||||
|           "]"); | ||||
|     checkArray(array, | ||||
|                "[\r\n" | ||||
|                "  1\r\n" | ||||
|                "]"); | ||||
|   } | ||||
|  | ||||
|   SECTION("TwoElements") { | ||||
|     array.add(1); | ||||
|     array.add(2); | ||||
|  | ||||
|     check(array, | ||||
|           "[\r\n" | ||||
|           "  1,\r\n" | ||||
|           "  2\r\n" | ||||
|           "]"); | ||||
|     checkArray(array, | ||||
|                "[\r\n" | ||||
|                "  1,\r\n" | ||||
|                "  2\r\n" | ||||
|                "]"); | ||||
|   } | ||||
|  | ||||
|   SECTION("EmptyNestedArrays") { | ||||
|     array.createNestedArray(); | ||||
|     array.createNestedArray(); | ||||
|  | ||||
|     check(array, | ||||
|           "[\r\n" | ||||
|           "  [],\r\n" | ||||
|           "  []\r\n" | ||||
|           "]"); | ||||
|     checkArray(array, | ||||
|                "[\r\n" | ||||
|                "  [],\r\n" | ||||
|                "  []\r\n" | ||||
|                "]"); | ||||
|   } | ||||
|  | ||||
|   SECTION("NestedArrays") { | ||||
| @@ -61,15 +61,15 @@ TEST_CASE("serializeJsonPretty(JsonArray)") { | ||||
|     JsonObject nested2 = array.createNestedObject(); | ||||
|     nested2["key"] = 3; | ||||
|  | ||||
|     check(array, | ||||
|           "[\r\n" | ||||
|           "  [\r\n" | ||||
|           "    1,\r\n" | ||||
|           "    2\r\n" | ||||
|           "  ],\r\n" | ||||
|           "  {\r\n" | ||||
|           "    \"key\": 3\r\n" | ||||
|           "  }\r\n" | ||||
|           "]"); | ||||
|     checkArray(array, | ||||
|                "[\r\n" | ||||
|                "  [\r\n" | ||||
|                "    1,\r\n" | ||||
|                "    2\r\n" | ||||
|                "  ],\r\n" | ||||
|                "  {\r\n" | ||||
|                "    \"key\": 3\r\n" | ||||
|                "  }\r\n" | ||||
|                "]"); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -6,7 +6,7 @@ | ||||
| #include <catch.hpp> | ||||
| #include <string> | ||||
|  | ||||
| void check(const JsonObject obj, const std::string &expected) { | ||||
| static void checkObject(const JsonObject obj, const std::string &expected) { | ||||
|   char actual[256]; | ||||
|   size_t actualLen = serializeJson(obj, actual); | ||||
|   size_t measuredLen = measureJson(obj); | ||||
| @@ -21,14 +21,14 @@ TEST_CASE("serializeJson(JsonObject)") { | ||||
|   JsonObject obj = doc.to<JsonObject>(); | ||||
|  | ||||
|   SECTION("EmptyObject") { | ||||
|     check(obj, "{}"); | ||||
|     checkObject(obj, "{}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("TwoStrings") { | ||||
|     obj["key1"] = "value1"; | ||||
|     obj["key2"] = "value2"; | ||||
|  | ||||
|     check(obj, "{\"key1\":\"value1\",\"key2\":\"value2\"}"); | ||||
|     checkObject(obj, "{\"key1\":\"value1\",\"key2\":\"value2\"}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("RemoveFirst") { | ||||
| @@ -36,7 +36,7 @@ TEST_CASE("serializeJson(JsonObject)") { | ||||
|     obj["key2"] = "value2"; | ||||
|     obj.remove("key1"); | ||||
|  | ||||
|     check(obj, "{\"key2\":\"value2\"}"); | ||||
|     checkObject(obj, "{\"key2\":\"value2\"}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("RemoveLast") { | ||||
| @@ -44,7 +44,7 @@ TEST_CASE("serializeJson(JsonObject)") { | ||||
|     obj["key2"] = "value2"; | ||||
|     obj.remove("key2"); | ||||
|  | ||||
|     check(obj, "{\"key1\":\"value1\"}"); | ||||
|     checkObject(obj, "{\"key1\":\"value1\"}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("RemoveUnexistingKey") { | ||||
| @@ -52,44 +52,44 @@ TEST_CASE("serializeJson(JsonObject)") { | ||||
|     obj["key2"] = "value2"; | ||||
|     obj.remove("key3"); | ||||
|  | ||||
|     check(obj, "{\"key1\":\"value1\",\"key2\":\"value2\"}"); | ||||
|     checkObject(obj, "{\"key1\":\"value1\",\"key2\":\"value2\"}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("ReplaceExistingKey") { | ||||
|     obj["key"] = "value1"; | ||||
|     obj["key"] = "value2"; | ||||
|  | ||||
|     check(obj, "{\"key\":\"value2\"}"); | ||||
|     checkObject(obj, "{\"key\":\"value2\"}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("TwoIntegers") { | ||||
|     obj["a"] = 1; | ||||
|     obj["b"] = 2; | ||||
|     check(obj, "{\"a\":1,\"b\":2}"); | ||||
|     checkObject(obj, "{\"a\":1,\"b\":2}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("serialized(const char*)") { | ||||
|     obj["a"] = serialized("[1,2]"); | ||||
|     obj["b"] = serialized("[4,5]"); | ||||
|     check(obj, "{\"a\":[1,2],\"b\":[4,5]}"); | ||||
|     checkObject(obj, "{\"a\":[1,2],\"b\":[4,5]}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("Two doubles") { | ||||
|     obj["a"] = 12.34; | ||||
|     obj["b"] = 56.78; | ||||
|     check(obj, "{\"a\":12.34,\"b\":56.78}"); | ||||
|     checkObject(obj, "{\"a\":12.34,\"b\":56.78}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("TwoNull") { | ||||
|     obj["a"] = static_cast<char *>(0); | ||||
|     obj["b"] = static_cast<char *>(0); | ||||
|     check(obj, "{\"a\":null,\"b\":null}"); | ||||
|     checkObject(obj, "{\"a\":null,\"b\":null}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("TwoBooleans") { | ||||
|     obj["a"] = true; | ||||
|     obj["b"] = false; | ||||
|     check(obj, "{\"a\":true,\"b\":false}"); | ||||
|     checkObject(obj, "{\"a\":true,\"b\":false}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("ThreeNestedArrays") { | ||||
| @@ -100,7 +100,7 @@ TEST_CASE("serializeJson(JsonObject)") { | ||||
|     obj["b"] = b.to<JsonArray>(); | ||||
|     obj["c"] = c.to<JsonArray>(); | ||||
|  | ||||
|     check(obj, "{\"a\":[],\"b\":[],\"c\":[]}"); | ||||
|     checkObject(obj, "{\"a\":[],\"b\":[],\"c\":[]}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("ThreeNestedObjects") { | ||||
| @@ -111,6 +111,6 @@ TEST_CASE("serializeJson(JsonObject)") { | ||||
|     obj["b"] = b.to<JsonObject>(); | ||||
|     obj["c"] = c.to<JsonObject>(); | ||||
|  | ||||
|     check(obj, "{\"a\":{},\"b\":{},\"c\":{}}"); | ||||
|     checkObject(obj, "{\"a\":{},\"b\":{},\"c\":{}}"); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -6,7 +6,8 @@ | ||||
| #include <catch.hpp> | ||||
| #include <string> | ||||
|  | ||||
| void check(const JsonObject obj, const std::string expected) { | ||||
| static void checkObjectPretty(const JsonObject obj, | ||||
|                               const std::string expected) { | ||||
|   char json[256]; | ||||
|  | ||||
|   size_t actualLen = serializeJsonPretty(obj, json); | ||||
| @@ -22,38 +23,38 @@ TEST_CASE("serializeJsonPretty(JsonObject)") { | ||||
|   JsonObject obj = doc.to<JsonObject>(); | ||||
|  | ||||
|   SECTION("EmptyObject") { | ||||
|     check(obj, "{}"); | ||||
|     checkObjectPretty(obj, "{}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("OneMember") { | ||||
|     obj["key"] = "value"; | ||||
|  | ||||
|     check(obj, | ||||
|           "{\r\n" | ||||
|           "  \"key\": \"value\"\r\n" | ||||
|           "}"); | ||||
|     checkObjectPretty(obj, | ||||
|                       "{\r\n" | ||||
|                       "  \"key\": \"value\"\r\n" | ||||
|                       "}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("TwoMembers") { | ||||
|     obj["key1"] = "value1"; | ||||
|     obj["key2"] = "value2"; | ||||
|  | ||||
|     check(obj, | ||||
|           "{\r\n" | ||||
|           "  \"key1\": \"value1\",\r\n" | ||||
|           "  \"key2\": \"value2\"\r\n" | ||||
|           "}"); | ||||
|     checkObjectPretty(obj, | ||||
|                       "{\r\n" | ||||
|                       "  \"key1\": \"value1\",\r\n" | ||||
|                       "  \"key2\": \"value2\"\r\n" | ||||
|                       "}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("EmptyNestedContainers") { | ||||
|     obj.createNestedObject("key1"); | ||||
|     obj.createNestedArray("key2"); | ||||
|  | ||||
|     check(obj, | ||||
|           "{\r\n" | ||||
|           "  \"key1\": {},\r\n" | ||||
|           "  \"key2\": []\r\n" | ||||
|           "}"); | ||||
|     checkObjectPretty(obj, | ||||
|                       "{\r\n" | ||||
|                       "  \"key1\": {},\r\n" | ||||
|                       "  \"key2\": []\r\n" | ||||
|                       "}"); | ||||
|   } | ||||
|  | ||||
|   SECTION("NestedContainers") { | ||||
| @@ -63,14 +64,14 @@ TEST_CASE("serializeJsonPretty(JsonObject)") { | ||||
|     JsonArray nested2 = obj.createNestedArray("key2"); | ||||
|     nested2.add(2); | ||||
|  | ||||
|     check(obj, | ||||
|           "{\r\n" | ||||
|           "  \"key1\": {\r\n" | ||||
|           "    \"a\": 1\r\n" | ||||
|           "  },\r\n" | ||||
|           "  \"key2\": [\r\n" | ||||
|           "    2\r\n" | ||||
|           "  ]\r\n" | ||||
|           "}"); | ||||
|     checkObjectPretty(obj, | ||||
|                       "{\r\n" | ||||
|                       "  \"key1\": {\r\n" | ||||
|                       "    \"a\": 1\r\n" | ||||
|                       "  },\r\n" | ||||
|                       "  \"key2\": [\r\n" | ||||
|                       "    2\r\n" | ||||
|                       "  ]\r\n" | ||||
|                       "}"); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -2,16 +2,6 @@ | ||||
| #include <catch.hpp> | ||||
| #include <limits> | ||||
|  | ||||
| template <typename T> | ||||
| void check(T value, const std::string &expected) { | ||||
|   DynamicJsonDocument doc(4096); | ||||
|   doc.to<JsonVariant>().set(value); | ||||
|   char buffer[256] = ""; | ||||
|   size_t returnValue = serializeJson(doc, buffer, sizeof(buffer)); | ||||
|   REQUIRE(expected == buffer); | ||||
|   REQUIRE(expected.size() == returnValue); | ||||
| } | ||||
|  | ||||
| TEST_CASE("serializeJson(MemberProxy)") { | ||||
|   DynamicJsonDocument doc(4096); | ||||
|   deserializeJson(doc, "{\"hello\":42}"); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user