add some simple tests for the WhereClause system, which will now be official and documented

This commit is contained in:
Sergey Tsalkov
2011-09-23 18:44:34 -07:00
parent a2800ef04b
commit 9f3aa571dc
3 changed files with 36 additions and 7 deletions

View File

@@ -62,7 +62,7 @@ class DB
return $mysql; return $mysql;
} }
protected static function nonSQLError($message) { public static function nonSQLError($message) {
if (DB::$throw_exception_on_nonsql_error) { if (DB::$throw_exception_on_nonsql_error) {
$e = new MeekroDBException($message); $e = new MeekroDBException($message);
throw $e; throw $e;
@@ -564,7 +564,9 @@ class WhereClause {
public $clauses = array(); public $clauses = array();
function __construct($type) { function __construct($type) {
$this->type = strtolower($type); $type = strtolower($type);
if ($type != 'or' && $type != 'and') DB::nonSQLError('you must use either WhereClause(and) or WhereClause(or)');
$this->type = $type;
} }
function add() { function add() {
@@ -598,11 +600,8 @@ class WhereClause {
return count($this->clauses); return count($this->clauses);
} }
function text($minimal = false) { function text() {
if (count($this->clauses) == 0) { if (count($this->clauses) == 0) return '(1)';
if ($minimal) return '(1)';
else return '';
}
$A = array(); $A = array();
foreach ($this->clauses as $clause) { foreach ($this->clauses as $clause) {

View File

@@ -0,0 +1,28 @@
<?
class WhereClauseTest extends SimpleTest {
function test_1_basic_where() {
$where = new WhereClause('and');
$where->add('username=%s', 'Bart');
$where->add('password=%s', 'hello');
$result = DB::query("SELECT * FROM accounts WHERE %l", $where->text());
$this->assert(count($result) === 1);
$this->assert($result[0]['age'] === '15');
}
function test_2_simple_grouping() {
$where = new WhereClause('and');
$where->add('password=%s', 'hello');
$subclause = $where->addClause('or');
$subclause->add('age=%i', 15);
$subclause->add('age=%i', 14);
$result = DB::query("SELECT * FROM accounts WHERE %l", $where->text());
$this->assert(count($result) === 1);
$this->assert($result[0]['age'] === '15');
}
}
?>

View File

@@ -27,10 +27,12 @@ DB::$dbName = $set_db;
DB::$host = $set_host; DB::$host = $set_host;
require_once 'BasicTest.php'; require_once 'BasicTest.php';
require_once 'WhereClauseTest.php';
require_once 'ErrorTest.php'; require_once 'ErrorTest.php';
$classes_to_test = array( $classes_to_test = array(
'BasicTest', 'BasicTest',
'WhereClauseTest',
'ErrorTest', 'ErrorTest',
); );