mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Added operators == and != for two JsonVariants (issue #436)
				
					
				
			This commit is contained in:
		| @@ -126,3 +126,103 @@ TEST_F(JsonVariant_Comparison_Tests, String) { | ||||
|   ASSERT_TRUE(std::string("world") != variant); | ||||
|   ASSERT_FALSE(std::string("world") == variant); | ||||
| } | ||||
|  | ||||
| TEST_F(JsonVariant_Comparison_Tests, IntegerInVariant) { | ||||
|   JsonVariant variant1 = 42; | ||||
|   JsonVariant variant2 = 42; | ||||
|   JsonVariant variant3 = 666; | ||||
|  | ||||
|   ASSERT_TRUE(variant1 == variant2); | ||||
|   ASSERT_FALSE(variant1 != variant2); | ||||
|  | ||||
|   ASSERT_TRUE(variant1 != variant3); | ||||
|   ASSERT_FALSE(variant1 == variant3); | ||||
| } | ||||
|  | ||||
| TEST_F(JsonVariant_Comparison_Tests, StringInVariant) { | ||||
|   JsonVariant variant1 = "0hello" + 1;  // make sure they have | ||||
|   JsonVariant variant2 = "1hello" + 1;  // different addresses | ||||
|   JsonVariant variant3 = "world"; | ||||
|  | ||||
|   ASSERT_TRUE(variant1 == variant2); | ||||
|   ASSERT_FALSE(variant1 != variant2); | ||||
|  | ||||
|   ASSERT_TRUE(variant1 != variant3); | ||||
|   ASSERT_FALSE(variant1 == variant3); | ||||
| } | ||||
|  | ||||
| TEST_F(JsonVariant_Comparison_Tests, DoubleInVariant) { | ||||
|   JsonVariant variant1 = 42.0; | ||||
|   JsonVariant variant2 = 42.0; | ||||
|   JsonVariant variant3 = 666.0; | ||||
|  | ||||
|   ASSERT_TRUE(variant1 == variant2); | ||||
|   ASSERT_FALSE(variant1 != variant2); | ||||
|  | ||||
|   ASSERT_TRUE(variant1 != variant3); | ||||
|   ASSERT_FALSE(variant1 == variant3); | ||||
| } | ||||
|  | ||||
| TEST_F(JsonVariant_Comparison_Tests, BoolInVariant) { | ||||
|   JsonVariant variant1 = true; | ||||
|   JsonVariant variant2 = true; | ||||
|   JsonVariant variant3 = false; | ||||
|  | ||||
|   ASSERT_TRUE(variant1 == variant2); | ||||
|   ASSERT_FALSE(variant1 != variant2); | ||||
|  | ||||
|   ASSERT_TRUE(variant1 != variant3); | ||||
|   ASSERT_FALSE(variant1 == variant3); | ||||
| } | ||||
|  | ||||
| TEST_F(JsonVariant_Comparison_Tests, ArrayInVariant) { | ||||
|   DynamicJsonBuffer jsonBuffer; | ||||
|   JsonArray& array1 = jsonBuffer.createArray(); | ||||
|   JsonArray& array2 = jsonBuffer.createArray(); | ||||
|  | ||||
|   JsonVariant variant1 = array1; | ||||
|   JsonVariant variant2 = array1; | ||||
|   JsonVariant variant3 = array2; | ||||
|  | ||||
|   ASSERT_TRUE(variant1 == variant2); | ||||
|   ASSERT_FALSE(variant1 != variant2); | ||||
|  | ||||
|   ASSERT_TRUE(variant1 != variant3); | ||||
|   ASSERT_FALSE(variant1 == variant3); | ||||
| } | ||||
|  | ||||
| TEST_F(JsonVariant_Comparison_Tests, ObjectInVariant) { | ||||
|   DynamicJsonBuffer jsonBuffer; | ||||
|   JsonObject& obj1 = jsonBuffer.createObject(); | ||||
|   JsonObject& obj2 = jsonBuffer.createObject(); | ||||
|  | ||||
|   JsonVariant variant1 = obj1; | ||||
|   JsonVariant variant2 = obj1; | ||||
|   JsonVariant variant3 = obj2; | ||||
|  | ||||
|   ASSERT_TRUE(variant1 == variant2); | ||||
|   ASSERT_FALSE(variant1 != variant2); | ||||
|  | ||||
|   ASSERT_TRUE(variant1 != variant3); | ||||
|   ASSERT_FALSE(variant1 == variant3); | ||||
| } | ||||
|  | ||||
| TEST_F(JsonVariant_Comparison_Tests, VariantsOfDifferentTypes) { | ||||
|   DynamicJsonBuffer jsonBuffer; | ||||
|   JsonVariant variants[] = { | ||||
|       true, | ||||
|       42, | ||||
|       666.667, | ||||
|       "hello", | ||||
|       jsonBuffer.createArray(), | ||||
|       jsonBuffer.createObject(), | ||||
|   }; | ||||
|   size_t n = sizeof(variants) / sizeof(variants[0]); | ||||
|  | ||||
|   for (size_t i = 0; i < n; i++) { | ||||
|     for (size_t j = i + 1; j < n; j++) { | ||||
|       ASSERT_TRUE(variants[i] != variants[j]); | ||||
|       ASSERT_FALSE(variants[i] == variants[j]); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -11,13 +11,26 @@ | ||||
|  | ||||
| using namespace ArduinoJson::TypeTraits; | ||||
|  | ||||
| TEST(StdStream, IsBaseOf) { | ||||
| TEST(TypeTraits, IsBaseOf) { | ||||
|   ASSERT_FALSE((IsBaseOf<std::istream, std::ostringstream>::value)); | ||||
|   ASSERT_TRUE((IsBaseOf<std::istream, std::istringstream>::value)); | ||||
|   ASSERT_TRUE((IsBaseOf<JsonVariantBase<JsonObjectSubscript<const char*> >, | ||||
|                         JsonObjectSubscript<const char*> >::value)); | ||||
| } | ||||
|  | ||||
| TEST(StdStream, IsArray) { | ||||
| TEST(TypeTraits, IsArray) { | ||||
|   ASSERT_FALSE((IsArray<const char*>::value)); | ||||
|   ASSERT_TRUE((IsArray<const char[]>::value)); | ||||
|   ASSERT_TRUE((IsArray<const char[10]>::value)); | ||||
| } | ||||
|  | ||||
| TEST(TypeTraits, IsVariant) { | ||||
|   ASSERT_TRUE((IsVariant<JsonObjectSubscript<const char*> >::value)); | ||||
|   ASSERT_TRUE((IsVariant<JsonVariant>::value)); | ||||
| } | ||||
|  | ||||
| TEST(TypeTraits, IsString) { | ||||
|   ASSERT_TRUE((IsString<const char*>::value)); | ||||
|   ASSERT_TRUE((IsString<std::string>::value)); | ||||
|   ASSERT_FALSE((IsString<double>::value)); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user