57 lines
2.5 KiB
C++
57 lines
2.5 KiB
C++
// tests/test_is_database_primitive.cpp
|
|
#include <catch2/catch_test_macros.hpp>
|
|
|
|
#include "matador/utils/types.hpp"
|
|
|
|
#include <string>
|
|
|
|
using namespace matador::utils;
|
|
|
|
TEST_CASE("is_database_primitive: true for all database_type alternatives", "[type_traits]") {
|
|
STATIC_REQUIRE(is_database_primitive_v<uint8_t>);
|
|
STATIC_REQUIRE(is_database_primitive_v<uint16_t>);
|
|
STATIC_REQUIRE(is_database_primitive_v<uint32_t>);
|
|
STATIC_REQUIRE(is_database_primitive_v<uint64_t>);
|
|
|
|
STATIC_REQUIRE(is_database_primitive_v<int8_t>);
|
|
STATIC_REQUIRE(is_database_primitive_v<int16_t>);
|
|
STATIC_REQUIRE(is_database_primitive_v<int32_t>);
|
|
STATIC_REQUIRE(is_database_primitive_v<int64_t>);
|
|
|
|
STATIC_REQUIRE(is_database_primitive_v<float>);
|
|
STATIC_REQUIRE(is_database_primitive_v<double>);
|
|
|
|
STATIC_REQUIRE(is_database_primitive_v<bool>);
|
|
|
|
STATIC_REQUIRE(is_database_primitive_v<const char*>);
|
|
STATIC_REQUIRE(is_database_primitive_v<std::string>);
|
|
|
|
STATIC_REQUIRE(is_database_primitive_v<blob_type_t>);
|
|
STATIC_REQUIRE(is_database_primitive_v<timestamp_type_t>);
|
|
STATIC_REQUIRE(is_database_primitive_v<date_type_t>);
|
|
STATIC_REQUIRE(is_database_primitive_v<time_type_t>);
|
|
|
|
STATIC_REQUIRE(is_database_primitive_v<std::nullptr_t>);
|
|
}
|
|
|
|
TEST_CASE("is_database_primitive: strips cv/ref qualifiers", "[type_traits]") {
|
|
STATIC_REQUIRE(is_database_primitive_v<const std::string&>);
|
|
STATIC_REQUIRE(is_database_primitive_v<volatile uint32_t>);
|
|
STATIC_REQUIRE(is_database_primitive_v<const blob_type_t&&>);
|
|
STATIC_REQUIRE(is_database_primitive_v<const date_type_t&>);
|
|
STATIC_REQUIRE(is_database_primitive_v<const std::nullptr_t&>);
|
|
}
|
|
|
|
TEST_CASE("is_database_primitive: false for non-alternatives (even if convertible)", "[type_traits]") {
|
|
STATIC_REQUIRE_FALSE(is_database_primitive_v<char*>); // not const char*
|
|
STATIC_REQUIRE_FALSE(is_database_primitive_v<char const[4]>); // array type != const char*
|
|
STATIC_REQUIRE_FALSE(is_database_primitive_v<std::string_view>); // not in variant
|
|
STATIC_REQUIRE_FALSE(is_database_primitive_v<long double>); // not in variant
|
|
STATIC_REQUIRE_FALSE(is_database_primitive_v<void*>); // not in variant
|
|
STATIC_REQUIRE_FALSE(is_database_primitive_v<null_type_t>); // your custom null wrapper isn't in variant
|
|
}
|
|
|
|
TEST_CASE("is_database_primitive: works via ::value too", "[type_traits]") {
|
|
STATIC_REQUIRE(is_database_primitive<int32_t>::value);
|
|
// STATIC_REQUIRE(is_database_primitive<unsigned>::value); // assuming unsigned != uint32_t on your platform
|
|
} |