70 lines
1.4 KiB
C++
70 lines
1.4 KiB
C++
#include <catch2/catch_test_macros.hpp>
|
|
|
|
#include "matador/sql/value.hpp"
|
|
#include "matador/utils/types.hpp"
|
|
|
|
using namespace matador::sql;
|
|
|
|
TEST_CASE("Test value class", "[value]") {
|
|
value v;
|
|
|
|
REQUIRE(v.is_unknown());
|
|
REQUIRE(v.type() == data_type_t::type_unknown);
|
|
REQUIRE(v.size() == 0);
|
|
|
|
v = 7;
|
|
|
|
REQUIRE(v.is_integer());
|
|
REQUIRE(v.type() == data_type_t::type_int);
|
|
REQUIRE(v.size() == 0);
|
|
REQUIRE(v.as<int>() == 7);
|
|
REQUIRE(v.as<long>() == 7);
|
|
|
|
v = "test";
|
|
|
|
REQUIRE(v.is_varchar());
|
|
REQUIRE(v.type() == data_type_t::type_char_pointer);
|
|
REQUIRE(v.size() == 4);
|
|
|
|
v = std::string{"hello"};
|
|
|
|
REQUIRE(v.is_varchar());
|
|
REQUIRE(v.type() == data_type_t::type_varchar);
|
|
REQUIRE(v.size() == 5);
|
|
|
|
v = 4.5;
|
|
|
|
REQUIRE(v.is_floating_point());
|
|
REQUIRE(v.type() == data_type_t::type_double);
|
|
REQUIRE(v.size() == 0);
|
|
|
|
v = 6.7f;
|
|
|
|
REQUIRE(v.is_floating_point());
|
|
REQUIRE(v.type() == data_type_t::type_float);
|
|
REQUIRE(v.size() == 0);
|
|
|
|
v = std::string();
|
|
|
|
REQUIRE(v.is_string());
|
|
REQUIRE(v.type() == data_type_t::type_text);
|
|
REQUIRE(v.size() == 0);
|
|
|
|
v = true;
|
|
|
|
REQUIRE(v.is_bool());
|
|
REQUIRE(v.type() == data_type_t::type_bool);
|
|
REQUIRE(v.size() == 0);
|
|
|
|
v = nullptr;
|
|
|
|
REQUIRE(v.is_null());
|
|
REQUIRE(v.type() == data_type_t::type_null);
|
|
REQUIRE(v.size() == 0);
|
|
|
|
v = matador::utils::blob{ 1, 2, 3, 4 };
|
|
|
|
REQUIRE(v.is_blob());
|
|
REQUIRE(v.type() == data_type_t::type_blob);
|
|
REQUIRE(v.size() == 4);
|
|
} |