| 
									
										
										
										
											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
 | 
					
						
							| 
									
										
										
										
											2014-11-04 13:07:14 +01:00
										 |  |  | // MIT License
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-11 16:54:46 +01:00
										 |  |  | #include <ArduinoJson.h>
 | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  | #include <catch.hpp>
 | 
					
						
							| 
									
										
										
										
											2014-11-04 13:07:14 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-07 09:35:45 +02:00
										 |  |  | #include "Literals.hpp"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-16 14:55:26 +01:00
										 |  |  | TEST_CASE("Unbound JsonVariant") { | 
					
						
							| 
									
										
										
										
											2014-11-04 13:07:14 +01:00
										 |  |  |   JsonVariant variant; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-01 11:28:27 +01:00
										 |  |  |   SECTION("as<T>()") { | 
					
						
							| 
									
										
										
										
											2021-11-21 15:07:56 +01:00
										 |  |  |     CHECK(variant.as<bool>() == false); | 
					
						
							|  |  |  |     CHECK(variant.as<int>() == 0); | 
					
						
							|  |  |  |     CHECK(variant.as<float>() == 0.0f); | 
					
						
							|  |  |  |     CHECK(variant.as<const char*>() == 0); | 
					
						
							|  |  |  |     CHECK(variant.as<std::string>() == "null"); | 
					
						
							|  |  |  |     CHECK(variant.as<JsonVariant>().isNull()); | 
					
						
							|  |  |  |     CHECK(variant.as<JsonVariantConst>().isNull()); | 
					
						
							|  |  |  |     CHECK(variant.as<JsonArray>().isNull()); | 
					
						
							|  |  |  |     CHECK(variant.as<JsonArrayConst>().isNull()); | 
					
						
							|  |  |  |     CHECK(variant.as<JsonObject>().isNull()); | 
					
						
							|  |  |  |     CHECK(variant.as<JsonObjectConst>().isNull()); | 
					
						
							|  |  |  |     CHECK(variant.as<JsonString>().isNull()); | 
					
						
							| 
									
										
										
										
											2024-04-29 14:47:40 +02:00
										 |  |  |     CHECK(variant.as<MsgPackBinary>().data() == nullptr); | 
					
						
							|  |  |  |     CHECK(variant.as<MsgPackBinary>().size() == 0); | 
					
						
							| 
									
										
										
										
											2024-06-06 18:33:48 +02:00
										 |  |  |     CHECK(variant.as<MsgPackExtension>().data() == nullptr); | 
					
						
							|  |  |  |     CHECK(variant.as<MsgPackExtension>().size() == 0); | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2015-05-25 15:38:58 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-01 11:28:27 +01:00
										 |  |  |   SECTION("is<T>()") { | 
					
						
							| 
									
										
										
										
											2021-11-21 15:07:56 +01:00
										 |  |  |     CHECK_FALSE(variant.is<bool>()); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.is<int>()); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.is<float>()); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.is<const char*>()); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.is<std::string>()); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.is<JsonVariant>()); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.is<JsonVariantConst>()); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.is<JsonArray>()); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.is<JsonArrayConst>()); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.is<JsonObject>()); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.is<JsonObjectConst>()); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.is<JsonString>()); | 
					
						
							| 
									
										
										
										
											2017-04-18 18:22:24 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2021-04-18 17:23:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-21 15:07:56 +01:00
										 |  |  |   SECTION("set()") { | 
					
						
							|  |  |  |     CHECK_FALSE(variant.set("42")); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.set(42.0)); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.set(42L)); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.set(42U)); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.set(serialized("42"))); | 
					
						
							| 
									
										
										
										
											2024-06-07 09:35:45 +02:00
										 |  |  |     CHECK_FALSE(variant.set(serialized("42"_s))); | 
					
						
							| 
									
										
										
										
											2021-11-21 15:07:56 +01:00
										 |  |  |     CHECK_FALSE(variant.set(true)); | 
					
						
							| 
									
										
										
										
											2024-04-29 14:47:40 +02:00
										 |  |  |     CHECK_FALSE(variant.set(MsgPackBinary("hello", 5))); | 
					
						
							| 
									
										
										
										
											2024-06-06 18:33:48 +02:00
										 |  |  |     CHECK_FALSE(variant.set(MsgPackExtension(1, "hello", 5))); | 
					
						
							| 
									
										
										
										
											2021-11-21 15:07:56 +01:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2021-04-18 17:23:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-21 15:07:56 +01:00
										 |  |  |   SECTION("add()") { | 
					
						
							|  |  |  |     CHECK_FALSE(variant.add("42")); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.add(42.0)); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.add(42L)); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.add(42U)); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.add(serialized("42"))); | 
					
						
							|  |  |  |     CHECK_FALSE(variant.add(true)); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2021-04-18 17:23:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-21 15:07:56 +01:00
										 |  |  |   SECTION("operator[]") { | 
					
						
							|  |  |  |     CHECK(variant[0].isNull()); | 
					
						
							|  |  |  |     CHECK(variant["key"].isNull()); | 
					
						
							|  |  |  |     CHECK_FALSE(variant[0].set(1)); | 
					
						
							|  |  |  |     CHECK_FALSE(variant["key"].set(1)); | 
					
						
							| 
									
										
										
										
											2024-06-07 09:35:45 +02:00
										 |  |  |     CHECK_FALSE(variant["key"_s].set(1)); | 
					
						
							| 
									
										
										
										
											2021-04-18 17:23:51 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2023-04-21 16:23:03 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   SECTION("containsKey()") { | 
					
						
							|  |  |  |     CHECK_FALSE(variant.containsKey("hello")); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SECTION("remove()") { | 
					
						
							|  |  |  |     variant.remove(0); | 
					
						
							|  |  |  |     variant.remove("hello"); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2014-11-04 13:07:14 +01:00
										 |  |  | } |