diff --git a/.gitignore b/.gitignore
index 44d7ee7..f330e7c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
test_config.json
+tests/simpletest/*
diff --git a/README.md b/README.md
index 40d7204..ee55a3d 100644
--- a/README.md
+++ b/README.md
@@ -13,6 +13,11 @@ A query builder/abstraction layer, using prepared queries for security.
* PostgreSQL
* SQLite
* Others, via ODBC
+
+## Including Query in your application
+
+To include Query in your PHP project, just include the `autoload.php` file. This will automatically load the classes that are supported by the current PHP installation.
+
## Connecting
diff --git a/autoload.php b/autoload.php
new file mode 100644
index 0000000..5a477b8
--- /dev/null
+++ b/autoload.php
@@ -0,0 +1,47 @@
+assertTrue(in_array('pgsql', pdo_drivers()));
}
-
- function TestGet()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->get('create_test');
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestGetLimit()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->get('create_test', 2);
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestGetLimitSkip()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->get('create_test', 2, 1);
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestSelectWhereGet()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->select('id, key as k, val')
- ->where('id >', 1)
- ->where('id <', 900)
- ->get('create_test', 2, 1);
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestSelectWhereGet2()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->select('id, key as k, val')
- ->where('id !=', 1)
- ->get('create_test', 2, 1);
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestSelectGet()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->select('id, key as k, val')
- ->get('create_test', 2, 1);
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestSelectFromGet()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->select('id, key as k, val')
- ->from('create_test ct')
- ->where('id >', 1)
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestSelectFromLimitGet()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->select('id, key as k, val')
- ->from('create_test ct')
- ->where('id >', 1)
- ->limit(3)
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestOrderBy()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->select('id, key as k, val')
- ->from('create_test')
- ->where('id >', 0)
- ->where('id <', 9000)
- ->order_by('id', 'DESC')
- ->order_by('k', 'ASC')
- ->limit(5,2)
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestOrderByRandom()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->select('id, key as k, val')
- ->from('create_test')
- ->where('id >', 0)
- ->where('id <', 9000)
- ->order_by('id', 'rand')
- ->limit(5,2)
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestGroupBy()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->select('id, key as k, val')
- ->from('create_test')
- ->where('id >', 0)
- ->where('id <', 9000)
- ->group_by('k')
- ->group_by('val')
- ->order_by('id', 'DESC')
- ->order_by('k', 'ASC')
- ->limit(5,2)
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestOrWhere()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->select('id, key as k, val')
- ->from('create_test')
- ->where(' id ', 1)
- ->or_where('key >', 0)
- ->limit(2, 1)
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestLike()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->from('create_test')
- ->like('key', 'og')
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestJoin()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->from('create_test')
- ->join('create_join cj', 'cj.id = create_test.id')
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestInsert()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->set('id', 4)
- ->set('key', 4)
- ->set('val', 5)
- ->insert('create_test');
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestUpdate()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->set('id', 4)
- ->set('key', 'gogle')
- ->set('val', 'non-word')
- ->where('id', 4)
- ->update('create_test');
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestDelete()
- {
- if (empty($this->db)) return;
-
- $query = $this->db->where('id', 4)->delete('create_test');
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
}
\ No newline at end of file
diff --git a/tests/databases/sqlite-qb.php b/tests/databases/sqlite-qb.php
index ad06d7a..f0c2b88 100644
--- a/tests/databases/sqlite-qb.php
+++ b/tests/databases/sqlite-qb.php
@@ -15,7 +15,7 @@
/**
* Class for testing Query Builder with SQLite
*/
- class SQLiteQBTest extends UnitTestCase {
+ class SQLiteQBTest extends QBTest {
function __construct()
{
@@ -30,174 +30,4 @@
echo '
SQLite Queries
';
}
-
- function TestGet()
- {
- $query = $this->db->get('create_test ct');
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestGetLimit()
- {
- $query = $this->db->get('create_test', 2);
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestGetLimitSkip()
- {
- $query = $this->db->get('create_test', 2, 1);
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestSelectWhereGet()
- {
- $query = $this->db->select('id, key as k, val')
- ->where('id >', 1)
- ->where('id <', 900)
- ->get('create_test', 2, 1);
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestSelectWhereGet2()
- {
- $query = $this->db->select('id, key as k, val')
- ->where('id !=', 1)
- ->get('create_test', 2, 1);
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestSelectGet()
- {
- $query = $this->db->select('id, key as k, val')
- ->get('create_test', 2, 1);
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestSelectFromGet()
- {
- $query = $this->db->select('id, key as k, val')
- ->from('create_test ct')
- ->where('id >', 1)
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestSelectFromLimitGet()
- {
- $query = $this->db->select('id, key as k, val')
- ->from('create_test ct')
- ->where('id >', 1)
- ->limit(3)
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestOrderBy()
- {
- $query = $this->db->select('id, key as k, val')
- ->from('create_test')
- ->where('id >', 0)
- ->where('id <', 9000)
- ->order_by('id', 'DESC')
- ->order_by('k', 'ASC')
- ->limit(5,2)
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestOrderByRandom()
- {
- $query = $this->db->select('id, key as k, val')
- ->from('create_test')
- ->where('id >', 0)
- ->where('id <', 9000)
- ->order_by('id', 'rand')
- ->limit(5,2)
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestGroupBy()
- {
- $query = $this->db->select('id, key as k, val')
- ->from('create_test')
- ->where('id >', 0)
- ->where('id <', 9000)
- ->group_by('k')
- ->group_by('val')
- ->order_by('id', 'DESC')
- ->order_by('k', 'ASC')
- ->limit(5,2)
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestOrWhere()
- {
- $query = $this->db->select('id, key as k, val')
- ->from('create_test')
- ->where(' id ', 1)
- ->or_where('key >', 0)
- ->limit(2, 1)
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestLike()
- {
- $query = $this->db->from('create_test')
- ->like('key', 'og')
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestJoin()
- {
- $query = $this->db->from('create_test')
- ->join('create_join cj', 'cj.id = create_test.id')
- ->get();
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestInsert()
- {
- $query = $this->db->set('id', 4)
- ->set('key', 4)
- ->set('val', 5)
- ->insert('create_test');
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestUpdate()
- {
- $query = $this->db->set('id', 4)
- ->set('key', 'gogle')
- ->set('val', 'non-word')
- ->where('id', 4)
- ->update('create_test');
-
- $this->assertIsA($query, 'PDOStatement');
- }
-
- function TestDelete()
- {
- $query = $this->db->where('id', 4)->delete('create_test');
-
- $this->assertIsA($query, 'PDOStatement');
- }
}
\ No newline at end of file
diff --git a/tests/databases/sqlite.php b/tests/databases/sqlite.php
index 3bd5eb4..8cf21bc 100644
--- a/tests/databases/sqlite.php
+++ b/tests/databases/sqlite.php
@@ -17,11 +17,11 @@
*
* @extends UnitTestCase
*/
-class SQLiteTest extends UnitTestCase {
+class SQLiteTest extends DBTest {
function __construct()
{
- parent::__construct();
+ //parent::__construct();
}
function setUp()
diff --git a/tests/index.php b/tests/index.php
index 0719419..d62c7d9 100644
--- a/tests/index.php
+++ b/tests/index.php
@@ -23,6 +23,9 @@ define('DS', DIRECTORY_SEPARATOR);
// it has to be set in your php path, or put in the tests folder
require_once('simpletest/autorun.php');
+// Require base testing classes
+require_once(TEST_DIR.'/parent.php');
+
// Bulk loading wrapper workaround for PHP < 5.4
function do_include($path)
diff --git a/tests/parent.php b/tests/parent.php
new file mode 100644
index 0000000..b6cac60
--- /dev/null
+++ b/tests/parent.php
@@ -0,0 +1,234 @@
+db)) return;
+
+ $query = $this->db->get('create_test');
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestGetLimit()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->get('create_test', 2);
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestGetLimitSkip()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->get('create_test', 2, 1);
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestSelectWhereGet()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->select('id, key as k, val')
+ ->where('id >', 1)
+ ->where('id <', 900)
+ ->get('create_test', 2, 1);
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestSelectWhereGet2()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->select('id, key as k, val')
+ ->where('id !=', 1)
+ ->get('create_test', 2, 1);
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestSelectGet()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->select('id, key as k, val')
+ ->get('create_test', 2, 1);
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestSelectFromGet()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->select('id, key as k, val')
+ ->from('create_test ct')
+ ->where('id >', 1)
+ ->get();
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestSelectFromLimitGet()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->select('id, key as k, val')
+ ->from('create_test ct')
+ ->where('id >', 1)
+ ->limit(3)
+ ->get();
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestOrderBy()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->select('id, key as k, val')
+ ->from('create_test')
+ ->where('id >', 0)
+ ->where('id <', 9000)
+ ->order_by('id', 'DESC')
+ ->order_by('k', 'ASC')
+ ->limit(5,2)
+ ->get();
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestOrderByRandom()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->select('id, key as k, val')
+ ->from('create_test')
+ ->where('id >', 0)
+ ->where('id <', 9000)
+ ->order_by('id', 'rand')
+ ->limit(5,2)
+ ->get();
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestGroupBy()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->select('id, key as k, val')
+ ->from('create_test')
+ ->where('id >', 0)
+ ->where('id <', 9000)
+ ->group_by('k')
+ ->group_by('val')
+ ->order_by('id', 'DESC')
+ ->order_by('k', 'ASC')
+ ->limit(5,2)
+ ->get();
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestOrWhere()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->select('id, key as k, val')
+ ->from('create_test')
+ ->where(' id ', 1)
+ ->or_where('key >', 0)
+ ->limit(2, 1)
+ ->get();
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestLike()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->from('create_test')
+ ->like('key', 'og')
+ ->get();
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestJoin()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->from('create_test')
+ ->join('create_join cj', 'cj.id = create_test.id')
+ ->get();
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestInsert()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->set('id', 4)
+ ->set('key', 4)
+ ->set('val', 5)
+ ->insert('create_test');
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestUpdate()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->set('id', 4)
+ ->set('key', 'gogle')
+ ->set('val', 'non-word')
+ ->where('id', 4)
+ ->update('create_test');
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+ function TestDelete()
+ {
+ if (empty($this->db)) return;
+
+ $query = $this->db->where('id', 4)->delete('create_test');
+
+ $this->assertIsA($query, 'PDOStatement');
+ }
+
+}
+
+// --------------------------------------------------------------------------
+
+abstract class DBTest extends UnitTestCase {
+
+ abstract function TestConnection();
+
+ function tearDown()
+ {
+ unset($this->db);
+ }
+
+}
\ No newline at end of file
diff --git a/tests/test_dbs/test_sqlite.db b/tests/test_dbs/test_sqlite.db
index c01754e..89d1be5 100644
Binary files a/tests/test_dbs/test_sqlite.db and b/tests/test_dbs/test_sqlite.db differ