| 
									
										
										
										
											2021-03-29 17:14:01 +02:00
										 |  |  | // ArduinoJson - https://arduinojson.org
 | 
					
						
							| 
									
										
										
										
											2024-01-03 08:47:06 +01:00
										 |  |  | // Copyright © 2014-2024, Benoit BLANCHON
 | 
					
						
							| 
									
										
										
										
											2020-01-13 18:16:02 +01:00
										 |  |  | // MIT License
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ARDUINOJSON_ENABLE_COMMENTS 1
 | 
					
						
							|  |  |  | #include <ArduinoJson.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <catch.hpp>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TEST_CASE("Comments in arrays") { | 
					
						
							| 
									
										
										
										
											2023-07-17 18:15:13 +02:00
										 |  |  |   JsonDocument doc; | 
					
						
							| 
									
										
										
										
											2020-01-13 18:16:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   SECTION("Block comments") { | 
					
						
							|  |  |  |     SECTION("Before opening bracket") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "/*COMMENT*/  [\"hello\"]"); | 
					
						
							|  |  |  |       JsonArray arr = doc.as<JsonArray>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(1 == arr.size()); | 
					
						
							|  |  |  |       REQUIRE(arr[0] == "hello"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After opening bracket") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "[/*COMMENT*/ \"hello\"]"); | 
					
						
							|  |  |  |       JsonArray arr = doc.as<JsonArray>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(1 == arr.size()); | 
					
						
							|  |  |  |       REQUIRE(arr[0] == "hello"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Before closing bracket") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson(doc, "[\"hello\"/*COMMENT*/]"); | 
					
						
							|  |  |  |       JsonArray arr = doc.as<JsonArray>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(1 == arr.size()); | 
					
						
							|  |  |  |       REQUIRE(arr[0] == "hello"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After closing bracket") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson(doc, "[\"hello\"]/*COMMENT*/"); | 
					
						
							|  |  |  |       JsonArray arr = doc.as<JsonArray>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(1 == arr.size()); | 
					
						
							|  |  |  |       REQUIRE(arr[0] == "hello"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Before comma") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "[\"hello\"/*COMMENT*/,\"world\"]"); | 
					
						
							|  |  |  |       JsonArray arr = doc.as<JsonArray>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(2 == arr.size()); | 
					
						
							|  |  |  |       REQUIRE(arr[0] == "hello"); | 
					
						
							|  |  |  |       REQUIRE(arr[1] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After comma") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "[\"hello\",/*COMMENT*/ \"world\"]"); | 
					
						
							|  |  |  |       JsonArray arr = doc.as<JsonArray>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(2 == arr.size()); | 
					
						
							|  |  |  |       REQUIRE(arr[0] == "hello"); | 
					
						
							|  |  |  |       REQUIRE(arr[1] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("/*/") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson(doc, "[/*/\n]"); | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::IncompleteInput); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Unfinished comment") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson(doc, "[/*COMMENT]"); | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::IncompleteInput); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Final slash missing") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson(doc, "[/*COMMENT*]"); | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::IncompleteInput); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SECTION("Trailing comments") { | 
					
						
							|  |  |  |     SECTION("Before opening bracket") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "//COMMENT\n\t[\"hello\"]"); | 
					
						
							|  |  |  |       JsonArray arr = doc.as<JsonArray>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(1 == arr.size()); | 
					
						
							|  |  |  |       REQUIRE(arr[0] == "hello"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After opening bracket") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson(doc, "[//COMMENT\n\"hello\"]"); | 
					
						
							|  |  |  |       JsonArray arr = doc.as<JsonArray>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(1 == arr.size()); | 
					
						
							|  |  |  |       REQUIRE(arr[0] == "hello"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Before closing bracket") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "[\"hello\"//COMMENT\r\n]"); | 
					
						
							|  |  |  |       JsonArray arr = doc.as<JsonArray>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(1 == arr.size()); | 
					
						
							|  |  |  |       REQUIRE(arr[0] == "hello"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After closing bracket") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson(doc, "[\"hello\"]//COMMENT\n"); | 
					
						
							|  |  |  |       JsonArray arr = doc.as<JsonArray>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(1 == arr.size()); | 
					
						
							|  |  |  |       REQUIRE(arr[0] == "hello"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Before comma") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "[\"hello\"//COMMENT\n,\"world\"]"); | 
					
						
							|  |  |  |       JsonArray arr = doc.as<JsonArray>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(2 == arr.size()); | 
					
						
							|  |  |  |       REQUIRE(arr[0] == "hello"); | 
					
						
							|  |  |  |       REQUIRE(arr[1] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After comma") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "[\"hello\",//COMMENT\n\"world\"]"); | 
					
						
							|  |  |  |       JsonArray arr = doc.as<JsonArray>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(2 == arr.size()); | 
					
						
							|  |  |  |       REQUIRE(arr[0] == "hello"); | 
					
						
							|  |  |  |       REQUIRE(arr[1] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Invalid comment") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson(doc, "[/COMMENT\n]"); | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::InvalidInput); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("End document with comment") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson(doc, "[//COMMENT"); | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::IncompleteInput); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TEST_CASE("Comments in objects") { | 
					
						
							| 
									
										
										
										
											2023-07-17 18:15:13 +02:00
										 |  |  |   JsonDocument doc; | 
					
						
							| 
									
										
										
										
											2020-01-13 18:16:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   SECTION("Block comments") { | 
					
						
							|  |  |  |     SECTION("Before opening brace") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "/*COMMENT*/ {\"hello\":\"world\"}"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After opening brace") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "{/*COMMENT*/\"hello\":\"world\"}"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Before colon") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "{\"hello\"/*COMMENT*/:\"world\"}"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After colon") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "{\"hello\":/*COMMENT*/\"world\"}"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Before closing brace") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "{\"hello\":\"world\"/*COMMENT*/}"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After closing brace") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "{\"hello\":\"world\"}/*COMMENT*/"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Before comma") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson( | 
					
						
							|  |  |  |           doc, "{\"hello\":\"world\"/*COMMENT*/,\"answer\":42}"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |       REQUIRE(obj["answer"] == 42); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After comma") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson( | 
					
						
							|  |  |  |           doc, "{\"hello\":\"world\",/*COMMENT*/\"answer\":42}"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |       REQUIRE(obj["answer"] == 42); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SECTION("Trailing comments") { | 
					
						
							|  |  |  |     SECTION("Before opening brace") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "//COMMENT\n {\"hello\":\"world\"}"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After opening brace") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "{//COMMENT\n\"hello\":\"world\"}"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Before colon") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "{\"hello\"//COMMENT\n:\"world\"}"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After colon") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "{\"hello\"://COMMENT\n\"world\"}"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Before closing brace") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "{\"hello\":\"world\"//COMMENT\n}"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After closing brace") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "{\"hello\":\"world\"}//COMMENT\n"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Before comma") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson( | 
					
						
							|  |  |  |           doc, "{\"hello\":\"world\"//COMMENT\n,\"answer\":42}"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |       REQUIRE(obj["answer"] == 42); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After comma") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson( | 
					
						
							|  |  |  |           doc, "{\"hello\":\"world\",//COMMENT\n\"answer\":42}"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |       REQUIRE(obj["answer"] == 42); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SECTION("Dangling slash") { | 
					
						
							|  |  |  |     SECTION("Before opening brace") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson(doc, "/{\"hello\":\"world\"}"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::InvalidInput); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After opening brace") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson(doc, "{/\"hello\":\"world\"}"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::InvalidInput); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Before colon") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson(doc, "{\"hello\"/:\"world\"}"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::InvalidInput); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After colon") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson(doc, "{\"hello\":/\"world\"}"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::InvalidInput); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Before closing brace") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson(doc, "{\"hello\":\"world\"/}"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::InvalidInput); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After closing brace") { | 
					
						
							|  |  |  |       DeserializationError err = deserializeJson(doc, "{\"hello\":\"world\"}/"); | 
					
						
							|  |  |  |       JsonObject obj = doc.as<JsonObject>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::Ok); | 
					
						
							|  |  |  |       REQUIRE(obj["hello"] == "world"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("Before comma") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "{\"hello\":\"world\"/,\"answer\":42}"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::InvalidInput); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SECTION("After comma") { | 
					
						
							|  |  |  |       DeserializationError err = | 
					
						
							|  |  |  |           deserializeJson(doc, "{\"hello\":\"world\",/\"answer\":42}"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       REQUIRE(err == DeserializationError::InvalidInput); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TEST_CASE("Comments alone") { | 
					
						
							| 
									
										
										
										
											2023-07-17 18:15:13 +02:00
										 |  |  |   JsonDocument doc; | 
					
						
							| 
									
										
										
										
											2020-01-13 18:16:02 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-13 10:27:29 +02:00
										 |  |  |   SECTION("Just a trailing comment with no line break") { | 
					
						
							| 
									
										
										
										
											2020-01-13 18:16:02 +01:00
										 |  |  |     DeserializationError err = deserializeJson(doc, "// comment"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     REQUIRE(err == DeserializationError::IncompleteInput); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-13 10:27:29 +02:00
										 |  |  |   SECTION("Just a trailing comment with no a break") { | 
					
						
							|  |  |  |     DeserializationError err = deserializeJson(doc, "// comment\n"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     REQUIRE(err == DeserializationError::EmptyInput); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-13 18:16:02 +01:00
										 |  |  |   SECTION("Just a block comment") { | 
					
						
							|  |  |  |     DeserializationError err = deserializeJson(doc, "/*comment*/"); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-13 10:27:29 +02:00
										 |  |  |     REQUIRE(err == DeserializationError::EmptyInput); | 
					
						
							| 
									
										
										
										
											2020-01-13 18:16:02 +01:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SECTION("Just a slash") { | 
					
						
							|  |  |  |     DeserializationError err = deserializeJson(doc, "/"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     REQUIRE(err == DeserializationError::InvalidInput); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SECTION("Premature terminator") { | 
					
						
							|  |  |  |     DeserializationError err = deserializeJson(doc, "/* comment"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     REQUIRE(err == DeserializationError::IncompleteInput); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SECTION("Premature end on sized input") { | 
					
						
							|  |  |  |     DeserializationError err = deserializeJson(doc, "/* comment */", 10); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     REQUIRE(err == DeserializationError::IncompleteInput); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |