aboutsummaryrefslogtreecommitdiff
path: root/common/readonly
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2012-04-26 17:16:24 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2012-04-26 17:16:24 +0200
commit6a3ddb6bd80f3c0c4d7b6957cb7be1f3d8713720 (patch)
tree1d65d67de11b8f803a2eac496b483a8c1d2bb7e8 /common/readonly
parentd073555e513e671b197c5eb31c0b2b269f137d0f (diff)
Add test for readonly object with auto id
Diffstat (limited to 'common/readonly')
-rw-r--r--common/readonly/driver.cxx24
-rw-r--r--common/readonly/test.hxx16
2 files changed, 39 insertions, 1 deletions
diff --git a/common/readonly/driver.cxx b/common/readonly/driver.cxx
index b39ab38..b67ed4f 100644
--- a/common/readonly/driver.cxx
+++ b/common/readonly/driver.cxx
@@ -287,6 +287,30 @@ main (int argc, char* argv[])
assert (*o.pl == 2 && *o.cpl == 2 && *o.pcl == 2 && *o.cpcl == 1);
}
+
+ // Readonly object with auto id.
+ //
+ {
+ ro_auto o1 (1);
+ ro_auto o2 (2);
+
+ {
+ transaction t (db->begin ());
+ db->persist (o1);
+ db->persist (o2);
+ t.commit ();
+ }
+
+ {
+ transaction t (db->begin ());
+ auto_ptr<ro_auto> p1 (db->load<ro_auto> (o1.id));
+ auto_ptr<ro_auto> p2 (db->load<ro_auto> (o2.id));
+ t.commit ();
+
+ assert (p1->num == o1.num);
+ assert (p2->num == o2.num);
+ }
+ }
}
catch (const odb::exception& e)
{
diff --git a/common/readonly/test.hxx b/common/readonly/test.hxx
index a29a2bd..0b73d94 100644
--- a/common/readonly/test.hxx
+++ b/common/readonly/test.hxx
@@ -10,7 +10,7 @@
#include <odb/core.hxx>
-// Simple readonly value.
+// Simple readonly object.
//
#pragma db object
struct simple
@@ -209,4 +209,18 @@ struct wrapper
const std::auto_ptr<const unsigned long> cpcl;
};
+// Readonly object with auto id.
+//
+#pragma db object readonly
+struct ro_auto
+{
+ ro_auto (unsigned long n): num (n) {}
+ ro_auto () {}
+
+ #pragma db id auto
+ unsigned long id;
+
+ unsigned long num;
+};
+
#endif // TEST_HXX