1#include "catch.hpp"
2#include "test_helpers.hpp"
3
4using namespace duckdb;
5using namespace std;
6
7TEST_CASE("Test string casts", "[cast]") {
8 unique_ptr<QueryResult> result;
9 DuckDB db(nullptr);
10 Connection con(db);
11 con.EnableQueryVerification();
12
13 // boolean -> string
14 result = con.Query("SELECT (1=1)::VARCHAR, (1=0)::VARCHAR, NULL::BOOLEAN::VARCHAR");
15 REQUIRE(CHECK_COLUMN(result, 0, {"true"}));
16 REQUIRE(CHECK_COLUMN(result, 1, {"false"}));
17 REQUIRE(CHECK_COLUMN(result, 2, {Value()}));
18 // tinyint -> string
19 result = con.Query("SELECT 1::TINYINT::VARCHAR, 12::TINYINT::VARCHAR, (-125)::TINYINT::VARCHAR");
20 REQUIRE(CHECK_COLUMN(result, 0, {"1"}));
21 REQUIRE(CHECK_COLUMN(result, 1, {"12"}));
22 REQUIRE(CHECK_COLUMN(result, 2, {"-125"}));
23 // smallint -> string
24 result = con.Query("SELECT 1::SMALLINT::VARCHAR, 12442::SMALLINT::VARCHAR, (-32153)::SMALLINT::VARCHAR");
25 REQUIRE(CHECK_COLUMN(result, 0, {"1"}));
26 REQUIRE(CHECK_COLUMN(result, 1, {"12442"}));
27 REQUIRE(CHECK_COLUMN(result, 2, {"-32153"}));
28 // integer -> string
29 result = con.Query("SELECT 1::INTEGER::VARCHAR, 12442952::INTEGER::VARCHAR, (-2000000111)::INTEGER::VARCHAR");
30 REQUIRE(CHECK_COLUMN(result, 0, {"1"}));
31 REQUIRE(CHECK_COLUMN(result, 1, {"12442952"}));
32 REQUIRE(CHECK_COLUMN(result, 2, {"-2000000111"}));
33 // bigint -> string
34 result =
35 con.Query("SELECT 1::BIGINT::VARCHAR, 1244295295289253::BIGINT::VARCHAR, (-2000000111551166)::BIGINT::VARCHAR");
36 REQUIRE(CHECK_COLUMN(result, 0, {"1"}));
37 REQUIRE(CHECK_COLUMN(result, 1, {"1244295295289253"}));
38 REQUIRE(CHECK_COLUMN(result, 2, {"-2000000111551166"}));
39 // float -> string
40 result = con.Query("SELECT 2::FLOAT::VARCHAR, 0.5::FLOAT::VARCHAR, (-128.5)::FLOAT::VARCHAR");
41 REQUIRE(CHECK_COLUMN(result, 0, {"2.0"}));
42 REQUIRE(CHECK_COLUMN(result, 1, {"0.5"}));
43 REQUIRE(CHECK_COLUMN(result, 2, {"-128.5"}));
44 // double -> string
45 result = con.Query("SELECT 2::DOUBLE::VARCHAR, 0.5::DOUBLE::VARCHAR, (-128.5)::DOUBLE::VARCHAR");
46 REQUIRE(CHECK_COLUMN(result, 0, {"2.0"}));
47 REQUIRE(CHECK_COLUMN(result, 1, {"0.5"}));
48 REQUIRE(CHECK_COLUMN(result, 2, {"-128.5"}));
49}
50