public function testGetArray() { $type = 'type'; $id = 'id'; $value = 'value'; $object1 = new CacheObject($type, $id . '1', $value . '1'); $object2 = new CacheObject($type, $id . '2', $value . '2'); $object3 = new CacheObject($type, $id . '3', $value . '3'); $objects = array($object1, $object2, $object3); $time = time(); $accessed = 0; $this->assertEquals($time, $object1->getCreationDate()); $this->assertEquals($time, $object1->getLastAccessDate()); $this->assertEquals($accessed, $object1->getTimesAccessed()); $this->assertEquals($time, $object2->getCreationDate()); $this->assertEquals($time, $object2->getLastAccessDate()); $this->assertEquals($accessed, $object2->getTimesAccessed()); $this->assertEquals($time, $object3->getCreationDate()); $this->assertEquals($time, $object3->getLastAccessDate()); $this->assertEquals($accessed, $object3->getTimesAccessed()); $IOMock = $this->getMock('zibo\\library\\cache\\io\\CacheIO', array('readFromCache', 'clearCache', 'writeToCache')); $IOMock->expects($this->once())->method('readFromCache')->with($this->equalTo($type))->will($this->returnValue($objects)); sleep(1); $updatedTime = $time + 1; $accessed++; $cache = new ExtendedCache($IOMock); $result = $cache->get($type); $values = array('value1', 'value2', 'value3'); $this->assertEquals($values, $result); $this->assertEquals($time, $object2->getCreationDate()); $this->assertTrue($object2->getLastAccessDate() > $updatedTime - 1); $this->assertTrue($object2->getLastAccessDate() < $updatedTime + 1); $this->assertEquals($accessed, $object2->getTimesAccessed()); }
public function testAccess() { $time = time(); $cache = new CacheObject('type', 'id', ''); sleep(1); $cache->access(); $accessTime = $time + 1; $this->assertEquals(1, $cache->getTimesAccessed()); $this->assertEquals($time, $cache->getCreationDate()); $this->assertEquals($accessTime, $cache->getLastAccessDate()); }
/** * Checks if the provided cache objects needs to be cleared * @param CacheObject $object Cache object to check * @return boolean True if the cache objects needs to be cleared, * false otherwise */ private function needCleanUp(CacheObject $object) { $cleanUpTimes = $this->getCleanUpTimes(); if ($cleanUpTimes && $object->getTimesAccessed() >= $cleanUpTimes) { return true; } $cleanUpAge = $this->getCleanUpAge(); if ($cleanUpAge) { $objectAge = $object->getLastAccessDate() - $object->getCreationDate(); if ($objectAge >= $cleanUpAge) { return true; } } return false; }