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 LanguageTest();
15 $this->lc
= new TestConverter( $this->lang
, 'tg',
16 array( 'tg', 'tg-latn' ) );
26 function testGetPreferredVariantDefaults() {
27 $this->assertEquals('tg', $this->lc
->getPreferredVariant(false, false));
28 $this->assertEquals('tg', $this->lc
->getPreferredVariant(false, true));
29 $this->assertEquals('tg', $this->lc
->getPreferredVariant(true, false));
30 $this->assertEquals('tg', $this->lc
->getPreferredVariant(true, true));
33 function testGetPreferredVariantHeaders() {
35 $wgRequest->setHeader('Accept-Language', 'tg-latn');
37 $this->assertEquals('tg', $this->lc
->getPreferredVariant(false, false));
38 $this->assertEquals('tg-latn', $this->lc
->getPreferredVariant(false, true));
39 $this->assertEquals('tg', $this->lc
->getPreferredVariant(true, false));
40 $this->assertEquals('tg', $this->lc
->getPreferredVariant(true, true));
43 function testGetPreferredVariantHeaderWeight() {
45 $wgRequest->setHeader('Accept-Language', 'tg;q=1');
47 $this->assertEquals('tg', $this->lc
->getPreferredVariant(false, false));
48 $this->assertEquals('tg', $this->lc
->getPreferredVariant(false, true));
49 $this->assertEquals('tg', $this->lc
->getPreferredVariant(true, false));
50 $this->assertEquals('tg', $this->lc
->getPreferredVariant(true, true));
53 function testGetPreferredVariantHeaderWeight2() {
55 $wgRequest->setHeader('Accept-Language', 'tg-latn;q=1');
57 $this->assertEquals('tg', $this->lc
->getPreferredVariant(false, false));
58 $this->assertEquals('tg-latn', $this->lc
->getPreferredVariant(false, true));
59 $this->assertEquals('tg', $this->lc
->getPreferredVariant(true, false));
60 $this->assertEquals('tg', $this->lc
->getPreferredVariant(true, true));
63 function testGetPreferredVariantHeaderMulti() {
65 $wgRequest->setHeader('Accept-Language', 'en, tg-latn;q=1');
67 $this->assertEquals('tg', $this->lc
->getPreferredVariant(false, false));
68 $this->assertEquals('tg-latn', $this->lc
->getPreferredVariant(false, true));
69 $this->assertEquals('tg', $this->lc
->getPreferredVariant(true, false));
70 $this->assertEquals('tg', $this->lc
->getPreferredVariant(true, true));
73 function testGetPreferredVariantUserOption() {
78 $wgUser->mDataLoaded
= true;
79 $wgUser->setOption('variant', 'tg-latn');
81 $this->assertEquals('tg', $this->lc
->getPreferredVariant(false, false));
82 $this->assertEquals('tg', $this->lc
->getPreferredVariant(false, true));
83 $this->assertEquals('tg-latn', $this->lc
->getPreferredVariant(true, false));
84 $this->assertEquals('tg-latn', $this->lc
->getPreferredVariant(true, true));
87 function testGetPreferredVariantHeaderUserVsUrl() {
88 global $wgRequest, $wgUser, $wgContLang;
90 $wgContLang = Language
::factory( 'tg-latn' );
91 $wgRequest->setVal('variant', 'tg');
92 $wgUser = User
::newFromId("admin");
94 $wgUser->setOption('variant', 'tg-latn'); // The user's data is ignored
95 // because the variant is set in the URL.
96 $this->assertEquals('tg', $this->lc
->getPreferredVariant(true, false));
97 $this->assertEquals('tg', $this->lc
->getPreferredVariant(true, true));
101 function testGetPreferredVariantDefaultLanguageVariant() {
102 global $wgDefaultLanguageVariant;
104 $wgDefaultLanguageVariant = 'tg-latn';
105 $this->assertEquals('tg-latn', $this->lc
->getPreferredVariant(false, false));
106 $this->assertEquals('tg-latn', $this->lc
->getPreferredVariant(false, true));
107 $this->assertEquals('tg-latn', $this->lc
->getPreferredVariant(true, false));
108 $this->assertEquals('tg-latn', $this->lc
->getPreferredVariant(true, true));
111 function testGetPreferredVariantDefaultLanguageVsUrlVariant() {
112 global $wgDefaultLanguageVariant, $wgRequest, $wgContLang;
114 $wgContLang = Language
::factory( 'tg-latn' );
115 $wgDefaultLanguageVariant = 'tg';
116 $wgRequest->setVal('variant', null);
117 $this->assertEquals('tg', $this->lc
->getPreferredVariant(false, false));
118 $this->assertEquals('tg', $this->lc
->getPreferredVariant(false, true));
119 $this->assertEquals('tg-latn', $this->lc
->getPreferredVariant(true, false));
120 $this->assertEquals('tg-latn', $this->lc
->getPreferredVariant(true, true));
125 * Test converter (from Tajiki to latin orthography)
127 class TestConverter
extends LanguageConverter
{
128 private $table = array(
134 function loadDefaultTables() {
135 $this->mTables
= array(
136 'tg-latn' => new ReplacementArray( $this->table
),
137 'tg' => new ReplacementArray()
143 class LanguageTest
extends Language
{
144 function __construct() {
145 parent
::__construct();
146 $variants = array( 'tg', 'tg-latn' );
147 $this->mConverter
= new TestConverter( $this, 'tg', $variants );