mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			172 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // ArduinoJson - https://arduinojson.org
 | |
| // Copyright Benoit Blanchon 2014-2021
 | |
| // MIT License
 | |
| 
 | |
| #define ARDUINOJSON_ENABLE_PROGMEM 1
 | |
| #define ARDUINOJSON_ENABLE_ARDUINO_STRING 1
 | |
| 
 | |
| #include "custom_string.hpp"
 | |
| #include "progmem_emulation.hpp"
 | |
| #include "weird_strcmp.hpp"
 | |
| 
 | |
| #include <ArduinoJson/Strings/StringAdapters.hpp>
 | |
| 
 | |
| #include <catch.hpp>
 | |
| 
 | |
| using namespace ARDUINOJSON_NAMESPACE;
 | |
| 
 | |
| TEST_CASE("const char*") {
 | |
|   SECTION("null") {
 | |
|     StringAdapter<const char*> adapter(NULL);
 | |
| 
 | |
|     CHECK(adapter.compare("bravo") < 0);
 | |
|     CHECK(adapter.compare(NULL) == 0);
 | |
| 
 | |
|     CHECK(adapter.equals(NULL));
 | |
|     CHECK_FALSE(adapter.equals("charlie"));
 | |
| 
 | |
|     CHECK(adapter.size() == 0);
 | |
|   }
 | |
| 
 | |
|   SECTION("non-null") {
 | |
|     StringAdapter<const char*> adapter("bravo");
 | |
| 
 | |
|     CHECK(adapter.compare(NULL) > 0);
 | |
|     CHECK(adapter.compare("alpha") > 0);
 | |
|     CHECK(adapter.compare("bravo") == 0);
 | |
|     CHECK(adapter.compare("charlie") < 0);
 | |
| 
 | |
|     CHECK(adapter.equals("bravo"));
 | |
|     CHECK_FALSE(adapter.equals("charlie"));
 | |
| 
 | |
|     CHECK(adapter.size() == 5);
 | |
|   }
 | |
| }
 | |
| 
 | |
| TEST_CASE("const char* + size") {
 | |
|   SECTION("null") {
 | |
|     StringAdapter<const char*, true> adapter(NULL, 10);
 | |
| 
 | |
|     CHECK(adapter.compare("bravo") < 0);
 | |
|     CHECK(adapter.compare(NULL) == 0);
 | |
| 
 | |
|     CHECK(adapter.equals(NULL));
 | |
|     CHECK_FALSE(adapter.equals("charlie"));
 | |
| 
 | |
|     CHECK(adapter.size() == 10);
 | |
|   }
 | |
| 
 | |
|   SECTION("non-null") {
 | |
|     StringAdapter<const char*, true> adapter("bravo", 5);
 | |
| 
 | |
|     CHECK(adapter.compare(NULL) > 0);
 | |
|     CHECK(adapter.compare("alpha") > 0);
 | |
|     CHECK(adapter.compare("bravo") == 0);
 | |
|     CHECK(adapter.compare("charlie") < 0);
 | |
| 
 | |
|     CHECK(adapter.equals("bravo"));
 | |
|     CHECK_FALSE(adapter.equals("charlie"));
 | |
| 
 | |
|     CHECK(adapter.size() == 5);
 | |
|   }
 | |
| }
 | |
| 
 | |
| TEST_CASE("const __FlashStringHelper*") {
 | |
|   SECTION("null") {
 | |
|     StringAdapter<const __FlashStringHelper*> adapter(NULL);
 | |
| 
 | |
|     CHECK(adapter.compare("bravo") < 0);
 | |
|     CHECK(adapter.compare(NULL) == 0);
 | |
| 
 | |
|     CHECK(adapter.equals(NULL));
 | |
|     CHECK_FALSE(adapter.equals("charlie"));
 | |
| 
 | |
|     CHECK(adapter.size() == 0);
 | |
|   }
 | |
| 
 | |
|   SECTION("non-null") {
 | |
|     StringAdapter<const __FlashStringHelper*> adapter = adaptString(F("bravo"));
 | |
| 
 | |
|     CHECK(adapter.compare(NULL) > 0);
 | |
|     CHECK(adapter.compare("alpha") > 0);
 | |
|     CHECK(adapter.compare("bravo") == 0);
 | |
|     CHECK(adapter.compare("charlie") < 0);
 | |
| 
 | |
|     CHECK(adapter.equals("bravo"));
 | |
|     CHECK_FALSE(adapter.equals("charlie"));
 | |
| 
 | |
|     CHECK(adapter.size() == 5);
 | |
|   }
 | |
| }
 | |
| 
 | |
| TEST_CASE("std::string") {
 | |
|   std::string str("bravo");
 | |
|   StringAdapter<std::string> adapter(str);
 | |
| 
 | |
|   CHECK(adapter.compare(NULL) > 0);
 | |
|   CHECK(adapter.compare("alpha") > 0);
 | |
|   CHECK(adapter.compare("bravo") == 0);
 | |
|   CHECK(adapter.compare("charlie") < 0);
 | |
| 
 | |
|   CHECK(adapter.equals("bravo"));
 | |
|   CHECK_FALSE(adapter.equals("charlie"));
 | |
| 
 | |
|   CHECK(adapter.size() == 5);
 | |
| }
 | |
| 
 | |
| TEST_CASE("Arduino String") {
 | |
|   ::String str("bravo");
 | |
|   StringAdapter< ::String> adapter(str);
 | |
| 
 | |
|   CHECK(adapter.compare(NULL) > 0);
 | |
|   CHECK(adapter.compare("alpha") > 0);
 | |
|   CHECK(adapter.compare("bravo") == 0);
 | |
|   CHECK(adapter.compare("charlie") < 0);
 | |
| 
 | |
|   CHECK(adapter.equals("bravo"));
 | |
|   CHECK_FALSE(adapter.equals("charlie"));
 | |
| 
 | |
|   CHECK(adapter.size() == 5);
 | |
| }
 | |
| 
 | |
| TEST_CASE("custom_string") {
 | |
|   custom_string str("bravo");
 | |
|   StringAdapter<custom_string> adapter(str);
 | |
| 
 | |
|   CHECK(adapter.compare(NULL) > 0);
 | |
|   CHECK(adapter.compare("alpha") > 0);
 | |
|   CHECK(adapter.compare("bravo") == 0);
 | |
|   CHECK(adapter.compare("charlie") < 0);
 | |
| 
 | |
|   CHECK(adapter.equals("bravo"));
 | |
|   CHECK_FALSE(adapter.equals("charlie"));
 | |
| 
 | |
|   CHECK(adapter.size() == 5);
 | |
| }
 | |
| 
 | |
| TEST_CASE("IsString<T>") {
 | |
|   SECTION("std::string") {
 | |
|     CHECK(IsString<std::string>::value == true);
 | |
|   }
 | |
| 
 | |
|   SECTION("basic_string<wchar_t>") {
 | |
|     CHECK(IsString<std::basic_string<wchar_t> >::value == false);
 | |
|   }
 | |
| 
 | |
|   SECTION("custom_string") {
 | |
|     CHECK(IsString<custom_string>::value == true);
 | |
|   }
 | |
| 
 | |
|   SECTION("const __FlashStringHelper*") {
 | |
|     CHECK(IsString<const __FlashStringHelper*>::value == true);
 | |
|   }
 | |
| 
 | |
|   SECTION("const char*") {
 | |
|     CHECK(IsString<const char*>::value == true);
 | |
|   }
 | |
| 
 | |
|   SECTION("const char[]") {
 | |
|     CHECK(IsString<const char[8]>::value == true);
 | |
|   }
 | |
| }
 |