4 class LanguageConverterTest
extends MediaWikiLangTestCase
{
5 protected $lang = null;
10 global $wgMemc, $wgRequest, $wgUser, $wgContLang;
13 $wgRequest = new FauxRequest( array() );
14 $wgMemc = new EmptyBagOStuff
;
15 $wgContLang = Language
::factory( 'tg' );
16 $this->lang
= new LanguageToTest();
17 $this->lc
= new TestConverter( $this->lang
, 'tg',
18 array( 'tg', 'tg-latn' ) );
22 global $wgMemc, $wgContLang;
26 $wgContLang = Language
::factory( 'en' );
29 function testGetPreferredVariantDefaults() {
30 $this->assertEquals( 'tg', $this->lc
->getPreferredVariant() );
33 function testGetPreferredVariantHeaders() {
35 $wgRequest->setHeader( 'Accept-Language', 'tg-latn' );
37 $this->assertEquals( 'tg-latn', $this->lc
->getPreferredVariant() );
40 function testGetPreferredVariantHeaderWeight() {
42 $wgRequest->setHeader( 'Accept-Language', 'tg;q=1' );
44 $this->assertEquals( 'tg', $this->lc
->getPreferredVariant() );
47 function testGetPreferredVariantHeaderWeight2() {
49 $wgRequest->setHeader( 'Accept-Language', 'tg-latn;q=1' );
51 $this->assertEquals( 'tg-latn', $this->lc
->getPreferredVariant() );
54 function testGetPreferredVariantHeaderMulti() {
56 $wgRequest->setHeader( 'Accept-Language', 'en, tg-latn;q=1' );
58 $this->assertEquals( 'tg-latn', $this->lc
->getPreferredVariant() );
61 function testGetPreferredVariantUserOption() {
66 $wgUser->mDataLoaded
= true;
67 $wgUser->mOptionsLoaded
= true;
68 $wgUser->setOption( 'variant', 'tg-latn' );
70 $this->assertEquals( 'tg-latn', $this->lc
->getPreferredVariant() );
73 function testGetPreferredVariantHeaderUserVsUrl() {
74 global $wgRequest, $wgUser, $wgContLang;
76 $wgContLang = Language
::factory( 'tg-latn' );
77 $wgRequest->setVal( 'variant', 'tg' );
78 $wgUser = User
::newFromId( "admin" );
80 $wgUser->mDataLoaded
= true;
81 $wgUser->mOptionsLoaded
= true;
82 $wgUser->setOption( 'variant', 'tg-latn' ); // The user's data is ignored
83 // because the variant is set in the URL.
84 $this->assertEquals( 'tg', $this->lc
->getPreferredVariant() );
88 function testGetPreferredVariantDefaultLanguageVariant() {
89 global $wgDefaultLanguageVariant;
91 $wgDefaultLanguageVariant = 'tg-latn';
92 $this->assertEquals( 'tg-latn', $this->lc
->getPreferredVariant() );
95 function testGetPreferredVariantDefaultLanguageVsUrlVariant() {
96 global $wgDefaultLanguageVariant, $wgRequest, $wgContLang;
98 $wgContLang = Language
::factory( 'tg-latn' );
99 $wgDefaultLanguageVariant = 'tg';
100 $wgRequest->setVal( 'variant', null );
101 $this->assertEquals( 'tg', $this->lc
->getPreferredVariant() );
106 * Test converter (from Tajiki to latin orthography)
108 class TestConverter
extends LanguageConverter
{
109 private $table = array(
115 function loadDefaultTables() {
116 $this->mTables
= array(
117 'tg-latn' => new ReplacementArray( $this->table
),
118 'tg' => new ReplacementArray()
124 class LanguageToTest
extends Language
{
125 function __construct() {
126 parent
::__construct();
127 $variants = array( 'tg', 'tg-latn' );
128 $this->mConverter
= new TestConverter( $this, 'tg', $variants );