diff options
author | Vincent Petry <pvince81@owncloud.com> | 2015-02-25 10:30:14 +0100 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2015-02-25 10:30:14 +0100 |
commit | fb87b746f0255ad7e2e01eaecd1ed6def9bf3c94 (patch) | |
tree | b9653c3ec5ea235e70b33a66b00707db40d322f4 /tests/lib | |
parent | 7e7e0c51fb97312c69ee0cf03e9241f1bf08294e (diff) | |
parent | 0066c6f00136989eadfc7471a4e9a3a3ad73ffc1 (diff) | |
download | nextcloud-server-fb87b746f0255ad7e2e01eaecd1ed6def9bf3c94.tar.gz nextcloud-server-fb87b746f0255ad7e2e01eaecd1ed6def9bf3c94.zip |
Merge pull request #14213 from AW-UC/naturalsort_defaultcollator-patch-file-sorting
Update naturalsort_defaultcollator.php. Fixes #13982
Diffstat (limited to 'tests/lib')
-rw-r--r-- | tests/lib/naturalsort.php | 104 |
1 files changed, 95 insertions, 9 deletions
diff --git a/tests/lib/naturalsort.php b/tests/lib/naturalsort.php index e022a855309..8fcbc6f5fd3 100644 --- a/tests/lib/naturalsort.php +++ b/tests/lib/naturalsort.php @@ -8,27 +8,32 @@ class Test_NaturalSort extends \Test\TestCase { - public function setUp() { - parent::setUp(); - + /** + * @dataProvider naturalSortDataProvider + */ + public function testNaturalSortCompare($array, $sorted) + { if(!class_exists('Collator')) { - $this->markTestSkipped('The intl module is not available, natural sorting will not work as expected.'); + $this->markTestSkipped('The intl module is not available, natural sorting might not work as expected.'); return; } + $comparator = \OC\NaturalSort::getInstance(); + usort($array, array($comparator, 'compare')); + $this->assertEquals($sorted, $array); } /** - * @dataProvider naturalSortDataProvider - */ - public function testNaturalSortCompare($array, $sorted) + * @dataProvider defaultCollatorDataProvider + */ + public function testDefaultCollatorCompare($array, $sorted) { - $comparator = \OC\NaturalSort::getInstance(); + $comparator = new \OC\NaturalSort(new \OC\NaturalSort_DefaultCollator()); usort($array, array($comparator, 'compare')); $this->assertEquals($sorted, $array); } /** - * Data provider for natural sort. + * Data provider for natural sorting with php5-intl's Collator. * Must provide the same result as in core/js/tests/specs/coreSpec.js * @return array test cases */ @@ -181,4 +186,85 @@ class Test_NaturalSort extends \Test\TestCase { ), ); } + + /** + * Data provider for natural sorting with \OC\NaturalSort_DefaultCollator. + * Must provide the same result as in core/js/tests/specs/coreSpec.js + * @return array test cases + */ + public function defaultCollatorDataProvider() + { + return array( + // different casing + array( + // unsorted + array( + 'aaa', + 'bbb', + 'BBB', + 'AAA' + ), + // sorted + array( + 'aaa', + 'AAA', + 'bbb', + 'BBB' + ) + ), + // numbers + array( + // unsorted + array( + '124.txt', + 'abc1', + '123.txt', + 'abc', + 'abc2', + 'def (2).txt', + 'ghi 10.txt', + 'abc12', + 'def.txt', + 'def (1).txt', + 'ghi 2.txt', + 'def (10).txt', + 'abc10', + 'def (12).txt', + 'z', + 'ghi.txt', + 'za', + 'ghi 1.txt', + 'ghi 12.txt', + 'zz', + '15.txt', + '15b.txt', + ), + // sorted + array( + '15.txt', + '15b.txt', + '123.txt', + '124.txt', + 'abc', + 'abc1', + 'abc2', + 'abc10', + 'abc12', + 'def.txt', + 'def (1).txt', + 'def (2).txt', + 'def (10).txt', + 'def (12).txt', + 'ghi.txt', + 'ghi 1.txt', + 'ghi 2.txt', + 'ghi 10.txt', + 'ghi 12.txt', + 'z', + 'za', + 'zz', + ) + ), + ); + } } |