TEST(JsonVariant_As_Tests, ArrayAsJsonArray) { DynamicJsonBuffer buffer; JsonArray& arr = buffer.createArray(); JsonVariant variant = arr; ASSERT_EQ(&arr, &variant.as<JsonArray&>()); ASSERT_EQ(&arr, &variant.as<JsonArray>()); // <- shorthand }
TEST(StdStream, JsonArraySubscript) { std::ostringstream os; DynamicJsonBuffer jsonBuffer; JsonArray& array = jsonBuffer.createArray(); array.add("value"); os << array[0]; ASSERT_EQ("\"value\"", os.str()); }
TEST(DynamicJsonBuffer_Array_Tests, CanAdd1000Values) { DynamicJsonBuffer jsonBuffer; JsonArray &array = jsonBuffer.createArray(); for (int i = 1; i <= 1000; i++) { array.add("hello"); ASSERT_EQ(array.size(), i); } }
TEST(JsonVariant_As_Tests, ArrayAsString) { DynamicJsonBuffer buffer; JsonArray& arr = buffer.createArray(); arr.add(4); arr.add(2); JsonVariant variant = arr; ASSERT_EQ(String("[4,2]"), variant.as<String>()); }
TEST(JsonArray_CopyFrom_Tests, TwoDimensions) { DynamicJsonBuffer jsonBuffer; JsonArray& array = jsonBuffer.createArray(); char json[32]; int source[][3] = {{1, 2, 3}, {4, 5, 6}}; bool ok = array.copyFrom(source); ASSERT_TRUE(ok); array.printTo(json, sizeof(json)); ASSERT_STREQ("[[1,2,3],[4,5,6]]", json); }
TEST(JsonArray_CopyFrom_Tests, OneDimension) { DynamicJsonBuffer jsonBuffer; JsonArray& array = jsonBuffer.createArray(); char json[32]; int source[] = {1, 2, 3}; bool ok = array.copyFrom(source); ASSERT_TRUE(ok); array.printTo(json, sizeof(json)); ASSERT_STREQ("[1,2,3]", json); }
TEST(DynamicJsonBuffer_Array_Tests, GrowsWithArray) { DynamicJsonBuffer jsonBuffer; JsonArray &array = jsonBuffer.createArray(); ASSERT_EQ(JSON_ARRAY_SIZE(0), jsonBuffer.size()); array.add("hello"); ASSERT_EQ(JSON_ARRAY_SIZE(1), jsonBuffer.size()); array.add("world"); ASSERT_EQ(JSON_ARRAY_SIZE(2), jsonBuffer.size()); }
/** * Get plugin information */ void handleGetPlugins(AsyncWebServerRequest *request) { DEBUG_MSG(SERVER, "%s (%d args)\n", request->url().c_str(), request->params()); DynamicJsonBuffer jsonBuffer; JsonArray& json = jsonBuffer.createArray(); Plugin::each([&json](Plugin* plugin) { JsonObject& obj = json.createNestedObject(); obj[F("name")] = plugin->getName(); plugin->getPluginJson(&obj); }); jsonResponse(request, 200, json); }
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, 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]); } } }
// Copyright Benoit Blanchon 2014-2017 // MIT License // // Arduino JSON library // https://bblanchon.github.io/ArduinoJson/ // If you like this project, please add a star! #include <ArduinoJson.h> #include <catch.hpp> TEST_CASE("DynamicJsonBuffer::createArray()") { DynamicJsonBuffer jsonBuffer; JsonArray &array = jsonBuffer.createArray(); SECTION("GrowsWithArray") { REQUIRE(JSON_ARRAY_SIZE(0) == jsonBuffer.size()); array.add("hello"); REQUIRE(JSON_ARRAY_SIZE(1) == jsonBuffer.size()); array.add("world"); REQUIRE(JSON_ARRAY_SIZE(2) == jsonBuffer.size()); } SECTION("CanAdd1000Values") { for (size_t i = 1; i <= 1000; i++) { array.add("hello"); REQUIRE(array.size() == i); } } }
#include <ArduinoJson.h> #include <catch.hpp> static void check(JsonArray& array, std::string expected) { std::string actual; size_t actualLen = array.prettyPrintTo(actual); size_t measuredLen = array.measurePrettyLength(); CHECK(actualLen == expected.size()); CHECK(measuredLen == expected.size()); REQUIRE(expected == actual); } TEST_CASE("JsonArray::prettyPrintTo()") { DynamicJsonBuffer jb; JsonArray& array = jb.createArray(); SECTION("Empty") { check(array, "[]"); } SECTION("OneElement") { array.add(1); check(array, "[\r\n" " 1\r\n" "]"); } SECTION("TwoElements") {
TEST(JsonVariant_Success_Tests, ReturnsTrue_WhenEmptyArray) { DynamicJsonBuffer jsonBuffer; JsonVariant variant = jsonBuffer.createArray(); EXPECT_TRUE(variant.success()); }
// Copyright Benoit Blanchon 2014-2017 // MIT License // // Arduino JSON library // https://bblanchon.github.io/ArduinoJson/ // If you like this project, please add a star! #include <ArduinoJson.h> #include <catch.hpp> TEST_CASE("JsonArray::add()") { DynamicJsonBuffer _jsonBuffer; JsonArray& _array = _jsonBuffer.createArray(); SECTION("SizeIncreased_WhenValuesAreAdded") { _array.add("hello"); REQUIRE(1U == _array.size()); } SECTION("int") { _array.add(123); REQUIRE(123 == _array[0].as<int>()); REQUIRE(_array[0].is<int>()); REQUIRE(_array[0].is<double>()); } SECTION("double") { _array.add(123.45); REQUIRE(123.45 == _array[0].as<double>()); REQUIRE(_array[0].is<double>()); REQUIRE_FALSE(_array[0].is<bool>());
REQUIRE(var.is<const char*>()); REQUIRE_FALSE(var.is<bool>()); REQUIRE_FALSE(var.is<int>()); REQUIRE_FALSE(var.is<double>()); REQUIRE_FALSE(var.is<float>()); REQUIRE_FALSE(var.is<long>()); REQUIRE_FALSE(var.is<JsonArray>()); REQUIRE_FALSE(var.is<JsonObject>()); } TEST_CASE("JsonVariant::is()") { DynamicJsonBuffer jsonBuffer; SECTION("JsonArray") { checkIsArray(jsonBuffer.createArray()); } SECTION("bool") { checkIsBool(true); checkIsBool(false); } SECTION("double") { checkIsFloat(4.2); } SECTION("int") { checkIsInteger(42); }
#include <ArduinoJson.h> #include <catch.hpp> #if defined(__clang__) #pragma clang diagnostic ignored "-Wdeprecated-declarations" #elif defined(__GNUC__) #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #elif defined(_MSC_VER) #pragma warning(disable : 4996) #endif TEST_CASE("Deprecated functions") { DynamicJsonBuffer jsonBuffer; SECTION("JsonVariant::asArray()") { JsonVariant variant = jsonBuffer.createArray(); REQUIRE(variant.asArray().success()); } SECTION("JsonVariant::asObject()") { JsonVariant variant = jsonBuffer.createObject(); REQUIRE(variant.asObject().success()); } SECTION("JsonVariant::asString()") { JsonVariant variant = "hello"; REQUIRE(std::string("hello") == variant.asString()); } SECTION("JsonArray::removeAt()") { JsonArray& arr = jsonBuffer.createArray();