Commit 0066c6f0 authored by AW-UC's avatar AW-UC
Browse files

Add PHPunit test for DefaultCollator

This extends Test_NaturalSort to include a basic test for
\OC\NaturalSort_DefaultCollator()
parent d57f5c70
......@@ -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',
)
),
);
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment