1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <?php
- namespace Elgg\Cache;
- use PHPUnit_Framework_TestCase as TestCase;
- class LRUCacheTest extends TestCase {
- public function testOldestItemsGetDroppedWhenUnused() {
- $pool = new LRUCache(4);
- // foo1 gets dropped
- $pool->set('foo1', 10);
- $pool->set('foo2', 20);
- $pool['foo3'] = 30;
- $pool['foo4'] = 40;
- $pool->set('foo5', 50);
- $this->assertEquals(null, $pool->get('foo1'));
- $this->assertFalse(isset($pool['foo1']));
- $this->assertEquals(20, $pool->get('foo2'));
- $this->assertEquals(30, $pool->get('foo3'));
- $this->assertEquals(40, $pool['foo4']);
- $this->assertEquals(50, $pool['foo5']);
- $this->assertEquals(4, $pool->size());
- // remove item using unset
- unset($pool['foo4']);
- $this->assertFalse(isset($pool['foo4']));
- $this->assertEquals(null, $pool['foo4']);
- $this->assertEquals(3, $pool->size());
- // remove item using method
- $this->assertEquals(20, $pool->remove('foo2'));
- $this->assertEquals(2, $pool->size());
- $this->assertEquals(null, $pool->remove('foo2'));
- // clear the cache
- $pool->clear();
- $this->assertEquals(null, $pool['foo2']);
- $this->assertEquals(0, $pool->size());
- }
- public function testLeastUsedItemGetsDropped() {
- $pool = new LRUCache(2);
- $pool->set('foo1', 10);
- $pool->set('foo2', 25);
- $this->assertEquals(25, $pool->get('foo2'));
- $pool->set('foo2', 20);
- $this->assertEquals(20, $pool->get('foo2'));
- $this->assertEquals(10, $pool->get('foo1'));
- // foo2 was least recently read
- $pool->set('foo3', 30);
- $this->assertEquals(null, $pool->get('foo2'));
- $this->assertFalse(isset($pool['foo2']));
- $this->assertEquals(10, $pool->get('foo1'));
- $this->assertEquals(30, $pool->get('foo3'));
- $this->assertEquals(2, $pool->size());
- }
- public function testThrowExceptionOnNegativeSize() {
- $this->setExpectedException('\InvalidArgumentException');
- $pool = new LRUCache(-2);
- }
- public function testThrowExceptionOnNonIntSize() {
- $this->setExpectedException('\InvalidArgumentException');
- $pool = new LRUCache("abc");
- }
- }
|