aboutsummaryrefslogtreecommitdiff
path: root/common/auto/driver.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'common/auto/driver.cxx')
-rw-r--r--common/auto/driver.cxx81
1 files changed, 54 insertions, 27 deletions
diff --git a/common/auto/driver.cxx b/common/auto/driver.cxx
index 9b863f8..121cbe8 100644
--- a/common/auto/driver.cxx
+++ b/common/auto/driver.cxx
@@ -28,37 +28,64 @@ main (int argc, char* argv[])
{
auto_ptr<database> db (create_database (argc, argv));
- unsigned long id1, id2, id3;
+ // object
+ //
{
- object o1 ("one");
- object o2 ("two");
- object o3 ("three");
-
- transaction t (db->begin ());
- db->persist (o1);
- db->persist (o2);
- db->persist (o3);
- t.commit ();
-
- id1 = o1.id_;
- id2 = o2.id_;
- id3 = o3.id_;
-
- assert (id1 != id2);
- assert (id1 != id3);
- assert (id2 != id3);
+ unsigned long id1, id2, id3;
+ {
+ object o1 ("one");
+ object o2 ("two");
+ object o3 ("three");
+
+ transaction t (db->begin ());
+ db->persist (o1);
+ db->persist (o2);
+ db->persist (o3);
+ t.commit ();
+
+ id1 = o1.id_;
+ id2 = o2.id_;
+ id3 = o3.id_;
+
+ assert (id1 != id2);
+ assert (id1 != id3);
+ assert (id2 != id3);
+ }
+
+ {
+ transaction t (db->begin ());
+ auto_ptr<object> o1 (db->load<object> (id1));
+ auto_ptr<object> o2 (db->load<object> (id2));
+ auto_ptr<object> o3 (db->load<object> (id3));
+ t.commit ();
+
+ assert (o1->id_ == id1 && o1->str_ == "one");
+ assert (o2->id_ == id2 && o2->str_ == "two");
+ assert (o3->id_ == id3 && o3->str_ == "three");
+ }
}
+ // auto_only
+ //
{
- transaction t (db->begin ());
- auto_ptr<object> o1 (db->load<object> (id1));
- auto_ptr<object> o2 (db->load<object> (id2));
- auto_ptr<object> o3 (db->load<object> (id3));
- t.commit ();
-
- assert (o1->id_ == id1 && o1->str_ == "one");
- assert (o2->id_ == id2 && o2->str_ == "two");
- assert (o3->id_ == id3 && o3->str_ == "three");
+ unsigned long id;
+ {
+ auto_only o;
+
+ transaction t (db->begin ());
+ db->persist (o);
+ t.commit ();
+
+ id = o.id_;
+ }
+
+ {
+ transaction t (db->begin ());
+ auto_ptr<auto_only> o (db->load<auto_only> (id));
+ t.commit ();
+
+ assert (o->id_ == id);
+ }
}
}
catch (const odb::exception& e)