| 
									
										
										
										
											2021-03-29 17:14:01 +02:00
										 |  |  | // ArduinoJson - https://arduinojson.org
 | 
					
						
							| 
									
										
										
										
											2025-02-24 15:18:26 +01:00
										 |  |  | // Copyright © 2014-2025, Benoit BLANCHON
 | 
					
						
							| 
									
										
										
										
											2014-10-23 23:39:22 +02:00
										 |  |  | // MIT License
 | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-11 16:54:46 +01:00
										 |  |  | #include <ArduinoJson.h>
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  | #include <catch.hpp>
 | 
					
						
							| 
									
										
										
										
											2014-10-18 23:05:54 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-02 09:35:21 +02:00
										 |  |  | static void check(JsonArray array, std::string expected) { | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   std::string actual; | 
					
						
							| 
									
										
										
										
											2018-03-01 09:24:58 +01:00
										 |  |  |   size_t actualLen = serializeJson(array, actual); | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   REQUIRE(expected == actual); | 
					
						
							| 
									
										
										
										
											2018-01-18 09:43:37 +01:00
										 |  |  |   REQUIRE(actualLen == expected.size()); | 
					
						
							| 
									
										
										
										
											2018-03-01 09:24:58 +01:00
										 |  |  |   size_t measuredLen = measureJson(array); | 
					
						
							| 
									
										
										
										
											2018-01-18 09:43:37 +01:00
										 |  |  |   REQUIRE(measuredLen == expected.size()); | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-01 09:24:58 +01:00
										 |  |  | TEST_CASE("serializeJson(JsonArray)") { | 
					
						
							| 
									
										
										
										
											2023-07-17 18:15:13 +02:00
										 |  |  |   JsonDocument doc; | 
					
						
							| 
									
										
										
										
											2018-07-02 09:35:21 +02:00
										 |  |  |   JsonArray array = doc.to<JsonArray>(); | 
					
						
							| 
									
										
										
										
											2015-05-09 16:53:48 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   SECTION("Empty") { | 
					
						
							|  |  |  |     check(array, "[]"); | 
					
						
							| 
									
										
										
										
											2014-10-23 19:54:00 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   SECTION("Null") { | 
					
						
							| 
									
										
										
										
											2022-08-09 16:52:17 +02:00
										 |  |  |     array.add(static_cast<char*>(0)); | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |     check(array, "[null]"); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   SECTION("OneString") { | 
					
						
							|  |  |  |     array.add("hello"); | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |     check(array, "[\"hello\"]"); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   SECTION("TwoStrings") { | 
					
						
							|  |  |  |     array.add("hello"); | 
					
						
							|  |  |  |     array.add("world"); | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |     check(array, "[\"hello\",\"world\"]"); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-20 09:06:53 +02:00
										 |  |  |   SECTION("One double") { | 
					
						
							|  |  |  |     array.add(3.1415927); | 
					
						
							|  |  |  |     check(array, "[3.1415927]"); | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   SECTION("OneInteger") { | 
					
						
							|  |  |  |     array.add(1); | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |     check(array, "[1]"); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   SECTION("TwoIntegers") { | 
					
						
							|  |  |  |     array.add(1); | 
					
						
							|  |  |  |     array.add(2); | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |     check(array, "[1,2]"); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-12 09:08:20 +02:00
										 |  |  |   SECTION("serialized(const char*)") { | 
					
						
							|  |  |  |     array.add(serialized("{\"key\":\"value\"}")); | 
					
						
							| 
									
										
										
										
											2016-04-16 16:15:01 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |     check(array, "[{\"key\":\"value\"}]"); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-04-16 16:15:01 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-12 09:08:20 +02:00
										 |  |  |   SECTION("serialized(char*)") { | 
					
						
							| 
									
										
										
										
											2018-01-18 09:43:37 +01:00
										 |  |  |     char tmp[] = "{\"key\":\"value\"}"; | 
					
						
							| 
									
										
										
										
											2018-07-12 09:08:20 +02:00
										 |  |  |     array.add(serialized(tmp)); | 
					
						
							| 
									
										
										
										
											2018-01-18 09:43:37 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-26 16:05:16 +01:00
										 |  |  |     check(array, "[{\"key\":\"value\"}]"); | 
					
						
							| 
									
										
										
										
											2018-01-18 09:43:37 +01:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   SECTION("OneTrue") { | 
					
						
							|  |  |  |     array.add(true); | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |     check(array, "[true]"); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   SECTION("OneFalse") { | 
					
						
							|  |  |  |     array.add(false); | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |     check(array, "[false]"); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   SECTION("TwoBooleans") { | 
					
						
							|  |  |  |     array.add(false); | 
					
						
							|  |  |  |     array.add(true); | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |     check(array, "[false,true]"); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   SECTION("OneEmptyNestedArray") { | 
					
						
							| 
									
										
										
										
											2023-08-09 11:31:29 +02:00
										 |  |  |     array.add<JsonArray>(); | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |     check(array, "[[]]"); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   SECTION("OneEmptyNestedHash") { | 
					
						
							| 
									
										
										
										
											2023-08-09 11:31:29 +02:00
										 |  |  |     array.add<JsonObject>(); | 
					
						
							| 
									
										
										
										
											2014-10-16 16:23:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |     check(array, "[{}]"); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2014-10-23 23:45:36 +02:00
										 |  |  | } |