diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-11-08 12:36:25 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2011-11-08 15:47:26 +0200 |
commit | 35662787f479b93b3205310934574132609461cc (patch) | |
tree | 3a53faca30dde0ecfe7c66bfc667c915ee1bfe9b /common/lifecycle/driver.cxx | |
parent | 20c2f6cde170e1a8703858e17530fcf68e4efbe4 (diff) |
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.
Diffstat (limited to 'common/lifecycle/driver.cxx')
-rw-r--r-- | common/lifecycle/driver.cxx | 124 |
1 files changed, 124 insertions, 0 deletions
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<database> 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<object> o1 (db->find<object> (1)); + assert (o1.get () != 0 && o1->str_ == "value 1"); + + auto_ptr<object> o2 (db->find<object> (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<object> o (db->load<object> (1)); assert (o->str_ == "value 1"); t.commit (); + + try + { + transaction t (db->begin ()); + auto_ptr<object> o (db->load<object> (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<object> o (db->load<object> (1)); db->erase (*o); t.commit (); + + try + { + transaction t (db->begin ()); + db->erase<object> (1); + assert (false); + t.commit (); + } + catch (const object_not_persistent&) + { + } } try |