Tasmota/lib-before-5.9.1f/ArduinoJson/test/JsonVariant_Storage_Tests.cpp
arendst 299bed1c05 v5.9.1f - Update libraries and a fix
5.9.1f
 * Upgrade library ArduinoJson to 5.11.2
 * Upgrade library
IRRemoteEsp8266 to 2.2.1 + 2 commits but tweaked some protocols to keep
code usage small
 * Upgrade library NeoPixelBus to 2.2.9
 * Upgrade
library OneWire to 2.3.3 + 6 commits
 * Formalize library PubSubClient
to 2.6 + 9 commits and additional delay
 * Add optional ADS1115 driver
as alternative for unsupported I2Cdevlib in esp8266-core 2.4.0-rc2
 *
Fix wrong response name for command HlwISet (#1214)
2017-11-19 18:02:03 +01:00

132 lines
3.2 KiB
C++

// Copyright Benoit Blanchon 2014-2017
// MIT License
//
// Arduino JSON library
// https://github.com/bblanchon/ArduinoJson
// If you like this project, please add a star!
#include <ArduinoJson.h>
#include <gtest/gtest.h>
#include <stdint.h>
#include <limits>
class JsonVariant_Storage_Tests : public ::testing::Test {
protected:
template <typename T>
void testValue(T expected) {
JsonVariant variant = expected;
EXPECT_EQ(expected, variant.as<T>());
}
template <typename T>
void testReference(T &expected) {
JsonVariant variant = expected;
EXPECT_EQ(expected, variant.as<T &>());
}
template <typename T>
void testNumericType() {
T min = std::numeric_limits<T>::min();
T max = std::numeric_limits<T>::max();
JsonVariant variantMin(min);
JsonVariant variantMax(max);
EXPECT_EQ(min, variantMin.as<T>());
EXPECT_EQ(max, variantMax.as<T>());
}
};
#if ARDUINOJSON_USE_LONG_LONG || ARDUINOJSON_USE_INT64
TEST_F(JsonVariant_Storage_Tests, SizeOfJsonInteger) {
ASSERT_EQ(8, sizeof(Internals::JsonInteger));
}
#endif
TEST_F(JsonVariant_Storage_Tests, Null) {
testValue<const char *>(NULL);
}
TEST_F(JsonVariant_Storage_Tests, String) {
testValue<const char *>("hello");
}
TEST_F(JsonVariant_Storage_Tests, False) {
testValue<bool>(false);
}
TEST_F(JsonVariant_Storage_Tests, True) {
testValue<bool>(true);
}
TEST_F(JsonVariant_Storage_Tests, Double) {
testNumericType<double>();
}
TEST_F(JsonVariant_Storage_Tests, Float) {
testNumericType<float>();
}
TEST_F(JsonVariant_Storage_Tests, SChar) {
testNumericType<signed char>();
}
TEST_F(JsonVariant_Storage_Tests, SInt) {
testNumericType<signed int>();
}
TEST_F(JsonVariant_Storage_Tests, SLong) {
testNumericType<signed long>();
}
TEST_F(JsonVariant_Storage_Tests, SShort) {
testNumericType<signed short>();
}
TEST_F(JsonVariant_Storage_Tests, UChar) {
testNumericType<unsigned char>();
}
TEST_F(JsonVariant_Storage_Tests, UInt) {
testNumericType<unsigned int>();
}
TEST_F(JsonVariant_Storage_Tests, ULong) {
testNumericType<unsigned long>();
}
TEST_F(JsonVariant_Storage_Tests, UShort) {
testNumericType<unsigned short>();
}
#if ARDUINOJSON_USE_LONG_LONG || ARDUINOJSON_USE_INT64
TEST_F(JsonVariant_Storage_Tests, LongLong) {
testNumericType<unsigned long long>();
}
TEST_F(JsonVariant_Storage_Tests, ULongLong) {
testNumericType<unsigned long long>();
}
#endif
TEST_F(JsonVariant_Storage_Tests, Int8) {
testNumericType<int8_t>();
}
TEST_F(JsonVariant_Storage_Tests, Uint8) {
testNumericType<uint8_t>();
}
TEST_F(JsonVariant_Storage_Tests, Int16) {
testNumericType<int16_t>();
}
TEST_F(JsonVariant_Storage_Tests, Uint16) {
testNumericType<uint16_t>();
}
TEST_F(JsonVariant_Storage_Tests, Int32) {
testNumericType<int32_t>();
}
TEST_F(JsonVariant_Storage_Tests, Uint32) {
testNumericType<uint32_t>();
}
#if ARDUINOJSON_USE_LONG_LONG || ARDUINOJSON_USE_INT64
TEST_F(JsonVariant_Storage_Tests, Int64) {
testNumericType<int64_t>();
}
TEST_F(JsonVariant_Storage_Tests, Uint64) {
testNumericType<uint64_t>();
}
#endif
TEST_F(JsonVariant_Storage_Tests, CanStoreObject) {
DynamicJsonBuffer jsonBuffer;
JsonObject &object = jsonBuffer.createObject();
testReference(object);
}