#include #include "matador/utils/convert.hpp" //#include "matador/utils/date.hpp" //#include "matador/utils/time.hpp" #include "matador/utils/types.hpp" using namespace matador::utils; template void validate_conversion(From from) { auto res = to(from); REQUIRE(res.is_ok()); REQUIRE(static_cast(from) == *res); } template void validate_conversion(const From &from, To expected_to) { auto res = to(from); REQUIRE(res.is_ok()); REQUIRE(*res == expected_to); } template void validate_conversion(const From &from, const std::string &expected_to) { auto res = to(from); REQUIRE(res.is_ok()); REQUIRE(*res == expected_to); } template void validate_conversion(const From &from, const char *expected_to) { validate_conversion(from, std::string{expected_to}); } template void validate_integral_conversion(From from) { validate_conversion(from); validate_conversion(from); validate_conversion(from); validate_conversion(from); } TEST_CASE("Test integral conversion", "[convert][integral]") { validate_integral_conversion(-56); validate_integral_conversion(-127); validate_integral_conversion(-9876543); validate_integral_conversion(-123456790); validate_integral_conversion(56); validate_integral_conversion(127); validate_integral_conversion(9876543); validate_integral_conversion(123456790); validate_conversion(513, 1); validate_conversion(515, 3); validate_conversion(516, 4); } TEST_CASE("Test floating point conversion", "[convert][floating_point]") { validate_conversion(-0.1f); validate_conversion(-0.1f); validate_conversion(-0.44444); validate_conversion(-0.44444); } TEST_CASE("Test integral to string conversion", "[convert][integral][string]") { validate_conversion(-56, "-56"); validate_conversion(-127, "-127"); validate_conversion(-9876543, "-9876543"); validate_conversion(-123456790, "-123456790"); validate_conversion(56, "56"); validate_conversion(127, "127"); validate_conversion(9876543, "9876543"); validate_conversion(123456790, "123456790"); } TEST_CASE("Test floating point to string conversion", "[convert][floating_point][string]") { validate_conversion(-56.1234f, "-56.1234"); validate_conversion(-127.444449, "-127.444449"); } TEST_CASE("Test string to integral conversion", "[convert][string][integral]") { validate_conversion("-56", -56); validate_conversion("-127", -127); validate_conversion("-9876543", -9876543); validate_conversion("-123456790", -123456790); validate_conversion("56", 56); validate_conversion("127", 127); validate_conversion("9876543", 9876543); validate_conversion("123456790", 123456790); validate_conversion("-56", -56); validate_conversion("-127", -127); validate_conversion("-9876543", -9876543); validate_conversion("-123456790", -123456790); validate_conversion("56", 56); validate_conversion("127", 127); validate_conversion("9876543", 9876543); validate_conversion("123456790", 123456790); } TEST_CASE("Test string to floating point conversion", "[convert][string][floating_point]") { validate_conversion("-56.1234", -56.1234f); validate_conversion("-127.444449", -127.444449); validate_conversion("-56.1234", -56.1234f); validate_conversion("-127.444449", -127.444449); } TEST_CASE("Test blob to blob conversion", "[convert][blob]") { blob from{1, 2, 3, 4}; const auto res = to(from); REQUIRE(res.is_ok()); REQUIRE(from == *res); } // TEST_CASE("Validate date to string conversion", "[convert][date][string]") { // matador::date today; // const auto expected_string = matador::utils::to_string(today); // std::string to; // // convert(to, today); // // REQUIRE(expected_string == to); // } // // TEST_CASE("Validate date conversion leads to an exception", "[convert][date][exception]") { // matador::date today; // int to{}; // convert(to, today); // REQUIRE(to == today.julian_date()); // } // // TEST_CASE("Validate time to string conversion", "[convert][time][string]") { // matador::time now; // const auto expected_string = matador::utils::to_string(now); // std::string to; // // convert(to, now); // // REQUIRE(expected_string == to); // } // // TEST_CASE("Validate time conversion leads to an exception", "[convert][time][exception]") { // matador::time now; // int to; // convert(to, now); // REQUIRE(to == now.get_time_info().seconds_since_epoch); // }