init
This commit is contained in:
322
vendor/react/cache/tests/ArrayCacheTest.php
vendored
Executable file
322
vendor/react/cache/tests/ArrayCacheTest.php
vendored
Executable file
@@ -0,0 +1,322 @@
|
||||
<?php
|
||||
|
||||
namespace React\Tests\Cache;
|
||||
|
||||
use React\Cache\ArrayCache;
|
||||
|
||||
class ArrayCacheTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @var ArrayCache
|
||||
*/
|
||||
private $cache;
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
$this->cache = new ArrayCache();
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function getShouldResolvePromiseWithNullForNonExistentKey()
|
||||
{
|
||||
$success = $this->createCallableMock();
|
||||
$success
|
||||
->expects($this->once())
|
||||
->method('__invoke')
|
||||
->with(null);
|
||||
|
||||
$this->cache
|
||||
->get('foo')
|
||||
->then(
|
||||
$success,
|
||||
$this->expectCallableNever()
|
||||
);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function setShouldSetKey()
|
||||
{
|
||||
$setPromise = $this->cache
|
||||
->set('foo', 'bar');
|
||||
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->once())
|
||||
->method('__invoke')
|
||||
->with($this->identicalTo(true));
|
||||
|
||||
$setPromise->then($mock);
|
||||
|
||||
$success = $this->createCallableMock();
|
||||
$success
|
||||
->expects($this->once())
|
||||
->method('__invoke')
|
||||
->with('bar');
|
||||
|
||||
$this->cache
|
||||
->get('foo')
|
||||
->then($success);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function deleteShouldDeleteKey()
|
||||
{
|
||||
$this->cache
|
||||
->set('foo', 'bar');
|
||||
|
||||
$deletePromise = $this->cache
|
||||
->delete('foo');
|
||||
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->once())
|
||||
->method('__invoke')
|
||||
->with($this->identicalTo(true));
|
||||
|
||||
$deletePromise->then($mock);
|
||||
|
||||
$this->cache
|
||||
->get('foo')
|
||||
->then(
|
||||
$this->expectCallableOnce(),
|
||||
$this->expectCallableNever()
|
||||
);
|
||||
}
|
||||
|
||||
public function testGetWillResolveWithNullForCacheMiss()
|
||||
{
|
||||
$this->cache = new ArrayCache();
|
||||
|
||||
$this->cache->get('foo')->then($this->expectCallableOnceWith(null));
|
||||
}
|
||||
|
||||
public function testGetWillResolveWithDefaultValueForCacheMiss()
|
||||
{
|
||||
$this->cache = new ArrayCache();
|
||||
|
||||
$this->cache->get('foo', 'bar')->then($this->expectCallableOnceWith('bar'));
|
||||
}
|
||||
|
||||
public function testGetWillResolveWithExplicitNullValueForCacheHit()
|
||||
{
|
||||
$this->cache = new ArrayCache();
|
||||
|
||||
$this->cache->set('foo', null);
|
||||
$this->cache->get('foo', 'bar')->then($this->expectCallableOnceWith(null));
|
||||
}
|
||||
|
||||
public function testLimitSizeToZeroDoesNotStoreAnyData()
|
||||
{
|
||||
$this->cache = new ArrayCache(0);
|
||||
|
||||
$this->cache->set('foo', 'bar');
|
||||
|
||||
$this->cache->get('foo')->then($this->expectCallableOnceWith(null));
|
||||
}
|
||||
|
||||
public function testLimitSizeToOneWillOnlyReturnLastWrite()
|
||||
{
|
||||
$this->cache = new ArrayCache(1);
|
||||
|
||||
$this->cache->set('foo', '1');
|
||||
$this->cache->set('bar', '2');
|
||||
|
||||
$this->cache->get('foo')->then($this->expectCallableOnceWith(null));
|
||||
$this->cache->get('bar')->then($this->expectCallableOnceWith('2'));
|
||||
}
|
||||
|
||||
public function testOverwriteWithLimitedSizeWillUpdateLRUInfo()
|
||||
{
|
||||
$this->cache = new ArrayCache(2);
|
||||
|
||||
$this->cache->set('foo', '1');
|
||||
$this->cache->set('bar', '2');
|
||||
$this->cache->set('foo', '3');
|
||||
$this->cache->set('baz', '4');
|
||||
|
||||
$this->cache->get('foo')->then($this->expectCallableOnceWith('3'));
|
||||
$this->cache->get('bar')->then($this->expectCallableOnceWith(null));
|
||||
$this->cache->get('baz')->then($this->expectCallableOnceWith('4'));
|
||||
}
|
||||
|
||||
public function testGetWithLimitedSizeWillUpdateLRUInfo()
|
||||
{
|
||||
$this->cache = new ArrayCache(2);
|
||||
|
||||
$this->cache->set('foo', '1');
|
||||
$this->cache->set('bar', '2');
|
||||
$this->cache->get('foo')->then($this->expectCallableOnceWith('1'));
|
||||
$this->cache->set('baz', '3');
|
||||
|
||||
$this->cache->get('foo')->then($this->expectCallableOnceWith('1'));
|
||||
$this->cache->get('bar')->then($this->expectCallableOnceWith(null));
|
||||
$this->cache->get('baz')->then($this->expectCallableOnceWith('3'));
|
||||
}
|
||||
|
||||
public function testGetWillResolveWithValueIfItemIsNotExpired()
|
||||
{
|
||||
$this->cache = new ArrayCache();
|
||||
|
||||
$this->cache->set('foo', '1', 10);
|
||||
|
||||
$this->cache->get('foo')->then($this->expectCallableOnceWith('1'));
|
||||
}
|
||||
|
||||
public function testGetWillResolveWithDefaultIfItemIsExpired()
|
||||
{
|
||||
$this->cache = new ArrayCache();
|
||||
|
||||
$this->cache->set('foo', '1', 0);
|
||||
|
||||
$this->cache->get('foo')->then($this->expectCallableOnceWith(null));
|
||||
}
|
||||
|
||||
public function testSetWillOverwritOldestItemIfNoEntryIsExpired()
|
||||
{
|
||||
$this->cache = new ArrayCache(2);
|
||||
|
||||
$this->cache->set('foo', '1', 10);
|
||||
$this->cache->set('bar', '2', 20);
|
||||
$this->cache->set('baz', '3', 30);
|
||||
|
||||
$this->cache->get('foo')->then($this->expectCallableOnceWith(null));
|
||||
}
|
||||
|
||||
public function testSetWillOverwriteExpiredItemIfAnyEntryIsExpired()
|
||||
{
|
||||
$this->cache = new ArrayCache(2);
|
||||
|
||||
$this->cache->set('foo', '1', 10);
|
||||
$this->cache->set('bar', '2', 0);
|
||||
$this->cache->set('baz', '3', 30);
|
||||
|
||||
$this->cache->get('foo')->then($this->expectCallableOnceWith('1'));
|
||||
$this->cache->get('bar')->then($this->expectCallableOnceWith(null));
|
||||
}
|
||||
|
||||
public function testGetMultiple()
|
||||
{
|
||||
$this->cache = new ArrayCache();
|
||||
$this->cache->set('foo', '1');
|
||||
|
||||
$this->cache
|
||||
->getMultiple(array('foo', 'bar'), 'baz')
|
||||
->then($this->expectCallableOnceWith(array('foo' => '1', 'bar' => 'baz')));
|
||||
}
|
||||
|
||||
public function testSetMultiple()
|
||||
{
|
||||
$this->cache = new ArrayCache();
|
||||
$this->cache->setMultiple(array('foo' => '1', 'bar' => '2'), 10);
|
||||
|
||||
$this->cache
|
||||
->getMultiple(array('foo', 'bar'))
|
||||
->then($this->expectCallableOnceWith(array('foo' => '1', 'bar' => '2')));
|
||||
}
|
||||
|
||||
public function testDeleteMultiple()
|
||||
{
|
||||
$this->cache = new ArrayCache();
|
||||
$this->cache->setMultiple(array('foo' => 1, 'bar' => 2, 'baz' => 3));
|
||||
|
||||
$this->cache
|
||||
->deleteMultiple(array('foo', 'baz'))
|
||||
->then($this->expectCallableOnceWith(true));
|
||||
|
||||
$this->cache
|
||||
->has('foo')
|
||||
->then($this->expectCallableOnceWith(false));
|
||||
|
||||
$this->cache
|
||||
->has('bar')
|
||||
->then($this->expectCallableOnceWith(true));
|
||||
|
||||
$this->cache
|
||||
->has('baz')
|
||||
->then($this->expectCallableOnceWith(false));
|
||||
}
|
||||
|
||||
public function testClearShouldClearCache()
|
||||
{
|
||||
$this->cache = new ArrayCache();
|
||||
$this->cache->setMultiple(array('foo' => 1, 'bar' => 2, 'baz' => 3));
|
||||
|
||||
$this->cache->clear();
|
||||
|
||||
$this->cache
|
||||
->has('foo')
|
||||
->then($this->expectCallableOnceWith(false));
|
||||
|
||||
$this->cache
|
||||
->has('bar')
|
||||
->then($this->expectCallableOnceWith(false));
|
||||
|
||||
$this->cache
|
||||
->has('baz')
|
||||
->then($this->expectCallableOnceWith(false));
|
||||
}
|
||||
|
||||
public function hasShouldResolvePromiseForExistingKey()
|
||||
{
|
||||
$this->cache = new ArrayCache();
|
||||
$this->cache->set('foo', 'bar');
|
||||
|
||||
$this->cache
|
||||
->has('foo')
|
||||
->then($this->expectCallableOnceWith(true));
|
||||
}
|
||||
|
||||
public function hasShouldResolvePromiseForNonExistentKey()
|
||||
{
|
||||
$this->cache = new ArrayCache();
|
||||
$this->cache->set('foo', 'bar');
|
||||
|
||||
$this->cache
|
||||
->has('foo')
|
||||
->then($this->expectCallableOnceWith(false));
|
||||
}
|
||||
|
||||
public function testHasWillResolveIfItemIsNotExpired()
|
||||
{
|
||||
$this->cache = new ArrayCache();
|
||||
$this->cache->set('foo', '1', 10);
|
||||
|
||||
$this->cache
|
||||
->has('foo')
|
||||
->then($this->expectCallableOnceWith(true));
|
||||
}
|
||||
|
||||
public function testHasWillResolveIfItemIsExpired()
|
||||
{
|
||||
$this->cache = new ArrayCache();
|
||||
$this->cache->set('foo', '1', 0);
|
||||
|
||||
$this->cache
|
||||
->has('foo')
|
||||
->then($this->expectCallableOnceWith(false));
|
||||
}
|
||||
|
||||
public function testHasWillResolveForExplicitNullValue()
|
||||
{
|
||||
$this->cache = new ArrayCache();
|
||||
$this->cache->set('foo', null);
|
||||
|
||||
$this->cache
|
||||
->has('foo')
|
||||
->then($this->expectCallableOnceWith(true));
|
||||
}
|
||||
|
||||
public function testHasWithLimitedSizeWillUpdateLRUInfo()
|
||||
{
|
||||
$this->cache = new ArrayCache(2);
|
||||
|
||||
$this->cache->set('foo', 1);
|
||||
$this->cache->set('bar', 2);
|
||||
$this->cache->has('foo')->then($this->expectCallableOnceWith(true));
|
||||
$this->cache->set('baz', 3);
|
||||
|
||||
$this->cache->has('foo')->then($this->expectCallableOnceWith(1));
|
||||
$this->cache->has('bar')->then($this->expectCallableOnceWith(false));
|
||||
$this->cache->has('baz')->then($this->expectCallableOnceWith(3));
|
||||
}
|
||||
}
|
||||
10
vendor/react/cache/tests/CallableStub.php
vendored
Executable file
10
vendor/react/cache/tests/CallableStub.php
vendored
Executable file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace React\Tests\Cache;
|
||||
|
||||
class CallableStub
|
||||
{
|
||||
public function __invoke()
|
||||
{
|
||||
}
|
||||
}
|
||||
54
vendor/react/cache/tests/TestCase.php
vendored
Executable file
54
vendor/react/cache/tests/TestCase.php
vendored
Executable file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace React\Tests\Cache;
|
||||
|
||||
use PHPUnit\Framework\TestCase as BaseTestCase;
|
||||
|
||||
class TestCase extends BaseTestCase
|
||||
{
|
||||
protected function expectCallableExactly($amount)
|
||||
{
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->exactly($amount))
|
||||
->method('__invoke');
|
||||
|
||||
return $mock;
|
||||
}
|
||||
|
||||
protected function expectCallableOnce()
|
||||
{
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->once())
|
||||
->method('__invoke');
|
||||
|
||||
return $mock;
|
||||
}
|
||||
|
||||
protected function expectCallableOnceWith($param)
|
||||
{
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->once())
|
||||
->method('__invoke')
|
||||
->with($param);
|
||||
|
||||
return $mock;
|
||||
}
|
||||
|
||||
protected function expectCallableNever()
|
||||
{
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->never())
|
||||
->method('__invoke');
|
||||
|
||||
return $mock;
|
||||
}
|
||||
|
||||
protected function createCallableMock()
|
||||
{
|
||||
return $this->getMockBuilder('React\Tests\Cache\CallableStub')->getMock();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user