wiki.techinc.nl/tests/phpunit/includes/collation/CustomUppercaseCollationTest.php
Brian Wolff 73f5937047 Add collation for Bashkir (ba)
This is based on a numeric uppercase collation. Bashkir characters
will be remapped to the private use area for the purpose of sorting.

Bug: T162823
Change-Id: I65f1af0b57ff6ded7d464e39efd401f178a3519e
2017-05-10 04:17:46 +00:00

57 lines
1.3 KiB
PHP

<?php
class CustomUppercaseCollationTest extends MediaWikiTestCase {
public function setUp() {
$this->collation = new CustomUppercaseCollation( [
'D',
'C',
'B'
], Language::factory( 'en' ) );
parent::setUp();
}
/**
* @dataProvider providerOrder
*/
public function testOrder( $first, $second, $msg ) {
$sortkey1 = $this->collation->getSortKey( $first );
$sortkey2 = $this->collation->getSortKey( $second );
$this->assertTrue( strcmp( $sortkey1, $sortkey2 ) < 0, $msg );
}
public function providerOrder() {
return [
[ 'X', 'Z', 'Maintain order of unrearranged' ],
[ 'D', 'C', 'Actually resorts' ],
[ 'D', 'B', 'resort test 2' ],
[ 'Adobe', 'Abode', 'not first letter' ],
[ '💩 ', 'C', 'Test relocated to end' ],
[ 'c', 'b', 'lowercase' ],
[ 'x', 'z', 'lowercase original' ],
[ 'C50D', 'C100', 'Numbers' ]
];
}
/**
* @dataProvider provideGetFirstLetter
*/
public function testGetFirstLetter( $string, $first ) {
$this->assertSame( $this->collation->getFirstLetter( $string ), $first );
}
public function provideGetFirstLetter() {
return [
[ 'Do', 'D' ],
[ 'do', 'D' ],
[ 'Ao', 'A' ],
[ 'afdsa', 'A' ],
[ "\xF3\xB3\x80\x80Foo", 'D' ],
[ "\xF3\xB3\x80\x81Foo", 'C' ],
[ "\xF3\xB3\x80\x82Foo", 'B' ],
[ "\xF3\xB3\x80\x83Foo", "\xF3\xB3\x80\x83" ],
];
}
}