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.doctrine-project.org>. 20 */ 21 22/** 23 * Doctrine_Ticket_DDC47_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.doctrine-project.org 30 * @since 1.0 31 * @version $Revision$ 32 */ 33class Doctrine_Ticket_DC112_TestCase extends Doctrine_UnitTestCase 34{ 35 public function testResultCacheSetHash() 36 { 37 $cacheDriver = new Doctrine_Cache_Array(); 38 39 $q1 = Doctrine_Query::create() 40 ->from('User u') 41 ->useResultCache($cacheDriver, 3600, 'test1'); 42 43 $coll = $q1->execute(); 44 45 $this->assertTrue($cacheDriver->contains('test1')); 46 $this->assertEqual(count($coll), 8); 47 48 $coll = $q1->execute(); 49 50 $this->assertTrue($cacheDriver->contains('test1')); 51 $this->assertEqual(count($coll), 8); 52 53 $q2 = Doctrine_Query::create() 54 ->from('User u') 55 ->useResultCache($cacheDriver, 3600, 'test2'); 56 57 $coll = $q2->execute(); 58 $this->assertTrue($cacheDriver->contains('test1')); 59 $this->assertTrue($cacheDriver->contains('test2')); 60 $this->assertEqual(count($coll), 8); 61 62 $q2->clearResultCache(); 63 $this->assertTrue($cacheDriver->contains('test1')); 64 $this->assertFalse($cacheDriver->contains('test2')); 65 66 $cacheDriver->delete('test1'); 67 $this->assertFalse($cacheDriver->contains('test1')); 68 69 $q = Doctrine_Query::create() 70 ->from('User u') 71 ->useResultCache($cacheDriver) 72 ->setResultCacheHash('testing'); 73 74 $coll = $q->execute(); 75 $this->assertTrue($cacheDriver->contains('testing')); 76 77 $this->assertEqual($q->getResultCacheHash(), 'testing'); 78 $q->setResultCacheHash(null); 79 $this->assertEqual($q->getResultCacheHash(), '9b6aafa501ac37b902719cd5061f412d'); 80 } 81 82 public function testDeleteByRegex() 83 { 84 $cacheDriver = new Doctrine_Cache_Array(array( 85 'prefix' => 'test_' 86 )); 87 88 Doctrine_Query::create() 89 ->from('User u') 90 ->useResultCache($cacheDriver, 3600, 'doctrine_query_one') 91 ->execute(); 92 93 Doctrine_Query::create() 94 ->from('User u') 95 ->useResultCache($cacheDriver, 3600, 'doctrine_query_two') 96 ->execute(); 97 98 $count = $cacheDriver->deleteByRegex('/test_doctrine_query_.*/'); 99 $this->assertEqual($count, 2); 100 $this->assertFalse($cacheDriver->contains('doctrine_query_one')); 101 $this->assertFalse($cacheDriver->contains('doctrine_query_two')); 102 } 103 104 public function testDeleteByPrefix() 105 { 106 $cacheDriver = new Doctrine_Cache_Array(array( 107 'prefix' => 'test_' 108 )); 109 110 Doctrine_Query::create() 111 ->from('User u') 112 ->useResultCache($cacheDriver, 3600, 'doctrine_query_one') 113 ->execute(); 114 115 Doctrine_Query::create() 116 ->from('User u') 117 ->useResultCache($cacheDriver, 3600, 'doctrine_query_two') 118 ->execute(); 119 120 $count = $cacheDriver->deleteByPrefix('test_'); 121 $this->assertEqual($count, 2); 122 $this->assertFalse($cacheDriver->contains('doctrine_query_one')); 123 $this->assertFalse($cacheDriver->contains('doctrine_query_two')); 124 } 125 126 public function testDeleteBySuffix() 127 { 128 $cacheDriver = new Doctrine_Cache_Array(); 129 130 Doctrine_Query::create() 131 ->from('User u') 132 ->useResultCache($cacheDriver, 3600, 'one_query') 133 ->execute(); 134 135 Doctrine_Query::create() 136 ->from('User u') 137 ->useResultCache($cacheDriver, 3600, 'two_query') 138 ->execute(); 139 140 $count = $cacheDriver->deleteBySuffix('_query'); 141 $this->assertEqual($count, 2); 142 $this->assertFalse($cacheDriver->contains('one_query')); 143 $this->assertFalse($cacheDriver->contains('two_query')); 144 } 145 146 public function testDeleteWithWildcard() 147 { 148 $cacheDriver = new Doctrine_Cache_Array(); 149 150 Doctrine_Query::create() 151 ->from('User u') 152 ->useResultCache($cacheDriver, 3600, 'user_query_one') 153 ->execute(); 154 155 Doctrine_Query::create() 156 ->from('User u') 157 ->useResultCache($cacheDriver, 3600, 'user_query_two') 158 ->execute(); 159 160 $count = $cacheDriver->delete('user_query_*'); 161 $this->assertEqual($count, 2); 162 $this->assertFalse($cacheDriver->contains('user_query_one')); 163 $this->assertFalse($cacheDriver->contains('user_query_two')); 164 } 165} 166