[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 &copy; 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 &copy; 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 &copy; 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 &copy; 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 &copy; 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 &copy; 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 &copy; 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 &copy; 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