arduino/libraries/ArduinoJson/test/JsonVariant/or.cpp

90 lines
1.9 KiB
C++
Raw Normal View History

2018-11-03 20:21:33 +00:00
// ArduinoJson - arduinojson.org
// Copyright Benoit Blanchon 2014-2018
// MIT License
#include <ArduinoJson.h>
#include <catch.hpp>
TEST_CASE("JsonVariant::operator|()") {
2018-11-13 14:50:48 +00:00
DynamicJsonDocument doc;
JsonVariant variant = doc.to<JsonVariant>();
2018-11-03 20:21:33 +00:00
2018-11-13 14:50:48 +00:00
SECTION("undefined") {
SECTION("undefined | const char*") {
std::string result = variant | "default";
REQUIRE(result == "default");
}
2018-11-03 20:21:33 +00:00
2018-11-13 14:50:48 +00:00
SECTION("undefined | int") {
int result = variant | 42;
REQUIRE(result == 42);
}
2018-11-03 20:21:33 +00:00
2018-11-13 14:50:48 +00:00
SECTION("undefined | bool") {
bool result = variant | true;
REQUIRE(result == true);
}
2018-11-03 20:21:33 +00:00
}
2018-11-13 14:50:48 +00:00
SECTION("null") {
variant.set(static_cast<const char*>(0));
2018-11-03 20:21:33 +00:00
2018-11-13 14:50:48 +00:00
SECTION("null | const char*") {
std::string result = variant | "default";
REQUIRE(result == "default");
}
SECTION("null | int") {
int result = variant | 42;
REQUIRE(result == 42);
}
SECTION("null | bool") {
bool result = variant | true;
REQUIRE(result == true);
}
2018-11-03 20:21:33 +00:00
}
SECTION("int | const char*") {
2018-11-13 14:50:48 +00:00
variant.set(42);
2018-11-03 20:21:33 +00:00
std::string result = variant | "default";
REQUIRE(result == "default");
}
SECTION("int | int") {
2018-11-13 14:50:48 +00:00
variant.set(0);
2018-11-03 20:21:33 +00:00
int result = variant | 666;
REQUIRE(result == 0);
}
SECTION("double | int") {
2018-11-13 14:50:48 +00:00
variant.set(42.0);
2018-11-03 20:21:33 +00:00
int result = variant | 666;
REQUIRE(result == 42);
}
SECTION("bool | bool") {
2018-11-13 14:50:48 +00:00
variant.set(false);
2018-11-03 20:21:33 +00:00
bool result = variant | true;
REQUIRE(result == false);
}
SECTION("int | bool") {
2018-11-13 14:50:48 +00:00
variant.set(0);
2018-11-03 20:21:33 +00:00
bool result = variant | true;
REQUIRE(result == true);
}
SECTION("const char* | const char*") {
2018-11-13 14:50:48 +00:00
variant.set("not default");
2018-11-03 20:21:33 +00:00
std::string result = variant | "default";
REQUIRE(result == "not default");
}
SECTION("const char* | int") {
2018-11-13 14:50:48 +00:00
variant.set("not default");
2018-11-03 20:21:33 +00:00
int result = variant | 42;
REQUIRE(result == 42);
}
}