TYPO3 API  SVNRelease
t3lib_cache_backend_transientmemorybackendTest.php
Go to the documentation of this file.
00001 <?php
00002 /***************************************************************
00003 *  Copyright notice
00004 *
00005 *  (c) 2009-2011 Ingo Renner <ingo@typo3.org>
00006 *  All rights reserved
00007 *
00008 *  This script is part of the TYPO3 project. The TYPO3 project is
00009 *  free software; you can redistribute it and/or modify
00010 *  it under the terms of the GNU General Public License as published by
00011 *  the Free Software Foundation; either version 2 of the License, or
00012 *  (at your option) any later version.
00013 *
00014 *  The GNU General Public License can be found at
00015 *  http://www.gnu.org/copyleft/gpl.html.
00016 *
00017 *  This script is distributed in the hope that it will be useful,
00018 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00019 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020 *  GNU General Public License for more details.
00021 *
00022 *  This copyright notice MUST APPEAR in all copies of the script!
00023 ***************************************************************/
00024 
00025 /**
00026  * Testcase for the TransientMemory cache backend
00027  *
00028  * This file is a backport from FLOW3
00029  *
00030  * @author  Ingo Renner <ingo@typo3.org>
00031  * @package TYPO3
00032  * @subpackage tests
00033  * @version $Id: t3lib_cache_backend_transientmemorybackendTest.php 10121 2011-01-18 20:15:30Z ohader $
00034  */
00035 class t3lib_cache_backend_TransientMemoryBackendTest extends tx_phpunit_testcase {
00036 
00037     /**
00038      * @expectedException t3lib_cache_Exception
00039      * @test
00040      * @author Robert Lemke <robert@typo3.org>
00041      */
00042     public function setThrowsExceptionIfNoFrontEndHasBeenSet() {
00043         $backend = new t3lib_cache_backend_TransientMemoryBackend();
00044 
00045         $data = 'Some data';
00046         $identifier = 'MyIdentifier';
00047         $backend->set($identifier, $data);
00048     }
00049 
00050     /**
00051      * @test
00052      * @author Robert Lemke <robert@typo3.org>
00053      * @author Ingo Renner <ingo@typo3.org>
00054      */
00055     public function itIsPossibleToSetAndCheckExistenceInCache() {
00056         $cache = $this->getMock('t3lib_cache_frontend_Frontend', array(), array(), '', FALSE);
00057         $backend = new t3lib_cache_backend_TransientMemoryBackend();
00058         $backend->setCache($cache);
00059 
00060         $data = 'Some data';
00061         $identifier = 'MyIdentifier';
00062         $backend->set($identifier, $data);
00063         $inCache = $backend->has($identifier);
00064         $this->assertTrue($inCache);
00065     }
00066 
00067     /**
00068      * @test
00069      * @author Robert Lemke <robert@typo3.org>
00070      * @author Ingo Renner <ingo@typo3.org>
00071      */
00072     public function itIsPossibleToSetAndGetEntry() {
00073         $cache = $this->getMock('t3lib_cache_frontend_Frontend', array(), array(), '', FALSE);
00074         $backend = new t3lib_cache_backend_TransientMemoryBackend();
00075         $backend->setCache($cache);
00076 
00077         $data = 'Some data';
00078         $identifier = 'MyIdentifier';
00079         $backend->set($identifier, $data);
00080         $fetchedData = $backend->get($identifier);
00081         $this->assertEquals($data, $fetchedData);
00082     }
00083 
00084     /**
00085      * @test
00086      * @author Robert Lemke <robert@typo3.org>
00087      * @author Ingo Renner <ingo@typo3.org>
00088      */
00089     public function itIsPossibleToRemoveEntryFromCache() {
00090         $cache = $this->getMock('t3lib_cache_frontend_Frontend', array(), array(), '', FALSE);
00091         $backend = new t3lib_cache_backend_TransientMemoryBackend();
00092         $backend->setCache($cache);
00093 
00094         $data = 'Some data';
00095         $identifier = 'MyIdentifier';
00096         $backend->set($identifier, $data);
00097         $backend->remove($identifier);
00098         $inCache = $backend->has($identifier);
00099         $this->assertFalse($inCache);
00100     }
00101 
00102     /**
00103      * @test
00104      * @author Robert Lemke <robert@typo3.org>
00105      * @author Ingo Renner <ingo@typo3.org>
00106      */
00107     public function itIsPossibleToOverwriteAnEntryInTheCache() {
00108         $cache = $this->getMock('t3lib_cache_frontend_Frontend', array(), array(), '', FALSE);
00109         $backend = new t3lib_cache_backend_TransientMemoryBackend();
00110         $backend->setCache($cache);
00111 
00112         $data = 'Some data';
00113         $identifier = 'MyIdentifier';
00114         $backend->set($identifier, $data);
00115         $otherData = 'some other data';
00116         $backend->set($identifier, $otherData);
00117         $fetchedData = $backend->get($identifier);
00118         $this->assertEquals($otherData, $fetchedData);
00119     }
00120 
00121     /**
00122      * @test
00123      * @author Robert Lemke <robert@typo3.org>
00124      * @author Ingo Renner <ingo@typo3.org>
00125      */
00126     public function findIdentifiersByTagFindsCacheEntriesWithSpecifiedTag() {
00127         $cache = $this->getMock('t3lib_cache_frontend_Frontend', array(), array(), '', FALSE);
00128         $backend = new t3lib_cache_backend_TransientMemoryBackend();
00129         $backend->setCache($cache);
00130 
00131         $data = 'Some data';
00132         $entryIdentifier = 'MyIdentifier';
00133         $backend->set($entryIdentifier, $data, array('UnitTestTag%tag1', 'UnitTestTag%tag2'));
00134 
00135         $retrieved = $backend->findIdentifiersByTag('UnitTestTag%tag1');
00136         $this->assertEquals($entryIdentifier, $retrieved[0]);
00137 
00138         $retrieved = $backend->findIdentifiersByTag('UnitTestTag%tag2');
00139         $this->assertEquals($entryIdentifier, $retrieved[0]);
00140     }
00141 
00142     /**
00143      * @test
00144      * @author Robert Lemke <robert@typo3.org>
00145      * @author Ingo Renner <ingo@typo3.org>
00146      */
00147     public function hasReturnsFalseIfTheEntryDoesntExist() {
00148         $cache = $this->getMock('t3lib_cache_frontend_Frontend', array(), array(), '', FALSE);
00149         $backend = new t3lib_cache_backend_TransientMemoryBackend();
00150         $backend->setCache($cache);
00151 
00152         $identifier = 'NonExistingIdentifier';
00153         $inCache = $backend->has($identifier);
00154         $this->assertFalse($inCache);
00155     }
00156 
00157     /**
00158      * @test
00159      * @author Robert Lemke <robert@typo3.org>
00160      * @author Ingo Renner <ingo@typo3.org>
00161      */
00162     public function removeReturnsFalseIfTheEntryDoesntExist() {
00163         $cache = $this->getMock('t3lib_cache_frontend_Frontend', array(), array(), '', FALSE);
00164         $backend = new t3lib_cache_backend_TransientMemoryBackend();
00165         $backend->setCache($cache);
00166 
00167         $identifier = 'NonExistingIdentifier';
00168         $inCache = $backend->remove($identifier);
00169         $this->assertFalse($inCache);
00170     }
00171 
00172     /**
00173      * @test
00174      * @author Robert Lemke <robert@typo3.org>
00175      * @author Karsten Dambekalns <karsten@typo3.org>
00176      * @author Ingo Renner <ingo@typo3.org>
00177      */
00178     public function flushByTagRemovesCacheEntriesWithSpecifiedTag() {
00179         $cache = $this->getMock('t3lib_cache_frontend_Frontend', array(), array(), '', FALSE);
00180         $backend = new t3lib_cache_backend_TransientMemoryBackend();
00181         $backend->setCache($cache);
00182 
00183         $data = 'some data' . microtime();
00184         $backend->set('TransientMemoryBackendTest1', $data, array('UnitTestTag%test', 'UnitTestTag%boring'));
00185         $backend->set('TransientMemoryBackendTest2', $data, array('UnitTestTag%test', 'UnitTestTag%special'));
00186         $backend->set('TransientMemoryBackendTest3', $data, array('UnitTestTag%test'));
00187 
00188         $backend->flushByTag('UnitTestTag%special');
00189 
00190         $this->assertTrue($backend->has('TransientMemoryBackendTest1'), 'TransientMemoryBackendTest1');
00191         $this->assertFalse($backend->has('TransientMemoryBackendTest2'), 'TransientMemoryBackendTest2');
00192         $this->assertTrue($backend->has('TransientMemoryBackendTest3'), 'TransientMemoryBackendTest3');
00193     }
00194 
00195     /**
00196      * @test
00197      * @author Karsten Dambekalns <karsten@typo3.org>
00198      * @author Ingo Renner <ingo@typo3.org>
00199      */
00200     public function flushRemovesAllCacheEntries() {
00201         $cache = $this->getMock('t3lib_cache_frontend_Frontend', array(), array(), '', FALSE);
00202         $backend = new t3lib_cache_backend_TransientMemoryBackend();
00203         $backend->setCache($cache);
00204 
00205         $data = 'some data' . microtime();
00206         $backend->set('TransientMemoryBackendTest1', $data);
00207         $backend->set('TransientMemoryBackendTest2', $data);
00208         $backend->set('TransientMemoryBackendTest3', $data);
00209 
00210         $backend->flush();
00211 
00212         $this->assertFalse($backend->has('TransientMemoryBackendTest1'), 'TransientMemoryBackendTest1');
00213         $this->assertFalse($backend->has('TransientMemoryBackendTest2'), 'TransientMemoryBackendTest2');
00214         $this->assertFalse($backend->has('TransientMemoryBackendTest3'), 'TransientMemoryBackendTest3');
00215     }
00216 }
00217 
00218 ?>