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());
}
Beispiel #8
0
/**
 * 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]);
    }
  }
}
Beispiel #11
0
// 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);
    }
  }
}
Beispiel #12
0
#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());
}
Beispiel #14
0
// 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>());
Beispiel #15
0
  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);
  }
Beispiel #16
0
#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();