summaryrefslogtreecommitdiff
path: root/odb-tests/sqlite/stream/driver.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb-tests/sqlite/stream/driver.cxx')
-rw-r--r--odb-tests/sqlite/stream/driver.cxx281
1 files changed, 0 insertions, 281 deletions
diff --git a/odb-tests/sqlite/stream/driver.cxx b/odb-tests/sqlite/stream/driver.cxx
deleted file mode 100644
index 86522ec..0000000
--- a/odb-tests/sqlite/stream/driver.cxx
+++ /dev/null
@@ -1,281 +0,0 @@
-// file : sqlite/stream/driver.cxx
-// license : GNU GPL v2; see accompanying LICENSE file
-
-// Test SQLite BLOB/TEXT incremental I/O.
-//
-
-#include <vector>
-#include <memory> // std::unique_ptr
-#include <iostream>
-
-#include <odb/sqlite/database.hxx>
-#include <odb/sqlite/transaction.hxx>
-
-#include <odb/sqlite/text-stream.hxx>
-#include <odb/sqlite/blob-stream.hxx>
-
-#include <libcommon/common.hxx>
-
-#include "test.hxx"
-#include "test-odb.hxx"
-
-#undef NDEBUG
-#include <cassert>
-
-using namespace std;
-namespace sqlite = odb::sqlite;
-using namespace sqlite;
-
-template <typename S>
-void
-print (const S&)
-{
- /*
- cerr << s.db () << '.'
- << s.table () << '.'
- << s.column () << '#'
- << s.rowid () << endl;
- */
-}
-
-int
-main (int argc, char* argv[])
-{
- try
- {
- unique_ptr<database> db (create_specific_database<database> (argc, argv));
-
- string txt (1024 * 1024, 't');
- vector<char> blb (1024 * 1024, 'b');
-
- object o;
-
- {
- transaction tx (db->begin ());
-
- o.t.size (txt.size ());
- o.b.size (blb.size ());
- o.bv.push_back (blob (blb.size ()));
- o.bv.push_back (blob (blb.size ()));
-
- db->persist (o);
-
- print (o.t);
- print (o.b);
- print (o.bv[0]);
- print (o.bv[1]);
-
- blob_stream bs (o.b, true);
- bs.write (blb.data (), blb.size ());
-
- text_stream ts (o.t, true);
- ts.write (txt.data (), txt.size ());
-
- for (vector<blob>::iterator i (o.bv.begin ()); i != o.bv.end (); ++i)
- {
- blob_stream bs (*i, true);
- bs.write (blb.data (), blb.size ());
- }
-
- tx.commit ();
- }
-
- {
- transaction tx (db->begin ());
- unique_ptr<object> p (db->load<object> (o.id));
-
- print (p->t);
- print (p->b);
- print (p->bv[0]);
- print (p->bv[1]);
-
- text_stream ts (p->t, false);
- string t (ts.size (), '*');
- ts.read (const_cast<char*> (t.c_str ()), t.size ());
- assert (t == txt);
-
- blob_stream bs (p->b, false);
- vector<char> b (bs.size (), '\0');
- bs.read (b.data (), b.size ());
- assert (b == blb);
-
- for (vector<blob>::iterator i (p->bv.begin ()); i != p->bv.end (); ++i)
- {
- blob_stream bs (*i, false);
- vector<char> b (bs.size (), '\0');
- bs.read (b.data (), b.size ());
- assert (b == blb);
- }
-
- assert (p->nb.null ());
-
- tx.commit ();
- }
-
- txt.resize (txt.size () + 1, 't');
- txt[0] = 'A';
- txt[txt.size () - 1] = 'Z';
-
- blb.resize (blb.size () - 1);
- blb.front () = 'A';
- blb.back () = 'Z';
-
- {
- transaction tx (db->begin ());
-
- o.t.clear ();
- o.t.size (txt.size ());
-
- o.b.clear ();
- o.b.size (blb.size ());
-
- o.bv[0].clear ();
- o.bv[0].size (blb.size ());
-
- o.bv[1].clear ();
- o.bv[1].size (blb.size ());
-
- o.nb = blob (blb.size ());
-
- db->update (o);
-
- print (o.t);
- print (o.b);
- print (o.bv[0]);
- print (o.bv[1]);
- print (*o.nb);
-
- {
- text_stream ts (o.t, true);
- ts.write (txt.data (), txt.size ());
- }
-
- {
- blob_stream bs (o.b, true);
- bs.write (blb.data (), blb.size ());
- }
-
- for (vector<blob>::iterator i (o.bv.begin ()); i != o.bv.end (); ++i)
- {
- blob_stream bs (*i, true);
- bs.write (blb.data (), blb.size ());
- }
-
- {
- blob_stream bs (*o.nb, true);
- bs.write (blb.data (), blb.size ());
- }
-
- tx.commit ();
- }
-
- {
- transaction tx (db->begin ());
- unique_ptr<object> p (db->load<object> (o.id));
-
- print (p->t);
- print (p->b);
- print (p->bv[0]);
- print (p->bv[1]);
- print (*p->nb);
-
- text_stream ts (p->t, false);
- string t (ts.size (), '*');
- ts.read (const_cast<char*> (t.c_str ()), t.size ());
- assert (t == txt);
-
- blob_stream bs (p->b, false);
- vector<char> b (bs.size (), '\0');
- bs.read (b.data (), b.size ());
- assert (b == blb);
-
- for (vector<blob>::iterator i (p->bv.begin ()); i != p->bv.end (); ++i)
- {
- blob_stream bs (*i, false);
- vector<char> b (bs.size (), '\0');
- bs.read (b.data (), b.size ());
- assert (b == blb);
- }
-
- {
- blob_stream bs (*p->nb, false);
- vector<char> b (bs.size (), '\0');
- bs.read (b.data (), b.size ());
- assert (b == blb);
- }
-
- tx.commit ();
- }
-
- // Test query.
- //
-
- txt.resize (32);
- blb.resize (64);
-
- {
- transaction tx (db->begin ());
-
- o.t.size (txt.size ());
- o.b.size (blb.size ());
- o.bv.clear ();
- o.nb.reset ();
-
- db->update (o);
-
- text_stream ts (o.t, true);
- ts.write (txt.data (), txt.size ());
-
- blob_stream bs (o.b, true);
- bs.write (blb.data (), blb.size ());
-
- tx.commit ();
- }
-
- {
- typedef sqlite::query<object> query;
- transaction tx (db->begin ());
-
- {
- object o1 (db->query_value<object> (query::t == txt));
-
- blob_stream bs (o1.b, false);
- vector<char> b (bs.size (), '\0');
- bs.read (b.data (), b.size ());
- assert (b == blb);
- }
-
- {
- object o1 (db->query_value<object> (query::b == blb));
-
- text_stream ts (o1.t, false);
- string t (ts.size (), '*');
- ts.read (const_cast<char*> (t.c_str ()), t.size ());
- assert (t == txt);
- }
-
- tx.commit ();
- }
-
- // Test view.
- //
- {
- typedef sqlite::query<view> query;
- transaction tx (db->begin ());
-
- view v (db->query_value<view> (query::t == txt));
-
- blob_stream bs (v.b, false);
- vector<char> b (bs.size (), '\0');
- bs.read (b.data (), b.size ());
- assert (b == blb);
-
- tx.commit ();
- }
- }
- catch (const odb::exception& e)
- {
- cerr << e.what () << endl;
- return 1;
- }
-}