| 
									
										
										
										
											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
 | 
					
						
							| 
									
										
										
										
											2018-05-14 17:12:59 +02:00
										 |  |  | // MIT License
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <ArduinoJson.h>
 | 
					
						
							|  |  |  | #include <catch.hpp>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-07 09:35:45 +02:00
										 |  |  | #include "Literals.hpp"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-09 16:52:17 +02:00
										 |  |  | static void eraseString(std::string& str) { | 
					
						
							|  |  |  |   char* p = const_cast<char*>(str.c_str()); | 
					
						
							| 
									
										
										
										
											2022-12-24 15:47:48 +01:00
										 |  |  |   while (*p) | 
					
						
							|  |  |  |     *p++ = '*'; | 
					
						
							| 
									
										
										
										
											2018-05-14 17:12:59 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TEST_CASE("std::string") { | 
					
						
							| 
									
										
										
										
											2023-07-17 18:15:13 +02:00
										 |  |  |   JsonDocument doc; | 
					
						
							| 
									
										
										
										
											2018-05-14 17:12:59 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   SECTION("operator[]") { | 
					
						
							|  |  |  |     char json[] = "{\"key\":\"value\"}"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     deserializeJson(doc, json); | 
					
						
							| 
									
										
										
										
											2018-07-02 09:35:21 +02:00
										 |  |  |     JsonObject obj = doc.as<JsonObject>(); | 
					
						
							| 
									
										
										
										
											2018-05-14 17:12:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-07 09:35:45 +02:00
										 |  |  |     REQUIRE("value"_s == obj["key"_s]); | 
					
						
							| 
									
										
										
										
											2018-05-14 17:12:59 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SECTION("operator[] const") { | 
					
						
							|  |  |  |     char json[] = "{\"key\":\"value\"}"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     deserializeJson(doc, json); | 
					
						
							| 
									
										
										
										
											2018-07-02 09:35:21 +02:00
										 |  |  |     JsonObject obj = doc.as<JsonObject>(); | 
					
						
							| 
									
										
										
										
											2018-05-14 17:12:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-07 09:35:45 +02:00
										 |  |  |     REQUIRE("value"_s == obj["key"_s]); | 
					
						
							| 
									
										
										
										
											2018-05-14 17:12:59 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SECTION("remove()") { | 
					
						
							| 
									
										
										
										
											2018-07-02 09:35:21 +02:00
										 |  |  |     JsonObject obj = doc.to<JsonObject>(); | 
					
						
							| 
									
										
										
										
											2018-05-14 17:12:59 +02:00
										 |  |  |     obj["key"] = "value"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-07 09:35:45 +02:00
										 |  |  |     obj.remove("key"_s); | 
					
						
							| 
									
										
										
										
											2018-05-14 17:12:59 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     REQUIRE(0 == obj.size()); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SECTION("operator[], set key") { | 
					
						
							|  |  |  |     std::string key("hello"); | 
					
						
							| 
									
										
										
										
											2018-07-02 09:35:21 +02:00
										 |  |  |     JsonObject obj = doc.to<JsonObject>(); | 
					
						
							| 
									
										
										
										
											2018-05-14 17:12:59 +02:00
										 |  |  |     obj[key] = "world"; | 
					
						
							|  |  |  |     eraseString(key); | 
					
						
							| 
									
										
										
										
											2024-06-07 09:35:45 +02:00
										 |  |  |     REQUIRE("world"_s == obj["hello"]); | 
					
						
							| 
									
										
										
										
											2018-05-14 17:12:59 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SECTION("operator[], set value") { | 
					
						
							|  |  |  |     std::string value("world"); | 
					
						
							| 
									
										
										
										
											2018-07-02 09:35:21 +02:00
										 |  |  |     JsonObject obj = doc.to<JsonObject>(); | 
					
						
							| 
									
										
										
										
											2018-05-14 17:12:59 +02:00
										 |  |  |     obj["hello"] = value; | 
					
						
							|  |  |  |     eraseString(value); | 
					
						
							| 
									
										
										
										
											2024-06-07 09:35:45 +02:00
										 |  |  |     REQUIRE("world"_s == obj["hello"]); | 
					
						
							| 
									
										
										
										
											2018-05-14 17:12:59 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | } |