[limb-svn] r6047 - in 3.x/trunk/limb/dbal: src/criteria tests/cases/non-driver/criteria
svn at limb-project.com
svn at limb-project.com
Tue Jul 3 02:30:59 MSD 2007
Author: pachanga
Date: 2007-07-03 02:30:59 +0400 (Tue, 03 Jul 2007)
New Revision: 6047
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6047
Removed:
3.x/trunk/limb/dbal/src/criteria/lmbSQLCompositeCriteria.class.php
3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCompositeCriteriaTest.class.php
3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLRawCriteriaTest.class.php
Modified:
3.x/trunk/limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php
3.x/trunk/limb/dbal/src/criteria/lmbSQLCriteria.class.php
3.x/trunk/limb/dbal/src/criteria/lmbSQLFieldBetweenCriteria.class.php
3.x/trunk/limb/dbal/src/criteria/lmbSQLFieldCriteria.class.php
3.x/trunk/limb/dbal/src/criteria/lmbSQLRawCriteria.class.php
3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCriteriaTest.class.php
3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLFieldCriteriaTest.class.php
3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLTableFieldCriteriaTest.class.php
Log:
-- lmbSQLCompositeCriteria removed as not necessary anymore
-- lmbSQLRawCriteria now simply extends lmbSQLCriteria, its functionality moved into lmbSQLCriteria. Most likely this class will be deprecated.
-- lmbSQLBaseCriteria now surrounds its criteria into parenthesis only if these criteria are complex objects, i.e contain other criteria objects
Modified: 3.x/trunk/limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php 2007-07-02 14:17:20 UTC (rev 6046)
+++ 3.x/trunk/limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php 2007-07-02 22:30:59 UTC (rev 6047)
@@ -43,6 +43,11 @@
return $this;
}
+ function isComplex()
+ {
+ return sizeof($this->clauses) > 0;
+ }
+
protected function _getClauses()
{
return $this->clauses;
@@ -65,50 +70,23 @@
if(!is_object($conn))
$conn = lmbToolkit :: instance()->getDefaultDbConnection();
- $this->_appendOpeningParenthesisToStatement($str, $values, $conn);
-
$this->_appendExpressionToStatement($str, $values, $conn);
- $this->_appendClosingParenthesisToStatement($str, $values, $conn);
- }
-
- protected function _appendExpressionToStatement(&$str, &$values, $conn){}
-
- protected function _appendOpeningParenthesisToStatement(&$str, &$values, $conn)
- {
- for($j = 0; $j < count($this->clauses); $j++)
- $str .= '(';
- }
-
- protected function _appendClosingParenthesisToStatement(&$str, &$values, $conn)
- {
for($i=0; $i < count($this->clauses); $i++)
{
+ $criteria = $this->clauses[$i];
$str .= $this->conjunctions[$i];
- $this->clauses[$i]->appendStatementTo($str, $values, $conn);
- $str .= ')';
- }
- }
- function getAttachedCriterias()
- {
- $crits = array();
- $this->_traverseCriteria($this, $crits);
- return $crits;
- }
+ if($criteria->isComplex())
+ $str .= '(';
- protected function _traverseCriteria($c, &$a)
- {
- $a[] = $c;
- $clauses = $c->_getClauses();
- $clausesLength = count($clauses);
- for($i=0; $i < $clausesLength; $i++)
- $this->_traverseCriteria($clauses[$i], $a);
- }
+ $criteria->appendStatementTo($str, $values, $conn);
- protected function _makePlaceHolder($holder)
- {
- return 'p' . str_replace('.', '_', $holder);
+ if($criteria->isComplex())
+ $str .= ')';
+ }
}
+
+ protected function _appendExpressionToStatement(&$str, &$values, $conn){}
}
?>
Deleted: 3.x/trunk/limb/dbal/src/criteria/lmbSQLCompositeCriteria.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/criteria/lmbSQLCompositeCriteria.class.php 2007-07-02 14:17:20 UTC (rev 6046)
+++ 3.x/trunk/limb/dbal/src/criteria/lmbSQLCompositeCriteria.class.php 2007-07-02 22:30:59 UTC (rev 6047)
@@ -1,34 +0,0 @@
-<?php
-/*
- * Limb PHP Framework
- *
- * @link http://limb-project.com
- * @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
- * @license LGPL http://www.gnu.org/copyleft/lesser.html
- */
-lmb_require('limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php');
-
-/**
- * class lmbSQLCompositeCriteria.
- *
- * @package dbal
- * @version $Id$
- */
-class lmbSQLCompositeCriteria extends lmbSQLBaseCriteria
-{
- function appendStatementTo(&$str, &$values = array(), $conn = null)
- {
- for($i=0; $i < count($this->clauses); $i++)
- {
- if($i != 0)
- $str .= $this->conjunctions[$i];
-
- $this->clauses[$i]->appendStatementTo($str, $values, $conn);
- }
-
- if($i > 1)
- $str = '(' . $str . ')';
- }
-}
-
-?>
Modified: 3.x/trunk/limb/dbal/src/criteria/lmbSQLCriteria.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/criteria/lmbSQLCriteria.class.php 2007-07-02 14:17:20 UTC (rev 6046)
+++ 3.x/trunk/limb/dbal/src/criteria/lmbSQLCriteria.class.php 2007-07-02 22:30:59 UTC (rev 6047)
@@ -6,7 +6,7 @@
* @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
* @license LGPL http://www.gnu.org/copyleft/lesser.html
*/
-lmb_require(dirname(__FILE__) . '/lmbSQLRawCriteria.class.php');
+lmb_require(dirname(__FILE__) . '/lmbSQLBaseCriteria.class.php');
lmb_require(dirname(__FILE__) . '/lmbSQLFieldBetweenCriteria.class.php');
lmb_require(dirname(__FILE__) . '/lmbSQLFieldCriteria.class.php');
@@ -16,24 +16,43 @@
* @package dbal
* @version $Id$
*/
-class lmbSQLCriteria extends lmbSQLRawCriteria
+class lmbSQLCriteria extends lmbSQLBaseCriteria
{
- function __construct($raw_criteria = '', $values = array())
+ protected $sql;
+ protected $values;
+
+ function __construct($raw_sql = '1=1', $values = array())
{
- if(!$raw_criteria)
- $raw_criteria = '1 = 1';
-
- parent :: __construct($raw_criteria, $values);
+ $this->sql = $raw_sql;
+ $this->values = $values;
}
-
/**
* Used for chaining
*/
- static function create($raw_criteria = '', $values = array())
+ static function create($raw_sql = '', $values = array())
{
- return new lmbSQLCriteria($raw_criteria, $values);
+ return new lmbSQLCriteria($raw_sql, $values);
}
+ protected function _appendExpressionToStatement(&$str, &$values, $conn)
+ {
+ $sql = $this->sql;
+
+ foreach($this->values as $key => $value)
+ {
+ if(is_numeric($key))
+ {
+ $random_key = 'p' . mt_rand();
+ $values[$random_key] = $value;
+ $sql = preg_replace('~\?~', ':' . $random_key . ':', $sql, $limit = 1);
+ }
+ else
+ $values[$key] = $value;
+ }
+
+ $str .= $sql;
+ }
+
static function not($criteria)
{
return new lmbSQLCriteria('!(' . self :: objectify($criteria)->toStatementString() . ')');
@@ -67,33 +86,33 @@
static function objectify($args)
{
if(is_null($args))
- return new lmbSQLRawCriteria("1 = 1");
+ return new lmbSQLCriteria("1 = 1");
if(is_array($args))
{
- //array(new lmbSQLRawCriteria(..))
+ //array(new lmbSQLCriteria(..))
if(is_object($args[0]))
return $args[0];
//array('id=1')
if(!isset($args[1]) && isset($args[0]))
- return new lmbSQLRawCriteria($args[0]);
+ return new lmbSQLCriteria($args[0]);
//array('id=?', array(1))
elseif(isset($args[0]) && is_array($args[1]))
- return new lmbSQLRawCriteria($args[0], $args[1]);
+ return new lmbSQLCriteria($args[0], $args[1]);
//array('id=?', 1)
elseif(isset($args[0]))
{
$sql = array_shift($args);
- return new lmbSQLRawCriteria($sql, $args);
+ return new lmbSQLCriteria($sql, $args);
}
}
//id=1
elseif(is_string($args))
{
- return new lmbSQLRawCriteria($args);
+ return new lmbSQLCriteria($args);
}
- //new lmbSQLRawCriteria(..)
+ //new lmbSQLCriteria(..)
elseif(is_object($args))
{
return $args;
Modified: 3.x/trunk/limb/dbal/src/criteria/lmbSQLFieldBetweenCriteria.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/criteria/lmbSQLFieldBetweenCriteria.class.php 2007-07-02 14:17:20 UTC (rev 6046)
+++ 3.x/trunk/limb/dbal/src/criteria/lmbSQLFieldBetweenCriteria.class.php 2007-07-02 22:30:59 UTC (rev 6047)
@@ -1,43 +1,48 @@
-<?php
+<?php
/*
* Limb PHP Framework
*
* @link http://limb-project.com
* @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
* @license LGPL http://www.gnu.org/copyleft/lesser.html
- */
+ */
lmb_require('limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php');
-/**
- * class lmbSQLFieldBetweenCriteria.
- *
- * @package dbal
- * @version $Id$
+/**
+ * class lmbSQLFieldBetweenCriteria.
+ *
+ * @package dbal
+ * @version $Id$
*/
-class lmbSQLFieldBetweenCriteria extends lmbSQLBaseCriteria
-{
- protected $value_from;
- protected $value_to;
- protected $column;
-
- function __construct($column, $value_from, $value_to)
- {
- $this->column = $column;
- $this->value_from = $value_from;
- $this->value_to = $value_to;
- }
-
- protected function _appendExpressionToStatement(&$str, &$values, $conn)
- {
- $str .= $conn->quoteIdentifier($this->column) . ' BETWEEN ';
-
- $from_placeholder = $this->_makePlaceHolder('f' .$this->column . sizeof($values));
- $to_placeholder = $this->_makePlaceHolder('t' .$this->column . sizeof($values));
-
- $str .= ':' . $from_placeholder . ': AND :' . $to_placeholder . ':';
- $values[$from_placeholder] = $this->value_from;
- $values[$to_placeholder] = $this->value_to;
- }
-}
-
-?>
+class lmbSQLFieldBetweenCriteria extends lmbSQLBaseCriteria
+{
+ protected $value_from;
+ protected $value_to;
+ protected $column;
+
+ function __construct($column, $value_from, $value_to)
+ {
+ $this->column = $column;
+ $this->value_from = $value_from;
+ $this->value_to = $value_to;
+ }
+
+ protected function _makePlaceHolder($holder)
+ {
+ return 'p' . str_replace('.', '_', $holder);
+ }
+
+ protected function _appendExpressionToStatement(&$str, &$values, $conn)
+ {
+ $str .= $conn->quoteIdentifier($this->column) . ' BETWEEN ';
+
+ $from_placeholder = $this->_makePlaceHolder('f' .$this->column . sizeof($values));
+ $to_placeholder = $this->_makePlaceHolder('t' .$this->column . sizeof($values));
+
+ $str .= ':' . $from_placeholder . ': AND :' . $to_placeholder . ':';
+ $values[$from_placeholder] = $this->value_from;
+ $values[$to_placeholder] = $this->value_to;
+ }
+}
+
+?>
Modified: 3.x/trunk/limb/dbal/src/criteria/lmbSQLFieldCriteria.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/criteria/lmbSQLFieldCriteria.class.php 2007-07-02 14:17:20 UTC (rev 6046)
+++ 3.x/trunk/limb/dbal/src/criteria/lmbSQLFieldCriteria.class.php 2007-07-02 22:30:59 UTC (rev 6047)
@@ -1,118 +1,123 @@
-<?php
+<?php
/*
* Limb PHP Framework
*
* @link http://limb-project.com
* @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
* @license LGPL http://www.gnu.org/copyleft/lesser.html
- */
-lmb_require('limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php');
-lmb_require('limb/dbal/src/criteria/lmbSQLFalseCriteria.class.php');
-lmb_require('limb/dbal/src/criteria/lmbSQLRawCriteria.class.php');
+ */
+lmb_require('limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php');
+lmb_require('limb/dbal/src/criteria/lmbSQLFalseCriteria.class.php');
+lmb_require('limb/dbal/src/criteria/lmbSQLRawCriteria.class.php');
lmb_require('limb/dbal/src/criteria/lmbSQLTrueCriteria.class.php');
-/**
- * class lmbSQLFieldCriteria.
- *
- * @package dbal
- * @version $Id$
+/**
+ * class lmbSQLFieldCriteria.
+ *
+ * @package dbal
+ * @version $Id$
*/
-class lmbSQLFieldCriteria extends lmbSQLBaseCriteria
-{
- const EQUAL = "=";
- const NOT_EQUAL = "<>";
- const GREATER = ">";
- const LESS = "<";
- const GREATER_EQUAL = ">=";
- const LESS_EQUAL = "<=";
- const LIKE = " LIKE ";
- const NOT_LIKE = " NOT LIKE ";
- const IN = " IN ";
- const NOT_IN = " NOT IN ";
- const IS_NULL = " IS NULL";
- const IS_NOT_NULL = " IS NOT NULL";
-
- protected $value;
- protected $comparison;
- protected $column;
-
- function __construct($column, $value, $comparison = null)
- {
- $this->column = $column;
- $this->value = $value;
- $this->comparison = ($comparison === null ? self::EQUAL : $comparison);
- }
-
- function getColumn()
- {
- return $this->column;
- }
-
- function getComparison()
- {
- return $this->comparison;
- }
-
- function getValue()
- {
- return $this->value;
- }
-
- protected function _appendExpressionToStatement(&$str, &$values, $conn)
- {
- $field = $conn->quoteIdentifier($this->column);
-
- $stmt_placeholder = $this->_makePlaceHolder(sizeof($values) . $this->column);
-
- // OPTION 1: column IN (?, ?) or column NOT IN (?, ?)
- if ($this->comparison === self::IN || $this->comparison === self::NOT_IN)
- {
- $str .= $field . $this->comparison;
-
- $inString = '(';
- foreach($this->value as $key => $value)
- {
- $stmt_in_placeholder = $this->_makePlaceHolder($key . '_' . $stmt_placeholder);
- $values[$stmt_in_placeholder] = $value;
- $inString .= ':' . $stmt_in_placeholder . ':,';
- }
- $str .= rtrim($inString, ',') . ')';
- }
- // OPTION 2: column LIKE ? or column NOT LIKE ?
- elseif($this->comparison === self::LIKE || $this->comparison === self::NOT_LIKE)
- {
- $str .= $field . $this->comparison . ':' . $stmt_placeholder . ':';
- $values[$stmt_placeholder] = $this->value;
- }
- // OPTION 3: table.column = ? or table.column >= ? etc. (traditional expressions, the default)
- else
- {
- // null VALUES need special treatment because the SQL syntax is different
- // i.e. column IS null rather than column = null
- if ($this->value !== null)
- {
- $str .= $field . $this->comparison . ':' . $stmt_placeholder . ':';
- $values[$stmt_placeholder] = $this->value;
- }
- else
- {
- // value is null, which means it was either not specified or specifically
- // set to null.
- if ($this->comparison === self::EQUAL || $this->comparison === self::IS_NULL)
- {
- $str .= $field . self::IS_NULL;
- }
- elseif ($this->comparison === self::NOT_EQUAL || $this->comparison === self::IS_NOT_NULL)
- {
- $str .= $field . self::IS_NOT_NULL;
- }
- else
- {
- // for now throw an exception, because not sure how to interpret this
- throw new lmbException("Could not build SQL for expression: $field " . $this->comparison . " null");
- }
- }
- }
- }
-}
-?>
+class lmbSQLFieldCriteria extends lmbSQLBaseCriteria
+{
+ const EQUAL = "=";
+ const NOT_EQUAL = "<>";
+ const GREATER = ">";
+ const LESS = "<";
+ const GREATER_EQUAL = ">=";
+ const LESS_EQUAL = "<=";
+ const LIKE = " LIKE ";
+ const NOT_LIKE = " NOT LIKE ";
+ const IN = " IN ";
+ const NOT_IN = " NOT IN ";
+ const IS_NULL = " IS NULL";
+ const IS_NOT_NULL = " IS NOT NULL";
+
+ protected $value;
+ protected $comparison;
+ protected $column;
+
+ function __construct($column, $value, $comparison = null)
+ {
+ $this->column = $column;
+ $this->value = $value;
+ $this->comparison = ($comparison === null ? self::EQUAL : $comparison);
+ }
+
+ function getColumn()
+ {
+ return $this->column;
+ }
+
+ function getComparison()
+ {
+ return $this->comparison;
+ }
+
+ function getValue()
+ {
+ return $this->value;
+ }
+
+ protected function _makePlaceHolder($holder)
+ {
+ return 'p' . str_replace('.', '_', $holder);
+ }
+
+ protected function _appendExpressionToStatement(&$str, &$values, $conn)
+ {
+ $field = $conn->quoteIdentifier($this->column);
+
+ $stmt_placeholder = $this->_makePlaceHolder(sizeof($values) . $this->column);
+
+ // OPTION 1: column IN (?, ?) or column NOT IN (?, ?)
+ if ($this->comparison === self::IN || $this->comparison === self::NOT_IN)
+ {
+ $str .= $field . $this->comparison;
+
+ $inString = '(';
+ foreach($this->value as $key => $value)
+ {
+ $stmt_in_placeholder = $this->_makePlaceHolder($key . '_' . $stmt_placeholder);
+ $values[$stmt_in_placeholder] = $value;
+ $inString .= ':' . $stmt_in_placeholder . ':,';
+ }
+ $str .= rtrim($inString, ',') . ')';
+ }
+ // OPTION 2: column LIKE ? or column NOT LIKE ?
+ elseif($this->comparison === self::LIKE || $this->comparison === self::NOT_LIKE)
+ {
+ $str .= $field . $this->comparison . ':' . $stmt_placeholder . ':';
+ $values[$stmt_placeholder] = $this->value;
+ }
+ // OPTION 3: table.column = ? or table.column >= ? etc. (traditional expressions, the default)
+ else
+ {
+ // null VALUES need special treatment because the SQL syntax is different
+ // i.e. column IS null rather than column = null
+ if ($this->value !== null)
+ {
+ $str .= $field . $this->comparison . ':' . $stmt_placeholder . ':';
+ $values[$stmt_placeholder] = $this->value;
+ }
+ else
+ {
+ // value is null, which means it was either not specified or specifically
+ // set to null.
+ if ($this->comparison === self::EQUAL || $this->comparison === self::IS_NULL)
+ {
+ $str .= $field . self::IS_NULL;
+ }
+ elseif ($this->comparison === self::NOT_EQUAL || $this->comparison === self::IS_NOT_NULL)
+ {
+ $str .= $field . self::IS_NOT_NULL;
+ }
+ else
+ {
+ // for now throw an exception, because not sure how to interpret this
+ throw new lmbException("Could not build SQL for expression: $field " . $this->comparison . " null");
+ }
+ }
+ }
+ }
+}
+?>
Modified: 3.x/trunk/limb/dbal/src/criteria/lmbSQLRawCriteria.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/criteria/lmbSQLRawCriteria.class.php 2007-07-02 14:17:20 UTC (rev 6046)
+++ 3.x/trunk/limb/dbal/src/criteria/lmbSQLRawCriteria.class.php 2007-07-02 22:30:59 UTC (rev 6047)
@@ -1,48 +1,18 @@
-<?php
+<?php
/*
* Limb PHP Framework
*
* @link http://limb-project.com
* @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
* @license LGPL http://www.gnu.org/copyleft/lesser.html
- */
-lmb_require('limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php');
+ */
+lmb_require('limb/dbal/src/criteria/lmbSQLCriteria.class.php');
-/**
- * class lmbSQLRawCriteria.
- *
- * @package dbal
- * @version $Id$
+/**
+ * class lmbSQLRawCriteria.
+ *
+ * @package dbal
+ * @version $Id$
*/
-class lmbSQLRawCriteria extends lmbSQLBaseCriteria
-{
- protected $sql;
- protected $values;
-
- function __construct($sql, $values = array())
- {
- $this->sql = $sql;
- $this->values = $values;
- }
-
- protected function _appendExpressionToStatement(&$str, &$values, $conn)
- {
- $sql = $this->sql;
-
- foreach($this->values as $key => $value)
- {
- if(is_numeric($key))
- {
- $random_key = 'p' . mt_rand();
- $values[$random_key] = $value;
- $sql = preg_replace('~\?~', ':' . $random_key . ':', $sql, $limit = 1);
- }
- else
- $values[$key] = $value;
- }
-
- $str .= $sql;
- }
-
-}
-?>
+class lmbSQLRawCriteria extends lmbSQLCriteria{}
+?>
Deleted: 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCompositeCriteriaTest.class.php
===================================================================
--- 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCompositeCriteriaTest.class.php 2007-07-02 14:17:20 UTC (rev 6046)
+++ 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCompositeCriteriaTest.class.php 2007-07-02 22:30:59 UTC (rev 6047)
@@ -1,62 +0,0 @@
-<?php
-/*
- * Limb PHP Framework
- *
- * @link http://limb-project.com
- * @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
- * @license LGPL http://www.gnu.org/copyleft/lesser.html
- */
-lmb_require('limb/dbal/src/criteria/lmbSQLCompositeCriteria.class.php');
-lmb_require('limb/dbal/src/criteria/lmbSQLRawCriteria.class.php');
-
-class lmbSQLCompositeCriteriaTest extends UnitTestCase
-{
- function testEmpty()
- {
- $c = new lmbSQLCompositeCriteria();
- $this->assertEqual($c->toStatementString($values), '');
- }
-
- function testOneCriteria()
- {
- $c = new lmbSQLCompositeCriteria();
- $c->addAnd(new lmbSQLRawCriteria('a=1'));
-
- $values = array();
- $this->assertEqual($c->toStatementString($values), 'a=1');
-
- $c = new lmbSQLCompositeCriteria();
- $c->addOr(new lmbSQLRawCriteria('a=1'));
-
- $values = array();
- $this->assertEqual($c->toStatementString($values), 'a=1');
- }
-
- function testFirstConjunctionIsOmmitted()
- {
- $c = new lmbSQLCompositeCriteria();
- $c->addAnd(new lmbSQLRawCriteria('a=1'));
- $c->addAnd(new lmbSQLRawCriteria('b=2'));
- $c->addOr(new lmbSQLRawCriteria('c=3'));
-
- $values = array();
- $this->assertEqual($c->toStatementString($values), '(a=1 AND b=2 OR c=3)');
- }
-
- function testNestedCriteria()
- {
- $c = new lmbSQLCompositeCriteria();
- $c1 = new lmbSQLRawCriteria('a=1');
- $c2 = new lmbSQLRawCriteria('b=2');
- $c3 = new lmbSQLRawCriteria('d=4');
- $c2->addOr(new lmbSQLRawCriteria('c=3'));
-
- $c->addAnd($c1);
- $c->addAnd($c2);
-
- $values = array();
- $this->assertEqual($c->toStatementString($values), '(a=1 AND (b=2 OR c=3))');
- }
-}
-
-?>
Modified: 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCriteriaTest.class.php
===================================================================
--- 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCriteriaTest.class.php 2007-07-02 14:17:20 UTC (rev 6046)
+++ 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCriteriaTest.class.php 2007-07-02 22:30:59 UTC (rev 6047)
@@ -10,6 +10,51 @@
class lmbSQLCriteriaTest extends UnitTestCase
{
+ function testBuildCriteriaFromString()
+ {
+ $c = new lmbSQLCriteria('a=1');
+
+ $this->assertEqual($c->toStatementString(), 'a=1');
+ }
+
+ function testBuildCriteriaFromStringWithNamedValues()
+ {
+ $c = new lmbSQLCriteria('a=:id:', array('id' => 2));
+
+ $this->assertEqual($c->toStatementString($values), 'a=:id:');
+ $this->assertEqual($values, array('id' => 2));
+ }
+
+ function testBuildCriteriaFromStringWithNonNamedValues()
+ {
+ $c = new lmbSQLCriteria('a=? OR b=?', array(2, 3));
+
+ $str = $c->toStatementString($values);
+
+ $key1 = key($values);
+ next($values);
+ $key2 = key($values);
+
+ $this->assertEqual($str, 'a=:' . $key1 . ': OR b=:' . $key2 . ':');
+
+ $this->assertEqual($values[$key1], 2);
+ $this->assertEqual($values[$key2], 3);
+ }
+
+ function testChaining()
+ {
+ $a = new lmbSQLCriteria('a');
+ $b = new lmbSQLCriteria('b');
+ $c = new lmbSQLCriteria('c');
+ $d = new lmbSQLCriteria('d');
+ $e = new lmbSQLCriteria('e');
+ $g = new lmbSQLCriteria('g');
+
+ $a->addOr($b->addAnd($c))->addAnd($d->addOr($e)->addAnd($g));
+
+ $this->assertEqual($a->toStatementString(), 'a OR (b AND c) AND (d OR e AND g)');
+ }
+
function testObjectifyString()
{
$criteria = lmbSQLCriteria :: objectify("id = 1");
@@ -18,7 +63,7 @@
function testObjectifyObject()
{
- $criteria = lmbSQLCriteria :: objectify(new lmbSQLRawCriteria("id = 1"));
+ $criteria = lmbSQLCriteria :: objectify(new lmbSQLCriteria("id = 1"));
$this->assertEqual($criteria->toStatementString(), "id = 1");
}
@@ -42,7 +87,7 @@
function testNot()
{
- $criteria = lmbSQLCriteria :: not(new lmbSQLRawCriteria("id = 1"));
+ $criteria = lmbSQLCriteria :: not(new lmbSQLCriteria("id = 1"));
$this->assertEqual($criteria->toStatementString(), "!(id = 1)");
}
Modified: 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLFieldCriteriaTest.class.php
===================================================================
--- 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLFieldCriteriaTest.class.php 2007-07-02 14:17:20 UTC (rev 6046)
+++ 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLFieldCriteriaTest.class.php 2007-07-02 22:30:59 UTC (rev 6047)
@@ -122,7 +122,7 @@
$c->addAnd(new lmbSQLFieldCriteria('count2', 'test'));
$values = array();
- $this->assertEqual($c->toStatementString($values, $this->conn), "('count'=:p0count: AND 'count2'=:p1count2:)");
+ $this->assertEqual($c->toStatementString($values, $this->conn), "'count'=:p0count: AND 'count2'=:p1count2:");
$this->assertEqual($values, array('p0count' => 4, 'p1count2' => 'test'));
}
@@ -132,7 +132,7 @@
$c->addOr(new lmbSQLFieldCriteria('count', 5));
$values = array();
- $this->assertEqual($c->toStatementString($values, $this->conn), "('count'=:p0count: OR 'count'=:p1count:)");
+ $this->assertEqual($c->toStatementString($values, $this->conn), "'count'=:p0count: OR 'count'=:p1count:");
$this->assertEqual($values, array('p0count' => 4, 'p1count' => 5));
}
@@ -146,7 +146,7 @@
$c1->addOr($c2->addAnd($c3));
$this->assertEqual($c1->toStatementString($values, $this->conn),
- "('name'=:p0name: OR ('last_name' IN (:p0_p1last_name:,:p1_p1last_name:,:p2_p1last_name:) AND 'age'=:p4age:))");
+ "'name'=:p0name: OR ('last_name' IN (:p0_p1last_name:,:p1_p1last_name:,:p2_p1last_name:) AND 'age'=:p4age:)");
$this->assertEqual($values, array('p0name' => "Leo",
'p0_p1last_name' => "Tolstoy",
@@ -162,7 +162,7 @@
$c1->addOr($c2);
$this->assertEqual($c1->toStatementString($values, $this->conn),
- "('name'=:p0name: OR 'name'=:p1name:)");
+ "'name'=:p0name: OR 'name'=:p1name:");
$this->assertEqual($values, array('p0name' => "Leo",
'p1name' => "Ivan"));
Deleted: 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLRawCriteriaTest.class.php
===================================================================
--- 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLRawCriteriaTest.class.php 2007-07-02 14:17:20 UTC (rev 6046)
+++ 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLRawCriteriaTest.class.php 2007-07-02 22:30:59 UTC (rev 6047)
@@ -1,57 +0,0 @@
-<?php
-/*
- * Limb PHP Framework
- *
- * @link http://limb-project.com
- * @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
- * @license LGPL http://www.gnu.org/copyleft/lesser.html
- */
-lmb_require('limb/dbal/src/criteria/lmbSQLRawCriteria.class.php');
-
-class lmbSQLRawCriteriaTest extends UnitTestCase
-{
- function testBuildCriteriaFromString()
- {
- $c = new lmbSQLRawCriteria('a=1');
-
- $this->assertEqual($c->toStatementString(), 'a=1');
- }
-
- function testBuildCriteriaFromStringWithNamedValues()
- {
- $c = new lmbSQLRawCriteria('a=:id:', array('id' => 2));
-
- $this->assertEqual($c->toStatementString($values), 'a=:id:');
- $this->assertEqual($values, array('id' => 2));
- }
-
- function testBuildCriteriaFromStringWithNonNamedValues()
- {
- $c = new lmbSQLRawCriteria('a=? OR b=?', array(2, 3));
-
- $str = $c->toStatementString($values);
-
- $key1 = key($values);
- next($values);
- $key2 = key($values);
-
- $this->assertEqual($str, 'a=:' . $key1 . ': OR b=:' . $key2 . ':');
-
- $this->assertEqual($values[$key1], 2);
- $this->assertEqual($values[$key2], 3);
- }
-
- function testNesting()
- {
- $c1 = new lmbSQLRawCriteria('a=1');
- $c2 = new lmbSQLRawCriteria('b=2');
- $c3 = new lmbSQLRawCriteria('c=3');
-
- $c1->addOr($c2);
- $c2->addAnd($c3);
-
- $this->assertEqual($c1->toStatementString(), '(a=1 OR (b=2 AND c=3))');
- }
-}
-
-?>
Modified: 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLTableFieldCriteriaTest.class.php
===================================================================
--- 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLTableFieldCriteriaTest.class.php 2007-07-02 14:17:20 UTC (rev 6046)
+++ 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLTableFieldCriteriaTest.class.php 2007-07-02 22:30:59 UTC (rev 6047)
@@ -1,138 +1,138 @@
-<?php
+<?php
/*
* Limb PHP Framework
*
* @link http://limb-project.com
* @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
* @license LGPL http://www.gnu.org/copyleft/lesser.html
- */
-require_once('limb/dbal/tests/common.inc.php');
-lmb_require('limb/dbal/src/criteria/lmbSQLTableFieldCriteria.class.php');
-
-class lmbSQLTableFieldCriteriaTest extends UnitTestCase
-{
- var $conn;
-
- function setUp()
- {
- $this->conn = new ConnectionTestStub();
- }
-
- function testEqual()
- {
- $c = new lmbSQLTableFieldCriteria('t.id', 4);
-
- $values = array();
- $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id'=:p0t_id:");
- $this->assertEqual($values, array('p0t_id' => 4));
- }
-
- function testNotEqual()
- {
- $c = new lmbSQLTableFieldCriteria('t.id', 4, lmbSQLFieldCriteria::NOT_EQUAL);
-
- $values = array();
- $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id'<>:p0t_id:");
- $this->assertEqual($values, array('p0t_id' => 4));
- }
-
- function testGreater()
- {
- $c = new lmbSQLTableFieldCriteria('t.id', 4, lmbSQLFieldCriteria::GREATER);
-
- $values = array();
- $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id'>:p0t_id:");
- $this->assertEqual($values, array('p0t_id' => 4));
- }
-
- function testLess()
- {
- $c = new lmbSQLTableFieldCriteria('t.id', 4, lmbSQLFieldCriteria::LESS);
-
- $values = array();
- $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id'<:p0t_id:");
- $this->assertEqual($values, array('p0t_id' => 4));
- }
-
- function testGreaterEqual()
- {
- $c = new lmbSQLTableFieldCriteria('t.id', 4, lmbSQLFieldCriteria::GREATER_EQUAL);
-
- $values = array();
- $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id'>=:p0t_id:");
- $this->assertEqual($values, array('p0t_id' => 4));
- }
-
- function testLessEqual()
- {
- $c = new lmbSQLTableFieldCriteria('t.id', 4, lmbSQLFieldCriteria::LESS_EQUAL);
-
- $values = array();
- $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id'<=:p0t_id:");
- $this->assertEqual($values, array('p0t_id' => 4));
- }
-
- function testIn()
- {
- $c = new lmbSQLTableFieldCriteria('t.id', array(1, 2, 3), lmbSQLFieldCriteria::IN);
-
- $values = array();
- $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id' IN (:p0_p0t_id:,:p1_p0t_id:,:p2_p0t_id:)");
- $this->assertEqual($values, array('p0_p0t_id' => 1, 'p1_p0t_id' => 2, 'p2_p0t_id' => 3));
- }
-
- function testNotIn()
- {
- $c = new lmbSQLTableFieldCriteria('t.id', array(1, 2, 3), lmbSQLFieldCriteria::NOT_IN);
-
- $values = array();
- $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id' NOT IN (:p0_p0t_id:,:p1_p0t_id:,:p2_p0t_id:)");
- $this->assertEqual($values, array('p0_p0t_id' => 1, 'p1_p0t_id' => 2, 'p2_p0t_id' => 3));
- }
-
- function testIsNull()
- {
- $c = new lmbSQLTableFieldCriteria('t.id', null);
- $values = array();
- $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id' IS NULL");
- }
-
- function testIsNotNull()
- {
- $c = new lmbSQLTableFieldCriteria('t.id', null, lmbSQLFieldCriteria::NOT_EQUAL);
- $values = array();
- $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id' IS NOT NULL");
- }
-
- function testAnd()
- {
- $c = new lmbSQLTableFieldCriteria('t.id', 4);
- $c->addAnd(new lmbSQLTableFieldCriteria('t.name', 'test'));
-
- $values = array();
- $this->assertEqual($c->toStatementString($values, $this->conn), "('t.id'=:p0t_id: AND 't.name'=:p1t_name:)");
- $this->assertEqual($values, array('p0t_id' => 4, 'p1t_name' => 'test'));
- }
-
- function testOr()
- {
- $c = new lmbSQLTableFieldCriteria('t.id', 4);
- $c->addOr(new lmbSQLTableFieldCriteria('t.id', 5));
-
- $values = array();
- $this->assertEqual($c->toStatementString($values, $this->conn), "('t.id'=:p0t_id: OR 't.id'=:p1t_id:)");
- $this->assertEqual($values, array('p0t_id' => 4, 'p1t_id' => 5));
- }
-
- function testException()
- {
- try
- {
- $c = new lmbSQLTableFieldCriteria('id', 4);
- $this->assertTrue(false);
- }
- catch(lmbException $e){}
- }
-}
-
-?>
+ */
+require_once('limb/dbal/tests/common.inc.php');
+lmb_require('limb/dbal/src/criteria/lmbSQLTableFieldCriteria.class.php');
+
+class lmbSQLTableFieldCriteriaTest extends UnitTestCase
+{
+ var $conn;
+
+ function setUp()
+ {
+ $this->conn = new ConnectionTestStub();
+ }
+
+ function testEqual()
+ {
+ $c = new lmbSQLTableFieldCriteria('t.id', 4);
+
+ $values = array();
+ $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id'=:p0t_id:");
+ $this->assertEqual($values, array('p0t_id' => 4));
+ }
+
+ function testNotEqual()
+ {
+ $c = new lmbSQLTableFieldCriteria('t.id', 4, lmbSQLFieldCriteria::NOT_EQUAL);
+
+ $values = array();
+ $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id'<>:p0t_id:");
+ $this->assertEqual($values, array('p0t_id' => 4));
+ }
+
+ function testGreater()
+ {
+ $c = new lmbSQLTableFieldCriteria('t.id', 4, lmbSQLFieldCriteria::GREATER);
+
+ $values = array();
+ $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id'>:p0t_id:");
+ $this->assertEqual($values, array('p0t_id' => 4));
+ }
+
+ function testLess()
+ {
+ $c = new lmbSQLTableFieldCriteria('t.id', 4, lmbSQLFieldCriteria::LESS);
+
+ $values = array();
+ $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id'<:p0t_id:");
+ $this->assertEqual($values, array('p0t_id' => 4));
+ }
+
+ function testGreaterEqual()
+ {
+ $c = new lmbSQLTableFieldCriteria('t.id', 4, lmbSQLFieldCriteria::GREATER_EQUAL);
+
+ $values = array();
+ $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id'>=:p0t_id:");
+ $this->assertEqual($values, array('p0t_id' => 4));
+ }
+
+ function testLessEqual()
+ {
+ $c = new lmbSQLTableFieldCriteria('t.id', 4, lmbSQLFieldCriteria::LESS_EQUAL);
+
+ $values = array();
+ $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id'<=:p0t_id:");
+ $this->assertEqual($values, array('p0t_id' => 4));
+ }
+
+ function testIn()
+ {
+ $c = new lmbSQLTableFieldCriteria('t.id', array(1, 2, 3), lmbSQLFieldCriteria::IN);
+
+ $values = array();
+ $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id' IN (:p0_p0t_id:,:p1_p0t_id:,:p2_p0t_id:)");
+ $this->assertEqual($values, array('p0_p0t_id' => 1, 'p1_p0t_id' => 2, 'p2_p0t_id' => 3));
+ }
+
+ function testNotIn()
+ {
+ $c = new lmbSQLTableFieldCriteria('t.id', array(1, 2, 3), lmbSQLFieldCriteria::NOT_IN);
+
+ $values = array();
+ $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id' NOT IN (:p0_p0t_id:,:p1_p0t_id:,:p2_p0t_id:)");
+ $this->assertEqual($values, array('p0_p0t_id' => 1, 'p1_p0t_id' => 2, 'p2_p0t_id' => 3));
+ }
+
+ function testIsNull()
+ {
+ $c = new lmbSQLTableFieldCriteria('t.id', null);
+ $values = array();
+ $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id' IS NULL");
+ }
+
+ function testIsNotNull()
+ {
+ $c = new lmbSQLTableFieldCriteria('t.id', null, lmbSQLFieldCriteria::NOT_EQUAL);
+ $values = array();
+ $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id' IS NOT NULL");
+ }
+
+ function testAnd()
+ {
+ $c = new lmbSQLTableFieldCriteria('t.id', 4);
+ $c->addAnd(new lmbSQLTableFieldCriteria('t.name', 'test'));
+
+ $values = array();
+ $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id'=:p0t_id: AND 't.name'=:p1t_name:");
+ $this->assertEqual($values, array('p0t_id' => 4, 'p1t_name' => 'test'));
+ }
+
+ function testOr()
+ {
+ $c = new lmbSQLTableFieldCriteria('t.id', 4);
+ $c->addOr(new lmbSQLTableFieldCriteria('t.id', 5));
+
+ $values = array();
+ $this->assertEqual($c->toStatementString($values, $this->conn), "'t.id'=:p0t_id: OR 't.id'=:p1t_id:");
+ $this->assertEqual($values, array('p0t_id' => 4, 'p1t_id' => 5));
+ }
+
+ function testException()
+ {
+ try
+ {
+ $c = new lmbSQLTableFieldCriteria('id', 4);
+ $this->assertTrue(false);
+ }
+ catch(lmbException $e){}
+ }
+}
+
+?>
More information about the limb-svn
mailing list