A super easy PHP Framework for web development!
				https://github.com/exacti/phacil-framework
			
			
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							186 lines
						
					
					
						
							6.4 KiB
						
					
					
				
			
		
		
	
	
							186 lines
						
					
					
						
							6.4 KiB
						
					
					
				<?php
 | 
						|
 | 
						|
declare(strict_types=1);
 | 
						|
use PHPUnit\Framework\TestCase;
 | 
						|
 | 
						|
abstract class CommonBackendTest extends TestCase
 | 
						|
{
 | 
						|
    protected Cm_Cache_Backend_Redis $_instance;
 | 
						|
    protected $_className;
 | 
						|
 | 
						|
    public function __construct($name = null, array $data = array(), $dataName = '')
 | 
						|
    {
 | 
						|
        $this->_className = $name;
 | 
						|
        date_default_timezone_set('UTC');
 | 
						|
        parent::__construct($name, $data, $dataName);
 | 
						|
    }
 | 
						|
 | 
						|
    public function setUp($noTag = false): void
 | 
						|
    {
 | 
						|
        $this->_instance->setDirectives(array('logging' => false));
 | 
						|
        if ($noTag) {
 | 
						|
            $this->_instance->save('bar : data to cache', 'bar');
 | 
						|
            $this->_instance->save('bar2 : data to cache', 'bar2');
 | 
						|
            $this->_instance->save('bar3 : data to cache', 'bar3');
 | 
						|
        } else {
 | 
						|
            $this->_instance->save('bar : data to cache', 'bar', array('tag3', 'tag4'));
 | 
						|
            $this->_instance->save('bar2 : data to cache', 'bar2', array('tag3', 'tag1'));
 | 
						|
            $this->_instance->save('bar3 : data to cache', 'bar3', array('tag2', 'tag3'));
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public function tearDown(): void
 | 
						|
    {
 | 
						|
        $this->_instance->clean();
 | 
						|
    }
 | 
						|
 | 
						|
    public function testConstructorBadOption(): void
 | 
						|
    {
 | 
						|
        $this->expectException('Zend_Cache_Exception');
 | 
						|
        new Cm_Cache_Backend_Redis(array(1 => 'bar'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testSetDirectivesBadArgument(): void
 | 
						|
    {
 | 
						|
        $this->expectException('Zend_Cache_Exception');
 | 
						|
        $this->_instance->setDirectives('foo');
 | 
						|
    }
 | 
						|
 | 
						|
    public function testSetDirectivesBadDirective(): void
 | 
						|
    {
 | 
						|
        // A bad directive (not known by a specific backend) is possible
 | 
						|
        // => so no exception here
 | 
						|
        $this->expectNotToPerformAssertions();
 | 
						|
        $this->_instance->setDirectives(array('foo' => true, 'lifetime' => 3600));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testSetDirectivesBadDirective2(): void
 | 
						|
    {
 | 
						|
        $this->expectException('Zend_Cache_Exception');
 | 
						|
        $this->_instance->setDirectives(array('foo' => true, 12 => 3600));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testSaveCorrectCall(): void
 | 
						|
    {
 | 
						|
        $res = $this->_instance->save('data to cache', 'foo', array('tag1', 'tag2'));
 | 
						|
        $this->assertTrue($res);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testSaveWithNullLifeTime(): void
 | 
						|
    {
 | 
						|
        $this->_instance->setDirectives(array('lifetime' => null));
 | 
						|
        $res = $this->_instance->save('data to cache', 'foo', array('tag1', 'tag2'));
 | 
						|
        $this->assertTrue($res);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testSaveWithSpecificLifeTime(): void
 | 
						|
    {
 | 
						|
        $this->_instance->setDirectives(array('lifetime' => 3600));
 | 
						|
        $res = $this->_instance->save('data to cache', 'foo', array('tag1', 'tag2'), 10);
 | 
						|
        $this->assertTrue($res);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testRemoveCorrectCall(): void
 | 
						|
    {
 | 
						|
        $this->assertTrue($this->_instance->remove('bar'));
 | 
						|
        $this->assertFalse($this->_instance->test('bar'));
 | 
						|
        $this->assertFalse($this->_instance->remove('barbar'));
 | 
						|
        $this->assertFalse($this->_instance->test('barbar'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testTestWithAnExistingCacheId(): void
 | 
						|
    {
 | 
						|
        $res = $this->_instance->test('bar');
 | 
						|
        $this->assertNotEmpty($res);
 | 
						|
        $this->assertGreaterThan(999999, $res);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testTestWithANonExistingCacheId(): void
 | 
						|
    {
 | 
						|
        $this->assertFalse($this->_instance->test('barbar'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testTestWithAnExistingCacheIdAndANullLifeTime(): void
 | 
						|
    {
 | 
						|
        $this->_instance->setDirectives(array('lifetime' => null));
 | 
						|
        $res = $this->_instance->test('bar');
 | 
						|
        $this->assertNotEmpty($res);
 | 
						|
        $this->assertGreaterThan(999999, $res);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testGetWithANonExistingCacheId(): void
 | 
						|
    {
 | 
						|
        $this->assertFalse($this->_instance->load('barbar'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testGetWithAnExistingCacheId(): void
 | 
						|
    {
 | 
						|
        $this->assertEquals('bar : data to cache', $this->_instance->load('bar'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testGetWithAnExistingCacheIdAndUTFCharacters(): void
 | 
						|
    {
 | 
						|
        $data = '"""""' . "'" . '\n' . 'ééééé';
 | 
						|
        $this->_instance->save($data, 'foo');
 | 
						|
        $this->assertEquals($data, $this->_instance->load('foo'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testGetWithAnExpiredCacheId(): void
 | 
						|
    {
 | 
						|
        $this->_instance->___expire('bar');
 | 
						|
        $this->_instance->setDirectives(array('lifetime' => -1));
 | 
						|
        $this->assertFalse($this->_instance->load('bar'));
 | 
						|
        $this->assertEquals('bar : data to cache', $this->_instance->load('bar', true));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testCleanModeAll(): void
 | 
						|
    {
 | 
						|
        $this->assertTrue($this->_instance->clean('all'));
 | 
						|
        $this->assertFalse($this->_instance->test('bar'));
 | 
						|
        $this->assertFalse($this->_instance->test('bar2'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testCleanModeOld(): void
 | 
						|
    {
 | 
						|
        $this->_instance->___expire('bar2');
 | 
						|
        $this->assertTrue($this->_instance->clean('old'));
 | 
						|
        $this->assertTrue($this->_instance->test('bar') > 999999);
 | 
						|
        $this->assertFalse($this->_instance->test('bar2'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testCleanModeMatchingTags(): void
 | 
						|
    {
 | 
						|
        $this->assertTrue($this->_instance->clean('matchingTag', array('tag3')));
 | 
						|
        $this->assertFalse($this->_instance->test('bar'));
 | 
						|
        $this->assertFalse($this->_instance->test('bar2'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testCleanModeMatchingTags2(): void
 | 
						|
    {
 | 
						|
        $this->assertTrue($this->_instance->clean('matchingTag', array('tag3', 'tag4')));
 | 
						|
        $this->assertFalse($this->_instance->test('bar'));
 | 
						|
        $this->assertTrue($this->_instance->test('bar2') > 999999);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testCleanModeNotMatchingTags(): void
 | 
						|
    {
 | 
						|
        $this->assertTrue($this->_instance->clean('notMatchingTag', array('tag3')));
 | 
						|
        $this->assertTrue($this->_instance->test('bar') > 999999);
 | 
						|
        $this->assertTrue($this->_instance->test('bar2') > 999999);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testCleanModeNotMatchingTags2(): void
 | 
						|
    {
 | 
						|
        $this->assertTrue($this->_instance->clean('notMatchingTag', array('tag4')));
 | 
						|
        $this->assertTrue($this->_instance->test('bar') > 999999);
 | 
						|
        $this->assertFalse($this->_instance->test('bar2'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testCleanModeNotMatchingTags3(): void
 | 
						|
    {
 | 
						|
        $this->assertTrue($this->_instance->clean('notMatchingTag', array('tag4', 'tag1')));
 | 
						|
        $this->assertTrue($this->_instance->test('bar') > 999999);
 | 
						|
        $this->assertTrue($this->_instance->test('bar2') > 999999);
 | 
						|
        $this->assertFalse($this->_instance->test('bar3'));
 | 
						|
    }
 | 
						|
}
 | 
						|
 |