1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
#include <opentracing/value.h>
using namespace opentracing;
#define CATCH_CONFIG_MAIN
#include <opentracing/catch2/catch.hpp>
TEST_CASE("Value") {
SECTION("Signed integers get converted to int64_t.") {
Value v1(123);
CHECK(v1.is<int64_t>());
Value v2(static_cast<short>(123));
CHECK(v2.is<int64_t>());
}
SECTION("Unsigned integers get converted to uint64_t.") {
Value v1(123u);
CHECK(v1.is<uint64_t>());
Value v2(static_cast<unsigned short>(123));
CHECK(v2.is<uint64_t>());
}
SECTION("Bool values are deduced as bool.") {
Value v1(true);
// Workaround for "disabled expansion of recursive macro" warning.
const auto is_bool = v1.is<bool>();
CHECK(is_bool);
}
SECTION("Floating point numbers are converted to double.") {
Value v1(1.0);
CHECK(v1.is<double>());
Value v2(1.0f);
CHECK(v2.is<double>());
}
SECTION("std::string values are deduced as std::string.") {
Value v1(std::string("abc"));
CHECK(v1.is<std::string>());
}
SECTION("c-string values are deduced as c-strings.") {
Value v1("abc");
CHECK(v1.is<const char*>());
}
SECTION("Complex values are permitted.") {
Value v1(Values{Value(1), Value(2)});
(void)v1;
Value v2(Dictionary{{"abc", Value(123)}});
(void)v2;
}
SECTION("Value types can be compared for equality.") {
Value v1{1}, v2{2}, v3{1.0};
CHECK(v1 == v1);
CHECK(v1 != v2);
CHECK(v1 != v3);
}
}
|