root/branches/0.10/tests/Query/ConditionTestCase.php

Revision 3884, 5.1 KB (checked in by jwage, 11 months ago)

Changed all references from phpdoctrine.com to phpdoctrine.org

Line 
1<?php
2/*
3 *  $Id$
4 *
5 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
6 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
8 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
14 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16 *
17 * This software consists of voluntary contributions made by many individuals
18 * and is licensed under the LGPL. For more information, see
19 * <http://www.phpdoctrine.org>.
20 */
21
22/**
23 * Doctrine_Query_Condition_TestCase
24 *
25 * @package     Doctrine
26 * @author      Konsta Vesterinen <kvesteri@cc.hut.fi>
27 * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
28 * @category    Object Relational Mapping
29 * @link        www.phpdoctrine.org
30 * @since       1.0
31 * @version     $Revision$
32 */
33class Doctrine_Query_Condition_TestCase extends Doctrine_UnitTestCase 
34{
35    public function prepareData() { }
36    public function prepareTables() { }
37   
38    /** @todo belongs in TokenizerTestCase? */
39    public function testBracktExplode() 
40    {
41        $tokenizer = new Doctrine_Query_Tokenizer();
42        $str   = "item OR item || item";
43        $parts = $tokenizer->bracketExplode($str, array(' \|\| ', ' OR '), "(", ")");
44
45        $this->assertEqual($parts, array('item','item','item'));
46
47    }
48    public function testConditionParser() 
49    {
50        $query = new Doctrine_Query($this->connection);
51
52        $query->select('User.id')->from("User")->where("User.name LIKE 'z%' || User.name LIKE 's%'");
53
54        $sql = "SELECT e.id AS e__id FROM entity e WHERE (e.name LIKE 'z%' OR e.name LIKE 's%') AND (e.type = 0)";
55        $this->assertEqual($query->getQuery(), $sql);
56
57        $query->where("(User.name LIKE 'z%') || (User.name LIKE 's%')");
58        $this->assertEqual($query->getQuery(), $sql);
59
60        $query->where("((User.name LIKE 'z%') || (User.name LIKE 's%'))");
61        $this->assertEqual($query->getQuery(), $sql);
62
63        $query->where("(((User.name LIKE 'z%') || (User.name LIKE 's%')))");
64        $this->assertEqual($query->getQuery(), $sql);
65
66        $query->where("(((User.name LIKE 'z%') || User.name LIKE 's%'))");
67        $this->assertEqual($query->getQuery(), $sql);
68
69        $query->where("(User.name LIKE 'z%') || User.name LIKE 's%' && User.name LIKE 'a%'");
70
71        $sql = "SELECT e.id AS e__id FROM entity e WHERE ((e.name LIKE 'z%' OR e.name LIKE 's%') AND e.name LIKE 'a%') AND (e.type = 0)";
72
73        $this->assertEqual($query->getQuery(), $sql);
74
75        $query->where("(((User.name LIKE 'z%') || User.name LIKE 's%')) && User.name LIKE 'a%'");
76        $this->assertEqual($query->getQuery(), $sql);
77
78        $query->where("((((User.name LIKE 'z%') || User.name LIKE 's%')) && User.name LIKE 'a%')");
79        $this->assertEqual($query->getQuery(), $sql);
80
81        $query->where("(((((User.name LIKE 'z%') || User.name LIKE 's%')) && User.name LIKE 'a%'))");
82        $this->assertEqual($query->getQuery(), $sql);
83
84    }
85
86    public function testConditionParser2() 
87    {
88        $query = new Doctrine_Query($this->connection);
89
90        $query->select('User.id')->from("User")->where("User.name LIKE 'z%' || User.name LIKE 's%'");
91
92        $sql = "SELECT e.id AS e__id FROM entity e WHERE (e.name LIKE 'z%' OR e.name LIKE 's%') AND (e.type = 0)";
93        $this->assertEqual($query->getQuery(), $sql);
94
95        $query->where("(User.name LIKE 'z%') OR (User.name LIKE 's%')");
96        $this->assertEqual($query->getQuery(), $sql);
97
98        $query->where("((User.name LIKE 'z%') OR (User.name LIKE 's%'))");
99        $this->assertEqual($query->getQuery(), $sql);
100
101        $query->where("(((User.name LIKE 'z%') OR (User.name LIKE 's%')))");
102        $this->assertEqual($query->getQuery(), $sql);
103
104        $query->where("(((User.name LIKE 'z%') OR User.name LIKE 's%'))");
105        $this->assertEqual($query->getQuery(), $sql);
106
107        $query->where("(User.name LIKE 'z%') OR User.name LIKE 's%' AND User.name LIKE 'a%'");
108
109        $sql = "SELECT e.id AS e__id FROM entity e WHERE ((e.name LIKE 'z%' OR e.name LIKE 's%') AND e.name LIKE 'a%') AND (e.type = 0)";
110
111        $this->assertEqual($query->getQuery(), $sql);
112
113        $query->where("(((User.name LIKE 'z%') OR User.name LIKE 's%')) AND User.name LIKE 'a%'");
114        $this->assertEqual($query->getQuery(), $sql);
115
116        $query->where("((((User.name LIKE 'z%') OR User.name LIKE 's%')) AND User.name LIKE 'a%')");
117        $this->assertEqual($query->getQuery(), $sql);
118
119        $query->where("(((((User.name LIKE 'z%') OR User.name LIKE 's%')) AND User.name LIKE 'a%'))");
120        $this->assertEqual($query->getQuery(), $sql);
121    }
122}
Note: See TracBrowser for help on using the browser.