some simple test cases for the new filecache

This commit is contained in:
Robin Appelman 2012-09-22 15:43:10 +02:00
parent 46896be0d4
commit 73eedd8fc8

88
tests/lib/files/cache/cache.php vendored Normal file
View file

@ -0,0 +1,88 @@
<?php
/**
* Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
namespace Test\Files\Cache;
use \OC\Files\Cache\Cache as FileCache;
class Cache extends \UnitTestCase {
/**
* @var \OC\Files\Storage\Temporary $storage;
*/
private $storage;
private function createPath($path) {
return new \OC\Files\File($this->storage, $path);
}
public function testSimple() {
$file1 = $this->createPath('foo');
$file2 = $this->createPath('foo/bar');
$data1 = array('size' => 100, 'mtime' => 50, 'mimetype' => 'foo/folder');
$data2 = array('size' => 1000, 'mtime' => 20, 'mimetype' => 'foo/file');
$this->assertFalse(FileCache::inCache($file1));
$this->assertEqual(FileCache::get($file1), null);
$id1 = FileCache::put($file1, $data1);
$this->assertTrue(FileCache::inCache($file1));
$cacheData1 = FileCache::get($file1);
foreach ($data1 as $key => $value) {
$this->assertEqual($value, $cacheData1[$key]);
}
$this->assertEqual($cacheData1['fileid'], $id1);
$this->assertEqual($id1, FileCache::getId($file1));
$this->assertFalse(FileCache::inCache($file2));
$id2 = FileCache::put($file2, $data2);
$this->assertTrue(FileCache::inCache($file2));
$cacheData2 = FileCache::get($file2);
foreach ($data2 as $key => $value) {
$this->assertEqual($value, $cacheData2[$key]);
}
$this->assertEqual($cacheData1['fileid'], $cacheData2['parent']);
$this->assertEqual($cacheData2['fileid'], $id2);
$this->assertEqual($id2, FileCache::getId($file2));
$this->assertEqual($id1, FileCache::getParentId($file2));
$newSize = 1050;
$newId2 = FileCache::put($file2, array('size' => $newSize));
$cacheData2 = FileCache::get($file2);
$this->assertEqual($newId2, $id2);
$this->assertEqual($cacheData2['size'], $newSize);
$this->assertEqual($cacheData1, FileCache::get($file1));
FileCache::remove($file2);
$this->assertFalse(FileCache::inCache($file2));
$this->assertEqual(FileCache::get($file2), null);
$this->assertTrue(FileCache::inCache($file1));
$this->assertEqual($cacheData1, FileCache::get($id1));
}
public function testPartial() {
$file1 = $this->createPath('foo');
FileCache::put($file1, array('size' => 10));
$this->assertEqual(array('size' => 10), FileCache::get($file1));
FileCache::put($file1, array('mtime' => 15));
$this->assertEqual(array('size' => 10, 'mtime' => 15), FileCache::get($file1));
FileCache::put($file1, array('size' => 12));
$this->assertEqual(array('size' => 12, 'mtime' => 15), FileCache::get($file1));
}
public function tearDown() {
FileCache::removeStorage($this->storage);
}
public function setUp() {
$this->storage = new \OC\Files\Storage\Temporary(array());
}
}