summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2014-04-11 17:00:39 +0200
committerVincent Petry <pvince81@owncloud.com>2014-04-28 17:42:04 +0200
commitaf22e7ec95cd4def5941145b18188dc7a6124f77 (patch)
tree0b5ac153425555940a0a390e6986d753c84f8576 /apps
parentc0e5975ab64285613563a7ef34ca7c8717c0f0fe (diff)
downloadnextcloud-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.php21
-rw-r--r--apps/files/tests/helper.php98
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
+ );
+ }
+
+}