3 class LanguageConverterTest
extends PHPUnit_Framework_TestCase
{
4 protected $lang = null;
8 global $wgMemc, $wgRequest, $wgUser, $wgContLang;
11 $wgRequest = new FauxRequest( array() );
12 $wgMemc = new FakeMemCachedClient
;
13 $wgContLang = Language
::factory( 'tg' );
14 $this->lang
= new LanguageToTest();
15 $this->lc
= new TestConverter( $this->lang
, 'tg',
16 array( 'tg', 'tg-latn' ) );
20 global $wgMemc, $wgContLang;
24 $wgContLang = Language
::factory( 'en' );
27 function testGetPreferredVariantDefaults() {
28 $this->assertEquals( 'tg', $this->lc
->getPreferredVariant() );
31 function testGetPreferredVariantHeaders() {
33 $wgRequest->setHeader( 'Accept-Language', 'tg-latn' );
35 $this->assertEquals( 'tg-latn', $this->lc
->getPreferredVariant() );
38 function testGetPreferredVariantHeaderWeight() {
40 $wgRequest->setHeader( 'Accept-Language', 'tg;q=1' );
42 $this->assertEquals( 'tg', $this->lc
->getPreferredVariant() );
45 function testGetPreferredVariantHeaderWeight2() {
47 $wgRequest->setHeader( 'Accept-Language', 'tg-latn;q=1' );
49 $this->assertEquals( 'tg-latn', $this->lc
->getPreferredVariant() );
52 function testGetPreferredVariantHeaderMulti() {
54 $wgRequest->setHeader( 'Accept-Language', 'en, tg-latn;q=1' );
56 $this->assertEquals( 'tg-latn', $this->lc
->getPreferredVariant() );
59 function testGetPreferredVariantUserOption() {
64 $wgUser->mDataLoaded
= true;
65 $wgUser->mOptionsLoaded
= true;
66 $wgUser->setOption( 'variant', 'tg-latn' );
68 $this->assertEquals( 'tg-latn', $this->lc
->getPreferredVariant() );
71 function testGetPreferredVariantHeaderUserVsUrl() {
72 global $wgRequest, $wgUser, $wgContLang;
74 $wgContLang = Language
::factory( 'tg-latn' );
75 $wgRequest->setVal( 'variant', 'tg' );
76 $wgUser = User
::newFromId( "admin" );
78 $wgUser->mDataLoaded
= true;
79 $wgUser->mOptionsLoaded
= true;
80 $wgUser->setOption( 'variant', 'tg-latn' ); // The user's data is ignored
81 // because the variant is set in the URL.
82 $this->assertEquals( 'tg', $this->lc
->getPreferredVariant() );
86 function testGetPreferredVariantDefaultLanguageVariant() {
87 global $wgDefaultLanguageVariant;
89 $wgDefaultLanguageVariant = 'tg-latn';
90 $this->assertEquals( 'tg-latn', $this->lc
->getPreferredVariant() );
93 function testGetPreferredVariantDefaultLanguageVsUrlVariant() {
94 global $wgDefaultLanguageVariant, $wgRequest, $wgContLang;
96 $wgContLang = Language
::factory( 'tg-latn' );
97 $wgDefaultLanguageVariant = 'tg';
98 $wgRequest->setVal( 'variant', null );
99 $this->assertEquals( 'tg', $this->lc
->getPreferredVariant() );
104 * Test converter (from Tajiki to latin orthography)
106 class TestConverter
extends LanguageConverter
{
107 private $table = array(
113 function loadDefaultTables() {
114 $this->mTables
= array(
115 'tg-latn' => new ReplacementArray( $this->table
),
116 'tg' => new ReplacementArray()
122 class LanguageToTest
extends Language
{
123 function __construct() {
124 parent
::__construct();
125 $variants = array( 'tg', 'tg-latn' );
126 $this->mConverter
= new TestConverter( $this, 'tg', $variants );