3 class LanguageConverterTest
extends MediaWikiLangTestCase
{
4 protected $lang = null;
7 protected function setUp() {
10 $this->setMwGlobals( array(
11 'wgContLang' => Language
::factory( 'tg' ),
12 'wgDefaultLanguageVariant' => false,
13 'wgMemc' => new EmptyBagOStuff
,
14 'wgRequest' => new FauxRequest( array() ),
18 $this->lang
= new LanguageToTest();
19 $this->lc
= new TestConverter(
21 array( 'tg', 'tg-latn' )
25 protected function tearDown() {
32 function testGetPreferredVariantDefaults() {
33 $this->assertEquals( 'tg', $this->lc
->getPreferredVariant() );
36 function testGetPreferredVariantHeaders() {
38 $wgRequest->setHeader( 'Accept-Language', 'tg-latn' );
40 $this->assertEquals( 'tg-latn', $this->lc
->getPreferredVariant() );
43 function testGetPreferredVariantHeaderWeight() {
45 $wgRequest->setHeader( 'Accept-Language', 'tg;q=1' );
47 $this->assertEquals( 'tg', $this->lc
->getPreferredVariant() );
50 function testGetPreferredVariantHeaderWeight2() {
52 $wgRequest->setHeader( 'Accept-Language', 'tg-latn;q=1' );
54 $this->assertEquals( 'tg-latn', $this->lc
->getPreferredVariant() );
57 function testGetPreferredVariantHeaderMulti() {
59 $wgRequest->setHeader( 'Accept-Language', 'en, tg-latn;q=1' );
61 $this->assertEquals( 'tg-latn', $this->lc
->getPreferredVariant() );
64 function testGetPreferredVariantUserOption() {
68 $wgUser->load(); // from 'defaults'
70 $wgUser->mDataLoaded
= true;
71 $wgUser->mOptionsLoaded
= true;
72 $wgUser->setOption( 'variant', 'tg-latn' );
74 $this->assertEquals( 'tg-latn', $this->lc
->getPreferredVariant() );
77 function testGetPreferredVariantHeaderUserVsUrl() {
78 global $wgContLang, $wgRequest, $wgUser;
80 $wgContLang = Language
::factory( 'tg-latn' );
81 $wgRequest->setVal( 'variant', 'tg' );
82 $wgUser = User
::newFromId( "admin" );
84 $wgUser->mFrom
= 'defaults';
85 $wgUser->mOptionsLoaded
= true;
86 $wgUser->setOption( 'variant', 'tg-latn' ); // The user's data is ignored
87 // because the variant is set in the URL.
88 $this->assertEquals( 'tg', $this->lc
->getPreferredVariant() );
92 function testGetPreferredVariantDefaultLanguageVariant() {
93 global $wgDefaultLanguageVariant;
95 $wgDefaultLanguageVariant = 'tg-latn';
96 $this->assertEquals( 'tg-latn', $this->lc
->getPreferredVariant() );
99 function testGetPreferredVariantDefaultLanguageVsUrlVariant() {
100 global $wgDefaultLanguageVariant, $wgRequest, $wgContLang;
102 $wgContLang = Language
::factory( 'tg-latn' );
103 $wgDefaultLanguageVariant = 'tg';
104 $wgRequest->setVal( 'variant', null );
105 $this->assertEquals( 'tg', $this->lc
->getPreferredVariant() );
110 * Test converter (from Tajiki to latin orthography)
112 class TestConverter
extends LanguageConverter
{
113 private $table = array(
119 function loadDefaultTables() {
120 $this->mTables
= array(
121 'tg-latn' => new ReplacementArray( $this->table
),
122 'tg' => new ReplacementArray()
128 class LanguageToTest
extends Language
{
129 function __construct() {
130 parent
::__construct();
131 $variants = array( 'tg', 'tg-latn' );
132 $this->mConverter
= new TestConverter( $this, 'tg', $variants );