diff options
Diffstat (limited to 'libdbpp/unittests/testUtils.cpp')
-rw-r--r-- | libdbpp/unittests/testUtils.cpp | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/libdbpp/unittests/testUtils.cpp b/libdbpp/unittests/testUtils.cpp index b7947c7..e86d851 100644 --- a/libdbpp/unittests/testUtils.cpp +++ b/libdbpp/unittests/testUtils.cpp @@ -25,7 +25,7 @@ BOOST_AUTO_TEST_CASE( forEachRow ) sel->forEachRow<int64_t, double, std::string, boost::posix_time::ptime, boost::posix_time::time_duration, bool>( [](auto a, auto b, auto c, auto d, auto e, auto f) { BOOST_REQUIRE_EQUAL(1, a); - BOOST_REQUIRE_EQUAL(2.3, b); + BOOST_REQUIRE_CLOSE(4.3, b, 0.001); BOOST_REQUIRE_EQUAL("Some text", c); BOOST_REQUIRE_EQUAL(boost::posix_time::ptime_from_tm({ 17, 39, 13, 7, 10, 115, 0, 0, 0, 0, 0}), d); BOOST_REQUIRE_EQUAL(boost::posix_time::time_duration(4, 3, 2), e); @@ -41,7 +41,7 @@ BOOST_AUTO_TEST_CASE( forEachRowNulls ) [](auto a, auto b, auto c, auto d, auto e, auto f) { BOOST_REQUIRE_EQUAL(2, a); BOOST_REQUIRE(b); - BOOST_REQUIRE_EQUAL(2.3, *b); + BOOST_REQUIRE_CLOSE(4.3, *b, 0.001); BOOST_REQUIRE_EQUAL("Some text", c); BOOST_REQUIRE(!d); BOOST_REQUIRE(!e); @@ -74,3 +74,31 @@ BOOST_AUTO_TEST_CASE( columns ) BOOST_REQUIRE_THROW((*sel)[""], DB::ColumnDoesNotExist); } +BOOST_AUTO_TEST_CASE( extract ) +{ + auto db = DB::ConnectionPtr(DB::MockDatabase::openConnectionTo("pqmock")); + auto sel = DB::SelectCommandPtr(db->newSelectCommand("SELECT a, b, c FROM forEachRow WHERE f")); + BOOST_REQUIRE(sel->fetch()); + int64_t lint; + double ldouble; + std::string lstring; + // Plain + (*sel)[0] >> lint; + (*sel)[1] >> ldouble; + (*sel)[2] >> lstring; + BOOST_REQUIRE_EQUAL(2, lint); + BOOST_REQUIRE_CLOSE(4.3, ldouble, 0.001); + BOOST_REQUIRE_EQUAL("Some text", lstring); + // Converted + (*sel)[1] >> lint; + (*sel)[0] >> ldouble; + BOOST_REQUIRE_EQUAL(4, lint); + BOOST_REQUIRE_CLOSE(2, ldouble, 0.001); + // Bad conversions + BOOST_REQUIRE_THROW((*sel)[2] >> lint, DB::InvalidConversion); + BOOST_REQUIRE_THROW((*sel)[2] >> ldouble, DB::InvalidConversion); + BOOST_REQUIRE_THROW((*sel)[1] >> lstring, DB::InvalidConversion); + BOOST_REQUIRE_THROW((*sel)[0] >> lstring, DB::InvalidConversion); + BOOST_REQUIRE(!sel->fetch()); +} + |