]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add PHPunit test for DefaultCollator
authorAW-UC <git@a-wesemann.de>
Tue, 24 Feb 2015 22:51:08 +0000 (23:51 +0100)
committerAW-UC <git@a-wesemann.de>
Tue, 24 Feb 2015 22:51:08 +0000 (23:51 +0100)
This extends Test_NaturalSort to include a basic test for
\OC\NaturalSort_DefaultCollator()

tests/lib/naturalsort.php

index e022a85530918078264a7dc4fed476593edce3d0..8fcbc6f5fd3e4d220e50b601bfa017f1f6d6530c 100644 (file)
@@ -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',
+                               )
+                       ),
+               );
+       }
 }