MediaWiki
REL1_21
|
00001 <?php 00002 00003 class LanguageConverterTest extends MediaWikiLangTestCase { 00004 protected $lang = null; 00005 protected $lc = null; 00006 00007 protected function setUp() { 00008 parent::setUp(); 00009 00010 $this->setMwGlobals( array( 00011 'wgContLang' => Language::factory( 'tg' ), 00012 'wgLanguageCode' => 'tg', 00013 'wgDefaultLanguageVariant' => false, 00014 'wgMemc' => new EmptyBagOStuff, 00015 'wgRequest' => new FauxRequest( array() ), 00016 'wgUser' => new User, 00017 ) ); 00018 00019 $this->lang = new LanguageToTest(); 00020 $this->lc = new TestConverter( 00021 $this->lang, 'tg', 00022 array( 'tg', 'tg-latn' ) 00023 ); 00024 } 00025 00026 protected function tearDown() { 00027 unset( $this->lc ); 00028 unset( $this->lang ); 00029 00030 parent::tearDown(); 00031 } 00032 00033 function testGetPreferredVariantDefaults() { 00034 $this->assertEquals( 'tg', $this->lc->getPreferredVariant() ); 00035 } 00036 00037 function testGetPreferredVariantHeaders() { 00038 global $wgRequest; 00039 $wgRequest->setHeader( 'Accept-Language', 'tg-latn' ); 00040 00041 $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); 00042 } 00043 00044 function testGetPreferredVariantHeaderWeight() { 00045 global $wgRequest; 00046 $wgRequest->setHeader( 'Accept-Language', 'tg;q=1' ); 00047 00048 $this->assertEquals( 'tg', $this->lc->getPreferredVariant() ); 00049 } 00050 00051 function testGetPreferredVariantHeaderWeight2() { 00052 global $wgRequest; 00053 $wgRequest->setHeader( 'Accept-Language', 'tg-latn;q=1' ); 00054 00055 $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); 00056 } 00057 00058 function testGetPreferredVariantHeaderMulti() { 00059 global $wgRequest; 00060 $wgRequest->setHeader( 'Accept-Language', 'en, tg-latn;q=1' ); 00061 00062 $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); 00063 } 00064 00065 function testGetPreferredVariantUserOption() { 00066 global $wgUser; 00067 00068 $wgUser = new User; 00069 $wgUser->load(); // from 'defaults' 00070 $wgUser->mId = 1; 00071 $wgUser->mDataLoaded = true; 00072 $wgUser->mOptionsLoaded = true; 00073 $wgUser->setOption( 'variant', 'tg-latn' ); 00074 00075 $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); 00076 } 00077 00078 function testGetPreferredVariantHeaderUserVsUrl() { 00079 global $wgContLang, $wgRequest, $wgUser; 00080 00081 $wgContLang = Language::factory( 'tg-latn' ); 00082 $wgRequest->setVal( 'variant', 'tg' ); 00083 $wgUser = User::newFromId( "admin" ); 00084 $wgUser->setId( 1 ); 00085 $wgUser->mFrom = 'defaults'; 00086 $wgUser->mOptionsLoaded = true; 00087 // The user's data is ignored because the variant is set in the URL. 00088 $wgUser->setOption( 'variant', 'tg-latn' ); 00089 $this->assertEquals( 'tg', $this->lc->getPreferredVariant() ); 00090 } 00091 00092 00093 function testGetPreferredVariantDefaultLanguageVariant() { 00094 global $wgDefaultLanguageVariant; 00095 00096 $wgDefaultLanguageVariant = 'tg-latn'; 00097 $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); 00098 } 00099 00100 function testGetPreferredVariantDefaultLanguageVsUrlVariant() { 00101 global $wgDefaultLanguageVariant, $wgRequest, $wgContLang; 00102 00103 $wgContLang = Language::factory( 'tg-latn' ); 00104 $wgDefaultLanguageVariant = 'tg'; 00105 $wgRequest->setVal( 'variant', null ); 00106 $this->assertEquals( 'tg', $this->lc->getPreferredVariant() ); 00107 } 00108 } 00109 00113 class TestConverter extends LanguageConverter { 00114 private $table = array( 00115 'б' => 'b', 00116 'в' => 'v', 00117 'г' => 'g', 00118 ); 00119 00120 function loadDefaultTables() { 00121 $this->mTables = array( 00122 'tg-latn' => new ReplacementArray( $this->table ), 00123 'tg' => new ReplacementArray() 00124 ); 00125 } 00126 00127 } 00128 00129 class LanguageToTest extends Language { 00130 function __construct() { 00131 parent::__construct(); 00132 $variants = array( 'tg', 'tg-latn' ); 00133 $this->mConverter = new TestConverter( $this, 'tg', $variants ); 00134 } 00135 }