aboutsummaryrefslogtreecommitdiff
path: root/common/const
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2011-10-19 10:58:44 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2011-10-21 20:05:46 +0200
commite39f1cf9f0c3f520c61e0b832cca78df715d658d (patch)
treed803ed46acfbefbf1ec4d0d8d74f04afc2636c31 /common/const
parentbceb06251cdb572850b2e6e4d15cfb2ac32da417 (diff)
Rename common/const test to common/const-object
Diffstat (limited to 'common/const')
-rw-r--r--common/const/driver.cxx214
-rw-r--r--common/const/makefile109
-rw-r--r--common/const/test.hxx52
-rw-r--r--common/const/test.std0
4 files changed, 0 insertions, 375 deletions
diff --git a/common/const/driver.cxx b/common/const/driver.cxx
deleted file mode 100644
index dd0a2b6..0000000
--- a/common/const/driver.cxx
+++ /dev/null
@@ -1,214 +0,0 @@
-// file : common/const/driver.cxx
-// author : Boris Kolpackov <boris@codesynthesis.com>
-// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
-// license : GNU GPL v2; see accompanying LICENSE file
-
-// Test database operations with const objects.
-//
-
-#include <memory> // std::auto_ptr
-#include <cassert>
-#include <iostream>
-
-#include <odb/database.hxx>
-#include <odb/transaction.hxx>
-#include <odb/session.hxx>
-
-#include <common/common.hxx>
-
-#include "test.hxx"
-#include "test-odb.hxx"
-
-using namespace std;
-using namespace odb::core;
-
-int
-main (int argc, char* argv[])
-{
- try
- {
- auto_ptr<database> db (create_database (argc, argv));
-
- aggr a (1);
- aggr ca_ (2); // o1 and o2 are NULL
- const aggr& ca (ca_);
-
- obj1* o1 (new obj1 (1));
- obj1* co1_ (new obj1 (2));
- const obj1* co1 (co1_);
- a.o1 = co1;
-
- auto_ptr<obj2> o2 (new obj2 (1));
- obj2* co2_ (new obj2 (2));
- a.o2.reset (co2_);
- auto_ptr<const obj2>& co2 (a.o2);
-
- // persist via references
- //
- {
- transaction t (db->begin ());
- db->persist (*o1);
- db->persist (*co1);
- db->persist (*o2);
- db->persist (*co2);
- db->persist (a);
- db->persist (ca);
- t.commit ();
- }
-
- // persist via pointers
- //
- o1->id += 2;
- co1_->id += 2;
- o2->id += 2;
- co2_->id += 2;
-
- {
- transaction t (db->begin ());
- db->persist (o1);
- db->persist (co1);
- db->persist (o2);
- db->persist (co2);
- t.commit ();
- }
-
- // load & compare
- //
- {
- transaction t (db->begin ());
- auto_ptr<aggr> a (db->load<aggr> (1));
- auto_ptr<const aggr> ca (db->load<aggr> (2));
- t.commit ();
-
- assert (a->o1->id == 2);
- assert (a->o2->id == 2);
-
- assert (ca->o1 == 0);
- assert (ca->o2.get () == 0);
- }
-
- // update via references
- //
- {
- transaction t (db->begin ());
- db->update (*o1);
- db->update (*co1);
- db->update (*o2);
- db->update (*co2);
- db->update (a);
- db->update (ca);
- t.commit ();
- }
-
- // update via pointers
- //
- {
- transaction t (db->begin ());
- db->update (o1);
- db->update (co1);
- db->update (o2);
- db->update (co2);
- t.commit ();
- }
-
- // query
- //
- typedef odb::query<obj1> query1;
- typedef odb::query<obj2> query2;
-
- typedef odb::result<const obj1> result1;
- typedef odb::result<const obj2> result2;
-
- {
- transaction t (db->begin ());
- result1 r1 (db->query<obj1> (query1::id < 3));
- // odb::result<obj1> ur (r1); // error
- size_t n1 (0);
-
- for (result1::iterator i (r1.begin ()); i != r1.end (); ++i)
- {
- // i->f (); // error
- i->cf ();
- // obj1* p (i.load ()); // error
- const obj1* p (i.load ());
- obj1 o (0);
- i.load (o);
- assert (p->id == o.id);
- delete p;
- n1++;
- }
-
- assert (n1 == 2);
-
- result2 r2 (db->query<obj2> (query2::id < 3));
- size_t n2 (0);
-
- for (result2::iterator i (r2.begin ()); i != r2.end (); ++i)
- {
- // i->f (); // error
- i->cf ();
- // auto_ptr<obj2> p (i.load ()); // error
- auto_ptr<const obj2> p (i.load ());
- obj2 o (0);
- i.load (o);
- assert (p->id == o.id);
- n2++;
- }
-
- assert (n2 == 2);
-
- t.commit ();
- }
-
- // erase via references
- //
- {
- transaction t (db->begin ());
- db->erase (*o1);
- db->erase (*co1);
- db->erase (*o2);
- db->erase (*co2);
- db->erase (a);
- db->erase (ca);
- t.commit ();
- }
-
- // erase via pointers
- //
- o1->id -= 2;
- co1_->id -= 2;
- o2->id -= 2;
- co2_->id -= 2;
-
- {
- transaction t (db->begin ());
- db->erase (o1);
- db->erase (co1);
- db->erase (o2);
- db->erase (co2);
- t.commit ();
- }
-
- // Test session and const/non-const object handling
- //
- {
- session s;
- transaction t (db->begin ());
-
- obj1 o1 (1);
- const obj1& co1 (o1);
- db->persist (co1);
-
- assert (db->load<obj1> (1) == &o1);
-
- t.commit ();
- }
-
- delete o1;
- }
- catch (const odb::exception& e)
- {
- cerr << e.what () << endl;
- return 1;
- }
-}
diff --git a/common/const/makefile b/common/const/makefile
deleted file mode 100644
index fd55611..0000000
--- a/common/const/makefile
+++ /dev/null
@@ -1,109 +0,0 @@
-# file : common/const/makefile
-# author : Boris Kolpackov <boris@codesynthesis.com>
-# copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o) $(odb_hdr:.hxx=-odb.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-driver := $(out_base)/driver
-dist := $(out_base)/.dist
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-genf := $(addprefix $(odb_hdr:.hxx=-odb),.hxx .ixx .cxx) $(odb_hdr:.hxx=.sql)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --database $(db_id) --generate-schema \
---generate-query --table-prefix const_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): db_id := @database@
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc9projs,$(name)) \
-$(call vc10projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
-
-# Test.
-#
-$(test): $(driver) $(src_base)/test.std
- $(call schema)
- $(call message,test $<,$< --options-file $(dcf_root)/db.options \
->$(out_base)/test.out)
- $(call message,,diff -u $(src_base)/test.std $(out_base)/test.out)
- $(call message,,rm -f $(out_base)/test.out)
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addprefix $(out_base)/,$(odb_hdr:.hxx=-odb.cxx.hxx.clean))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(odb_rules))
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/const/test.hxx b/common/const/test.hxx
deleted file mode 100644
index 341acb8..0000000
--- a/common/const/test.hxx
+++ /dev/null
@@ -1,52 +0,0 @@
-// file : common/const/test.hxx
-// author : Boris Kolpackov <boris@codesynthesis.com>
-// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
-// license : GNU GPL v2; see accompanying LICENSE file
-
-#ifndef TEST_HXX
-#define TEST_HXX
-
-#include <memory>
-#include <odb/core.hxx>
-
-#pragma db object pointer (obj1*)
-struct obj1
-{
- obj1 () {}
- obj1 (int i): id (i) {}
-
- #pragma db id
- int id;
-
- void f () {}
- void cf () const {}
-};
-
-#pragma db object pointer (std::auto_ptr<obj2>)
-struct obj2
-{
- obj2 () {}
- obj2 (int i): id (i) {}
-
- #pragma db id
- int id;
-
- void f () {}
- void cf () const {}
-};
-
-#pragma db object
-struct aggr
-{
- aggr (int i): id (i), o1 (0) {}
- aggr (): o1 (0) {}
- ~aggr () {delete o1;}
-
- #pragma db id
- int id;
-
- const obj1* o1;
- std::auto_ptr<const obj2> o2;
-};
-
-#endif // TEST_HXX
diff --git a/common/const/test.std b/common/const/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/const/test.std
+++ /dev/null