diff options
author | Vincent Petry <pvince81@owncloud.com> | 2014-04-11 17:00:39 +0200 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2014-04-28 17:42:04 +0200 |
commit | af22e7ec95cd4def5941145b18188dc7a6124f77 (patch) | |
tree | 0b5ac153425555940a0a390e6986d753c84f8576 /apps | |
parent | c0e5975ab64285613563a7ef34ca7c8717c0f0fe (diff) | |
download | nextcloud-server-af22e7ec95cd4def5941145b18188dc7a6124f77.tar.gz nextcloud-server-af22e7ec95cd4def5941145b18188dc7a6124f77.zip |
Added unit test in files app for sort function in helper class
Added unit test for the Helper class in the files app that tests the
different sort orders.
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files/lib/helper.php | 21 | ||||
-rw-r--r-- | apps/files/tests/helper.php | 98 |
2 files changed, 113 insertions, 6 deletions
diff --git a/apps/files/lib/helper.php b/apps/files/lib/helper.php index 94c7658c9cf..b23c1d1e300 100644 --- a/apps/files/lib/helper.php +++ b/apps/files/lib/helper.php @@ -1,7 +1,16 @@ <?php +/** + * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ namespace OCA\Files; +/** + * Helper class for manipulating file information + */ class Helper { public static function buildFileStorageStatistics($dir) { @@ -57,7 +66,7 @@ class Helper * @param \OCP\Files\FileInfo $b file * @return int -1 if $a must come before $b, 1 otherwise */ - public static function fileCmp($a, $b) { + public static function compareFileNames($a, $b) { $aType = $a->getType(); $bType = $b->getType(); if ($aType === 'dir' and $bType !== 'dir') { @@ -76,7 +85,7 @@ class Helper * @param \OCP\Files\FileInfo $b file * @return int -1 if $a must come before $b, 1 otherwise */ - public static function mtimeCmp($a, $b) { + public static function compareTimestamp($a, $b) { $aTime = $a->getMTime(); $bTime = $b->getMTime(); return $aTime - $bTime; @@ -89,7 +98,7 @@ class Helper * @param \OCP\Files\FileInfo $b file * @return int -1 if $a must come before $b, 1 otherwise */ - public static function sizeCmp($a, $b) { + public static function compareSize($a, $b) { $aSize = $a->getSize(); $bSize = $b->getSize(); return $aSize - $bSize; @@ -165,11 +174,11 @@ class Helper * @return \OCP\Files\FileInfo[] sorted files */ public static function sortFiles($files, $sortAttribute = 'name', $sortDescending = false) { - $sortFunc = 'fileCmp'; + $sortFunc = 'compareFileNames'; if ($sortAttribute === 'mtime') { - $sortFunc = 'mtimeCmp'; + $sortFunc = 'compareTimestamp'; } else if ($sortAttribute === 'size') { - $sortFunc = 'sizeCmp'; + $sortFunc = 'compareSize'; } usort($files, array('\OCA\Files\Helper', $sortFunc)); if ($sortDescending) { diff --git a/apps/files/tests/helper.php b/apps/files/tests/helper.php new file mode 100644 index 00000000000..9b3603cd563 --- /dev/null +++ b/apps/files/tests/helper.php @@ -0,0 +1,98 @@ +<?php +/** + * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +require_once __DIR__ . '/../lib/helper.php'; + +use OCA\Files; + +/** + * Class Test_Files_Helper + */ +class Test_Files_Helper extends \PHPUnit_Framework_TestCase { + + private function makeFileInfo($name, $size, $mtime, $isDir = false) { + return new \OC\Files\FileInfo( + '/', + null, + '/', + array( + 'name' => $name, + 'size' => $size, + 'mtime' => $mtime, + 'type' => $isDir ? 'dir' : 'file', + 'mimetype' => $isDir ? 'httpd/unix-directory' : 'application/octet-stream' + ) + ); + } + + /** + * Returns a file list for testing + */ + private function getTestFileList() { + return array( + self::makeFileInfo('a.txt', 4, 1000), + self::makeFileInfo('q.txt', 5, 150), + self::makeFileInfo('subdir2', 87, 128, true), + self::makeFileInfo('b.txt', 166, 800), + self::makeFileInfo('o.txt', 12, 100), + self::makeFileInfo('subdir', 88, 125, true), + ); + } + + function sortDataProvider() { + return array( + array( + 'name', + false, + array('subdir', 'subdir2', 'a.txt', 'b.txt', 'o.txt', 'q.txt'), + ), + array( + 'name', + true, + array('q.txt', 'o.txt', 'b.txt', 'a.txt', 'subdir2', 'subdir'), + ), + array( + 'size', + false, + array('a.txt', 'q.txt', 'o.txt', 'subdir2', 'subdir', 'b.txt'), + ), + array( + 'size', + true, + array('b.txt', 'subdir', 'subdir2', 'o.txt', 'q.txt', 'a.txt'), + ), + array( + 'mtime', + false, + array('o.txt', 'subdir', 'subdir2', 'q.txt', 'b.txt', 'a.txt'), + ), + array( + 'mtime', + true, + array('a.txt', 'b.txt', 'q.txt', 'subdir2', 'subdir', 'o.txt'), + ), + ); + } + + /** + * @dataProvider sortDataProvider + */ + public function testSortByName($sort, $sortDescending, $expectedOrder) { + $files = self::getTestFileList(); + $files = \OCA\Files\Helper::sortFiles($files, $sort, $sortDescending); + $fileNames = array(); + foreach ($files as $fileInfo) { + $fileNames[] = $fileInfo->getName(); + } + $this->assertEquals( + $expectedOrder, + $fileNames + ); + } + +} |