Improved error checking in Value + more to array conversion control.
This commit is contained in:
parent
1fe7d3c56d
commit
d9854d81fa
3 changed files with 153 additions and 18 deletions
|
|
@ -87,3 +87,62 @@ TEST(Pgsql_Value, getAsArray_QDateTime)
|
|||
|
||||
ASSERT_EQ(r.size(), 2);
|
||||
}
|
||||
|
||||
TEST(Pgsql_Value, getAsArray_throws_on_NULL)
|
||||
{
|
||||
Pgsql::Value v("{1,NULL,2}", TEXTARRAYOID);
|
||||
std::vector<int> r;
|
||||
try {
|
||||
v.getAsArray<int>(std::back_inserter(r));
|
||||
FAIL();
|
||||
} catch (std::runtime_error &) {
|
||||
SUCCEED();
|
||||
} catch (...) {
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Pgsql_Value, getAsArray_default_on_NULL)
|
||||
{
|
||||
Pgsql::Value v("{1,NULL,2}", TEXTARRAYOID);
|
||||
std::vector<int> r;
|
||||
try {
|
||||
v.getAsArray<int>(std::back_inserter(r), -1);
|
||||
ASSERT_EQ(r.size(), 3);
|
||||
ASSERT_EQ(r[0], 1);
|
||||
ASSERT_EQ(r[1], -1);
|
||||
ASSERT_EQ(r[2], 2);
|
||||
} catch (...) {
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Pgsql_Value, getAsArray_ignore_NULL)
|
||||
{
|
||||
Pgsql::Value v("{1,NULL,2}", TEXTARRAYOID);
|
||||
std::vector<int> r;
|
||||
try {
|
||||
v.getAsArray<int>(std::back_inserter(r), Value::NullHandling::Ignore);
|
||||
ASSERT_EQ(r.size(), 2);
|
||||
ASSERT_EQ(r[0], 1);
|
||||
ASSERT_EQ(r[1], 2);
|
||||
} catch (...) {
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Pgsql_Value, getAsArrayOptional)
|
||||
{
|
||||
Pgsql::Value v("{1,NULL,2}", TEXTARRAYOID);
|
||||
std::vector<std::optional<int>> r;
|
||||
try {
|
||||
v.getAsArrayOfOptional<int>(std::back_inserter(r));
|
||||
ASSERT_EQ(r.size(), 3);
|
||||
ASSERT_EQ(r[0], 1);
|
||||
ASSERT_EQ(r[1], std::nullopt);
|
||||
ASSERT_EQ(r[2], 2);
|
||||
} catch (...) {
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue