2023-02-11 15:24:36 +01:00

94 lines
2.3 KiB
PHP

<?php
/**
* This file is part of the Cache package.
*
* Copyright (c) Daniel González
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* @author Daniel González <daniel@desarrolla2.com>
*/
namespace Desarrolla2\Test\Cache;
use Cache\IntegrationTests\SimpleCacheTest;
use Desarrolla2\Cache\Exception\InvalidArgumentException;
/**
* AbstractCacheTest
*/
abstract class AbstractCacheTest extends SimpleCacheTest
{
/**
* @return array
*/
public function dataProviderForOptions()
{
return [
['ttl', 100],
['prefix', 'test']
];
}
/**
* @dataProvider dataProviderForOptions
*
* @param string $key
* @param mixed $value
*/
public function testWithOption($key, $value)
{
$cache = $this->cache->withOption($key, $value);
$this->assertEquals($value, $cache->getOption($key));
// Check immutability
$this->assertNotSame($this->cache, $cache);
$this->assertNotEquals($value, $this->cache->getOption($key));
}
public function testWithOptions()
{
$data = $this->dataProviderForOptions();
$options = array_combine(array_column($data, 0), array_column($data, 1));
$cache = $this->cache->withOptions($options);
foreach ($options as $key => $value) {
$this->assertEquals($value, $cache->getOption($key));
}
// Check immutability
$this->assertNotSame($this->cache, $cache);
foreach ($options as $key => $value) {
$this->assertNotEquals($value, $this->cache->getOption($key));
}
}
/**
* @return array
*/
public function dataProviderForOptionsException()
{
return [
['ttl', 0, InvalidArgumentException::class],
['foo', 'bar', InvalidArgumentException::class]
];
}
/**
* @dataProvider dataProviderForOptionsException
*
* @param string $key
* @param mixed $value
* @param string $expectedException
*/
public function testWithOptionException($key, $value, $expectedException)
{
$this->expectException($expectedException);
$this->createSimpleCache()->withOption($key, $value);
}
}