summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/LocalizerTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/LocalizerTest.php')
-rw-r--r--www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/LocalizerTest.php372
1 files changed, 372 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/LocalizerTest.php b/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/LocalizerTest.php
new file mode 100644
index 00000000..9b0b7e16
--- /dev/null
+++ b/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/LocalizerTest.php
@@ -0,0 +1,372 @@
+<?php
+
+namespace SMW\Tests;
+
+use Language;
+use SMW\Localizer;
+
+/**
+ * @covers \SMW\Localizer
+ * @group semantic-mediawiki
+ *
+ * @license GNU GPL v2+
+ * @since 2.1
+ *
+ * @author mwjames
+ */
+class LocalizerTest extends \PHPUnit_Framework_TestCase {
+
+ protected function tearDown() {
+ Localizer::clear();
+ }
+
+ public function testCanConstruct() {
+
+ $language = $this->getMockBuilder( '\Language' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $this->assertInstanceOf(
+ '\SMW\Localizer',
+ new Localizer( $language )
+ );
+
+ $this->assertInstanceOf(
+ '\SMW\Localizer',
+ Localizer::getInstance()
+ );
+ }
+
+ public function testGetContentLanguage() {
+
+ $language = $this->getMockBuilder( '\Language' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $instance = new Localizer( $language );
+
+ $this->assertSame(
+ $language,
+ $instance->getContentLanguage()
+ );
+
+ $this->assertSame(
+ $GLOBALS['wgContLang'],
+ Localizer::getInstance()->getContentLanguage()
+ );
+ }
+
+ public function testNamespaceTextById() {
+
+ $instance = new Localizer( Language::factory( 'en') );
+
+ $this->assertEquals(
+ 'Property',
+ $instance->getNamespaceTextById( SMW_NS_PROPERTY )
+ );
+ }
+
+ public function testNamespaceIndexByName() {
+
+ $instance = new Localizer( Language::factory( 'en') );
+
+ $this->assertEquals(
+ SMW_NS_PROPERTY,
+ $instance->getNamespaceIndexByName( 'property' )
+ );
+ }
+
+ public function testSupportedLanguageForLowerCaseLetter() {
+
+ if ( version_compare( $GLOBALS['wgVersion'], '1.20', '<' ) ) {
+ $this->markTestSkipped( 'Skipping because `Language::isKnownLanguageTag` is not supported on 1.19' );
+ }
+
+ $this->assertTrue(
+ Localizer::isKnownLanguageTag( 'en' )
+ );
+ }
+
+ public function testSupportedLanguageForUpperCaseLetter() {
+
+ if ( version_compare( $GLOBALS['wgVersion'], '1.20', '<' ) ) {
+ $this->markTestSkipped( 'Skipping because `Language::isKnownLanguageTag` is not supported on 1.19' );
+ }
+
+ $this->assertTrue(
+ Localizer::isKnownLanguageTag( 'ZH-HANS' )
+ );
+ }
+
+ public function testAsBCP47FormattedLanguageCode() {
+ $this->assertEquals(
+ 'zh-Hans',
+ Localizer::asBCP47FormattedLanguageCode( 'zh-hans' )
+ );
+ }
+
+ public function testCanGetAnnotatedLanguageCodeOnValidMarkedValue() {
+
+ $value = 'Foo@en';
+
+ $this->assertEquals(
+ 'en',
+ Localizer::getAnnotatedLanguageCodeFrom( $value )
+ );
+
+ $this->assertEquals(
+ 'Foo',
+ $value
+ );
+ }
+
+ public function testCanGetAnnotatedLanguageCodeOnDoubledMarkedValue() {
+
+ $value = 'Foo@@en';
+
+ $this->assertEquals(
+ 'en',
+ Localizer::getAnnotatedLanguageCodeFrom( $value )
+ );
+
+ $this->assertEquals(
+ 'Foo@',
+ $value
+ );
+ }
+
+ public function testCanGetAnnotatedLanguageCodeOnValueWithDash() {
+
+ $value = 'Foo@zh-Hans';
+
+ $this->assertEquals(
+ 'zh-Hans',
+ Localizer::getAnnotatedLanguageCodeFrom( $value )
+ );
+
+ $this->assertEquals(
+ 'Foo',
+ $value
+ );
+ }
+
+ public function testCanNotGetAnnotatedLanguageCodeThatContainsInvalidCharacter() {
+
+ $value = 'Foo@en#bar';
+
+ $this->assertFalse(
+ Localizer::getAnnotatedLanguageCodeFrom( $value )
+ );
+ }
+
+ public function testCanNotGetLanguageCodeOnNonMarkedValue() {
+
+ $value = 'Fooen';
+
+ $this->assertFalse(
+ Localizer::getLanguageCodeFrom( $value )
+ );
+
+ $this->assertEquals(
+ 'Fooen',
+ $value
+ );
+ }
+
+ public function testCanNotGetLanguageCodeOnMissingLanguageCode() {
+
+ $value = 'Foo@';
+
+ $this->assertFalse(
+ Localizer::getLanguageCodeFrom( $value )
+ );
+
+ $this->assertEquals(
+ 'Foo@',
+ $value
+ );
+ }
+
+ public function testGetLanguageCodeByRule_OnTitleExpectedToPageLanguage() {
+
+ $contentLanguage = $this->getMockBuilder( '\Language' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $instance = new Localizer( $contentLanguage );
+
+ $pageLanguage = $this->getMockBuilder( '\Language' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $title = $this->getMockBuilder( '\Title' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $title->expects( $this->once() )
+ ->method( 'getPageLanguage' )
+ ->will( $this->returnValue( $pageLanguage ) );
+
+ $this->assertEquals(
+ $pageLanguage,
+ $instance->getPreferredContentLanguage( $title )
+ );
+ }
+
+ public function testGetLanguageCodeByRule_OnNotProvidedTitlePageLanguageExpectedToReturnUserLanguage() {
+
+ $contentLanguage = $this->getMockBuilder( '\Language' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $instance = new Localizer( $contentLanguage );
+
+ $this->assertEquals(
+ $instance->getContentLanguage(),
+ $instance->getPreferredContentLanguage( null )
+ );
+ }
+
+ public function testLang() {
+
+ $instance = Localizer::getInstance();
+
+ $this->assertInstanceOf(
+ '\SMW\Lang\Lang',
+ $instance->getLang()
+ );
+
+ $this->assertInstanceOf(
+ '\SMW\Lang\Lang',
+ $instance->getLang( 'en' )
+ );
+
+ $language = $this->getMockBuilder( '\Language' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $language->expects( $this->once() )
+ ->method( 'getCode' )
+ ->will( $this->returnValue( 'en' ) );
+
+ $this->assertInstanceOf(
+ '\SMW\Lang\Lang',
+ $instance->getLang( $language )
+ );
+ }
+
+ public function testConvertDoubleWidth() {
+
+ $this->assertEquals(
+ '2000',
+ Localizer::convertDoubleWidth( '2000' )
+ );
+
+ $this->assertEquals(
+ 'aBc',
+ Localizer::getInstance()->convertDoubleWidth( 'aBc' )
+ );
+ }
+
+ public function testCreateTextWithNamespacePrefix() {
+
+ $instance = new Localizer( Language::factory( 'en') );
+
+ $this->assertEquals(
+ 'Property:foo bar',
+ $instance->createTextWithNamespacePrefix( SMW_NS_PROPERTY, 'foo bar' )
+ );
+ }
+
+ public function testGetCanonicalizedUrlByNamespace() {
+
+ $language = $this->getMockBuilder( '\Language' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $language->expects( $this->exactly( 3 ) )
+ ->method( 'getNsText' )
+ ->will( $this->returnValue( 'Spécial' ) );
+
+ $instance = new Localizer( $language );
+
+ $this->assertEquals(
+ 'http://example.org/wiki/Special:URIResolver/Property-3AHas_query',
+ $instance->getCanonicalizedUrlByNamespace( NS_SPECIAL, 'http://example.org/wiki/Sp%C3%A9cial:URIResolver/Property-3AHas_query' )
+ );
+
+ $this->assertEquals(
+ 'http://example.org/wiki/Special:URIResolver/Property-3AHas_query',
+ $instance->getCanonicalizedUrlByNamespace( NS_SPECIAL, 'http://example.org/wiki/Spécial:URIResolver/Property-3AHas_query' )
+ );
+
+ $this->assertEquals(
+ 'http://example.org/index.php?title=Special:URIResolver&Property-3AHas_query',
+ $instance->getCanonicalizedUrlByNamespace( NS_SPECIAL, 'http://example.org/index.php?title=Spécial:URIResolver&Property-3AHas_query' )
+ );
+ }
+
+ public function testGetCanonicalName() {
+
+ $language = $this->getMockBuilder( '\Language' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $instance = new Localizer( $language );
+
+ $this->assertEquals(
+ 'Property',
+ $instance->getCanonicalNamespaceTextById( SMW_NS_PROPERTY )
+ );
+
+ $this->assertEquals(
+ 'Help',
+ $instance->getCanonicalNamespaceTextById( NS_HELP )
+ );
+ }
+
+ public function testHasLocalTimeOffsetPreference() {
+
+ $user = $this->getMockBuilder( '\User' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $user->expects( $this->once() )
+ ->method( 'getOption' )
+ ->with( $this->equalTo( 'smw-prefs-general-options-time-correction' ) )
+ ->will( $this->returnValue( true ) );
+
+ $language = $this->getMockBuilder( '\Language' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $instance = new Localizer( $language );
+
+ $this->assertTrue(
+ $instance->hasLocalTimeOffsetPreference( $user )
+ );
+ }
+
+ public function testGetLocalTime() {
+
+ $dataTime = $this->getMockBuilder( '\DateTime' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $user = $this->getMockBuilder( '\User' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $language = $this->getMockBuilder( '\Language' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $instance = new Localizer( $language );
+
+ $this->assertInstanceOf(
+ 'DateTime',
+ $instance->getLocalTime( $dataTime, $user )
+ );
+ }
+
+}