diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2012-04-29 21:12:26 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-04-29 21:12:26 +0200 |
commit | da13cf5463a3d047c8b52c5b95b00b203e56eb2d (patch) | |
tree | 933146cfa28221ddec0ba680fa1265e099a8d8d0 /common/wrapper/driver.cxx | |
parent | 00f25fc7183f5508f0cc6f8798e634c76434ce0e (diff) |
Factor TR1/C++11 shared_ptr test into separate object2.0.0
The current approach causes problems with foreign key constraints
during table dropping.
Diffstat (limited to 'common/wrapper/driver.cxx')
-rw-r--r-- | common/wrapper/driver.cxx | 64 |
1 files changed, 36 insertions, 28 deletions
diff --git a/common/wrapper/driver.cxx b/common/wrapper/driver.cxx index d8985fa..b434dba 100644 --- a/common/wrapper/driver.cxx +++ b/common/wrapper/driver.cxx @@ -27,45 +27,55 @@ main (int argc, char* argv[]) { auto_ptr<database> db (create_database (argc, argv)); + // Test 1: simple values. // - // Simple values. - // - unsigned long id; { - object o; - o.num.reset (new int (123)); - o.nstrs.push_back (nullable_string ()); - o.nstrs.push_back (nullable_string ("123")); + using namespace test1; + + unsigned long id1, id2; + { + object1 o1; + object2 o2; + + o1.num.reset (new int (123)); + o1.nstrs.push_back (nullable_string ()); + o1.nstrs.push_back (nullable_string ("123")); + #if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY) - o.sstrs.push_back (str_sptr ()); - o.sstrs.push_back (str_sptr (new string ("123"))); + o2.sstrs.push_back (str_sptr ()); + o2.sstrs.push_back (str_sptr (new string ("123"))); #endif - transaction t (db->begin ()); - id = db->persist (o); - t.commit (); - } + transaction t (db->begin ()); + id1 = db->persist (o1); + id2 = db->persist (o2); + t.commit (); + } + + { + transaction t (db->begin ()); + auto_ptr<object1> o1 (db->load<object1> (id1)); + auto_ptr<object2> o2 (db->load<object2> (id2)); + t.commit (); + + assert (*o1->num == 123); + assert (o1->str.get () == 0); + assert (o1->nstr.null ()); + assert (o1->nstrs[0].null ()); + assert (o1->nstrs[1].get () == "123"); - { - transaction t (db->begin ()); - auto_ptr<object> o (db->load<object> (id)); - t.commit (); - - assert (*o->num == 123); - assert (o->str.get () == 0); - assert (o->nstr.null ()); - assert (o->nstrs[0].null ()); - assert (o->nstrs[1].get () == "123"); #if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY) - assert (!o->sstr); - assert (!o->sstrs[0]); - assert (*o->sstrs[1] == "123"); + assert (!o2->sstr); + assert (!o2->sstrs[0]); + assert (*o2->sstrs[1] == "123"); #endif + } } // // Composite values. // + unsigned long id; { comp_object co; @@ -134,8 +144,6 @@ main (int argc, char* argv[]) { using namespace test5; - using test5::object; //@@ tmp - object o1, o2; o1.v.push_back (nullable<comp> ()); |