From 35662787f479b93b3205310934574132609461cc Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 8 Nov 2011 12:36:25 +0200 Subject: Get rid of special tracer database The include, types, and pragma tests have been moved to the common/ directory while the object test has been merged into common/lifecycle. The transaction test will be re-implemented as common/ test as soon as SQL statement tracing support is merged. --- common/lifecycle/driver.cxx | 124 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) (limited to 'common/lifecycle') diff --git a/common/lifecycle/driver.cxx b/common/lifecycle/driver.cxx index 46d145b..8323694 100644 --- a/common/lifecycle/driver.cxx +++ b/common/lifecycle/driver.cxx @@ -28,6 +28,18 @@ main (int argc, char* argv[]) { auto_ptr db (create_database (argc, argv)); + // Database operation out of transaction. + // + try + { + object o (1); + db->persist (o); + assert (false); + } + catch (const not_in_transaction&) + { + } + // Transient. // try @@ -63,11 +75,100 @@ main (int argc, char* argv[]) } } + // Find. + // + { + transaction t (db->begin ()); + + auto_ptr o1 (db->find (1)); + assert (o1.get () != 0 && o1->str_ == "value 1"); + + auto_ptr o2 (db->find (2)); + assert (o2.get () == 0); + + t.commit (); + } + + // Find (into existing). + // + { + object o; + + transaction t (db->begin ()); + + assert (db->find (1, o)); + assert (o.str_ == "value 1"); + + assert (!db->find (2, o)); + + t.commit (); + } + + // Load. + // { transaction t (db->begin ()); auto_ptr o (db->load (1)); assert (o->str_ == "value 1"); t.commit (); + + try + { + transaction t (db->begin ()); + auto_ptr o (db->load (2)); + assert (false); + t.commit (); + } + catch (const object_not_persistent&) + { + } + } + + // Load (into existing). + // + { + object o; + + transaction t (db->begin ()); + db->load (1, o); + assert (o.str_ == "value 1"); + t.commit (); + + try + { + transaction t (db->begin ()); + db->load (2, o); + assert (false); + t.commit (); + } + catch (const object_not_persistent&) + { + } + } + + // Reload. + // + { + object o; + + transaction t (db->begin ()); + db->load (1, o); + o.str_ = "junk"; + db->reload (o); + assert (o.str_ == "value 1"); + t.commit (); + + try + { + transaction t (db->begin ()); + o.id_ = 2; + db->reload (o); + assert (false); + t.commit (); + } + catch (const object_not_persistent&) + { + } } // Modified. @@ -78,6 +179,18 @@ main (int argc, char* argv[]) o->str_ = "value 2"; db->update (*o); t.commit (); + + try + { + transaction t (db->begin ()); + o->id_ = 2; + db->update (*o); + assert (false); + t.commit (); + } + catch (const object_not_persistent&) + { + } } { @@ -103,6 +216,17 @@ main (int argc, char* argv[]) auto_ptr o (db->load (1)); db->erase (*o); t.commit (); + + try + { + transaction t (db->begin ()); + db->erase (1); + assert (false); + t.commit (); + } + catch (const object_not_persistent&) + { + } } try -- cgit v1.1