aboutsummaryrefslogtreecommitdiff
path: root/common/as/test.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-07-02 15:00:48 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-07-02 15:00:48 +0200
commitd13c76c39ddbedb4122f02e2c2bc168f1cb1cf20 (patch)
treebf4b329a8c1a1dc23b5c907479ea5c23c5a7d773 /common/as/test.hxx
parentcae4da2e3e061ec9cb3e244908db36816085e2fe (diff)
Test custom C++ type mapping for id, version members
Diffstat (limited to 'common/as/test.hxx')
-rw-r--r--common/as/test.hxx75
1 files changed, 74 insertions, 1 deletions
diff --git a/common/as/test.hxx b/common/as/test.hxx
index 676f599..12822bb 100644
--- a/common/as/test.hxx
+++ b/common/as/test.hxx
@@ -193,6 +193,79 @@ namespace test3
}
}
-//@@ Test wrapped id and version. With container, obj-ptr.
+// Test id type mapping.
+//
+struct id_type
+{
+ typedef unsigned long value_type;
+ value_type value;
+
+ id_type (value_type v = 0): value (v) {}
+ operator value_type () const {return value;}
+};
+
+#pragma db map type(id_type) as(id_type::value_type)
+
+#pragma db namespace table("t4_")
+namespace test4
+{
+ #pragma db object
+ struct object
+ {
+ #pragma db id auto
+ id_type id;
+
+ int i;
+ odb::vector<int> v;
+
+ object () {}
+ object (int i_): i (i_) {}
+ };
+
+ inline bool
+ operator== (const object& x, const object y)
+ {
+ return x.id == y.id && x.i == y.i && x.v == y.v;
+ }
+}
+
+// Test version type mapping.
+//
+#pragma db namespace table("t5_")
+namespace test5
+{
+ struct version_type
+ {
+ typedef unsigned short value_type;
+ value_type value;
+
+ version_type (value_type v = 0): value (v) {}
+ operator value_type () const {return value;}
+ version_type& operator++ () {value++; return *this;}
+ };
+
+ #pragma db map type(version_type) as(id_type::value_type)
+
+ #pragma db object optimistic
+ struct object
+ {
+ #pragma db id
+ id_type id;
+
+ #pragma db version
+ version_type v;
+
+ int i;
+
+ object () {}
+ object (id_type id_, int i_): id (id_), i (i_) {}
+ };
+
+ inline bool
+ operator== (const object& x, const object y)
+ {
+ return x.id == y.id && x.v == y.v && x.i == y.i;
+ }
+}
#endif // TEST_HXX