$this->lang = new LanguageToTest();
$this->lc = new TestConverter(
$this->lang, 'tg',
- [ 'tg', 'tg-latn' ]
+ # Adding 'sgs' as a variant to ensure we handle deprecated codes
+ # adding 'simple' as a variant to ensure we handle non BCP 47 codes
+ [ 'tg', 'tg-latn', 'sgs', 'simple' ]
);
}
$this->assertEquals( 'tg', $this->lc->getPreferredVariant() );
}
+ /**
+ * @covers LanguageConverter::getPreferredVariant
+ * @covers LanguageConverter::getURLVariant
+ */
+ public function testGetPreferredVariantUrl() {
+ global $wgRequest;
+ $wgRequest->setVal( 'variant', 'tg-latn' );
+
+ $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
+ }
+
+ /**
+ * @covers LanguageConverter::getPreferredVariant
+ * @covers LanguageConverter::getURLVariant
+ */
+ public function testGetPreferredVariantUrlDeprecated() {
+ global $wgRequest;
+ $wgRequest->setVal( 'variant', 'bat-smg' );
+
+ $this->assertEquals( 'sgs', $this->lc->getPreferredVariant() );
+ }
+
+ /**
+ * @covers LanguageConverter::getPreferredVariant
+ * @covers LanguageConverter::getURLVariant
+ */
+ public function testGetPreferredVariantUrlBCP47() {
+ global $wgRequest;
+ $wgRequest->setVal( 'variant', 'en-simple' );
+
+ $this->assertEquals( 'simple', $this->lc->getPreferredVariant() );
+ }
+
/**
* @covers LanguageConverter::getPreferredVariant
* @covers LanguageConverter::getHeaderVariant
$this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
}
+ /**
+ * @covers LanguageConverter::getPreferredVariant
+ * @covers LanguageConverter::getHeaderVariant
+ */
+ public function testGetPreferredVariantHeadersBCP47() {
+ global $wgRequest;
+ $wgRequest->setHeader( 'Accept-Language', 'en-simple' );
+
+ $this->assertEquals( 'simple', $this->lc->getPreferredVariant() );
+ }
+
/**
* @covers LanguageConverter::getPreferredVariant
* @covers LanguageConverter::getHeaderVariant
$this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
}
+ /**
+ * @covers LanguageConverter::getPreferredVariant
+ */
+ public function testGetPreferredVariantUserOptionDeprecated() {
+ global $wgUser;
+
+ $wgUser = new User;
+ $wgUser->load(); // from 'defaults'
+ $wgUser->mId = 1;
+ $wgUser->mDataLoaded = true;
+ $wgUser->mOptionsLoaded = true;
+ $wgUser->setOption( 'variant', 'bat-smg' );
+
+ $this->assertEquals( 'sgs', $this->lc->getPreferredVariant() );
+ }
+
+ /**
+ * @covers LanguageConverter::getPreferredVariant
+ */
+ public function testGetPreferredVariantUserOptionBCP47() {
+ global $wgUser;
+
+ $wgUser = new User;
+ $wgUser->load(); // from 'defaults'
+ $wgUser->mId = 1;
+ $wgUser->mDataLoaded = true;
+ $wgUser->mOptionsLoaded = true;
+ $wgUser->setOption( 'variant', 'en-simple' );
+
+ $this->assertEquals( 'simple', $this->lc->getPreferredVariant() );
+ }
+
/**
* @covers LanguageConverter::getPreferredVariant
* @covers LanguageConverter::getUserVariant
$this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
}
+ /**
+ * @covers LanguageConverter::getPreferredVariant
+ * @covers LanguageConverter::getUserVariant
+ */
+ public function testGetPreferredVariantUserOptionForForeignLanguageDeprecated() {
+ global $wgUser;
+
+ $this->setContentLang( 'en' );
+ $wgUser = new User;
+ $wgUser->load(); // from 'defaults'
+ $wgUser->mId = 1;
+ $wgUser->mDataLoaded = true;
+ $wgUser->mOptionsLoaded = true;
+ $wgUser->setOption( 'variant-tg', 'bat-smg' );
+
+ $this->assertEquals( 'sgs', $this->lc->getPreferredVariant() );
+ }
+
+ /**
+ * @covers LanguageConverter::getPreferredVariant
+ * @covers LanguageConverter::getUserVariant
+ */
+ public function testGetPreferredVariantUserOptionForForeignLanguageBCP47() {
+ global $wgUser;
+
+ $this->setContentLang( 'en' );
+ $wgUser = new User;
+ $wgUser->load(); // from 'defaults'
+ $wgUser->mId = 1;
+ $wgUser->mDataLoaded = true;
+ $wgUser->mOptionsLoaded = true;
+ $wgUser->setOption( 'variant-tg', 'en-simple' );
+
+ $this->assertEquals( 'simple', $this->lc->getPreferredVariant() );
+ }
+
/**
* @covers LanguageConverter::getPreferredVariant
* @covers LanguageConverter::getUserVariant
$this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
}
+ /**
+ * @covers LanguageConverter::getPreferredVariant
+ */
+ public function testGetPreferredVariantDefaultLanguageVariantDeprecated() {
+ global $wgDefaultLanguageVariant;
+
+ $wgDefaultLanguageVariant = 'bat-smg';
+ $this->assertEquals( 'sgs', $this->lc->getPreferredVariant() );
+ }
+
+ /**
+ * @covers LanguageConverter::getPreferredVariant
+ */
+ public function testGetPreferredVariantDefaultLanguageVariantBCP47() {
+ global $wgDefaultLanguageVariant;
+
+ $wgDefaultLanguageVariant = 'en-simple';
+ $this->assertEquals( 'simple', $this->lc->getPreferredVariant() );
+ }
+
/**
* @covers LanguageConverter::getPreferredVariant
* @covers LanguageConverter::getURLVariant
$testString .= 'xxx xxx xxx';
}
$testString .= "\n<big id='в'></big>";
- $old = ini_set( 'pcre.backtrack_limit', 200 );
+ $this->setIniSetting( 'pcre.backtrack_limit', 200 );
$result = $this->lc->autoConvert( $testString, 'tg-latn' );
- ini_set( 'pcre.backtrack_limit', $old );
// The в in the id attribute should not get converted to a v
$this->assertFalse(
strpos( $result, 'v' ),
function loadDefaultTables() {
$this->mTables = [
+ 'sgs' => new ReplacementArray(),
+ 'simple' => new ReplacementArray(),
'tg-latn' => new ReplacementArray( $this->table ),
'tg' => new ReplacementArray()
];