// file : common/session/cache/driver.cxx // copyright : Copyright (c) 2009-2015 Code Synthesis Tools CC // license : GNU GPL v2; see accompanying LICENSE file // Test session object cache. // #include // std::auto_ptr #include #include #include #include #include #include #include "test.hxx" #include "test-odb.hxx" using namespace std; using namespace odb::core; int main (int argc, char* argv[]) { try { auto_ptr db (create_database (argc, argv)); // Test the session_required exception. // #if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY) { using namespace test1; shared_ptr o1a (new obj1 (1)); shared_ptr o1b (new obj1 (2)); shared_ptr o2 (new obj2 (1)); o1a->o2 = o2; o1b->o2 = o2; o2->o1.push_back (o1a); o2->o1.push_back (o1b); { transaction t (db->begin ()); db->persist (o1a); db->persist (o1b); db->persist (o2); t.commit (); } { transaction t (db->begin ()); try { shared_ptr o1 (db->load (1)); assert (false); } catch (const session_required&) { } t.commit (); } { session s; transaction t (db->begin ()); shared_ptr o1 (db->load (1)); t.commit (); } } #endif } catch (const odb::exception& e) { cerr << e.what () << endl; return 1; } }