diff options
Diffstat (limited to 'qt/pgsql')
-rw-r--r-- | qt/pgsql/date-time/driver.cxx | 103 |
1 files changed, 47 insertions, 56 deletions
diff --git a/qt/pgsql/date-time/driver.cxx b/qt/pgsql/date-time/driver.cxx index fde15a6..c1f41f0 100644 --- a/qt/pgsql/date-time/driver.cxx +++ b/qt/pgsql/date-time/driver.cxx @@ -38,59 +38,68 @@ main (int argc, char* argv[]) // Check persistence of null values. // - object o1; { - transaction t (db->begin ()); - db->persist (o1); - t.commit (); - } + object o; - { - transaction t (db->begin ()); - auto_ptr<object> ol1 (db->load<object> (o1.id)); - t.commit (); + { + transaction t (db->begin ()); + db->persist (o); + t.commit (); + } - assert (ol1->is_null ()); - } + { + transaction t (db->begin ()); + auto_ptr<object> ol (db->load<object> (o.id)); + t.commit (); - QDateTime ct (QDateTime::currentDateTime ()); - QDateTime ct_no_ms = QDateTime (QDate (ct.date ().year (), - ct.date ().month (), - ct.date ().day ()), - QTime (ct.time ().hour (), - ct.time ().minute (), - ct.time ().second ())); + assert (ol->is_null ()); + } + } // Check persistence of valid dates and times. // - object o2; - { - o2.date = ct.date (); - o2.time = ct_no_ms.time (); - o2.date_time = ct_no_ms; - - transaction t (db->begin ()); - db->persist (o2); - t.commit (); - } - { - transaction t (db->begin ()); - auto_ptr<object> ol2 (db->load<object> (o2.id)); - t.commit (); + QDateTime ct (QDateTime::currentDateTime ()); - assert (*ol2 == o2); + object o; + o.date = ct.date (); + o.time = ct.time (); + o.date_time = ct; + + { + transaction t (db->begin ()); + db->persist (o); + t.commit (); + } + + { + transaction t (db->begin ()); + auto_ptr<object> ol (db->load<object> (o.id)); + t.commit (); + + assert (*ol == o); + } } - // Test out of range values for QDateTime traits. + // Test a QDateTime value before PG epoch. // { object o; - o.date_time = QDateTime (QDate (1969, 12, 31), - QTime (23, 59, 59), - Qt::UTC); + o.date_time = QDateTime (QDate (1969, 12, 31), QTime (23, 59, 59, 123)); + + { + transaction t (db->begin ()); + db->persist (o); + t.commit (); + } + + { + transaction t (db->begin ()); + auto_ptr<object> ol (db->load<object> (o.id)); + t.commit (); - assert (test_out_of_range_value (o, *db)); + assert (*ol == o); + } } } catch (const odb::exception& e) @@ -99,21 +108,3 @@ main (int argc, char* argv[]) return 1; } } - -bool -test_out_of_range_value (object& x, database& db) -{ - try - { - transaction t (db.begin ()); - db.persist (x); - t.rollback (); - - return false; - } - catch (const odb::qt::date_time::value_out_of_range&) - { - } - - return true; -} |