blob: 632e037ff3c3aa47ac4dd2b3abca4357cdb58a2b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
<?php
/**
* Helping class to run tests using a clean language instance.
*
* This is intended for the MediaWiki language class tests under
* tests/phpunit/languages.
*
* Before each tests, a new language object is build which you
* can retrieve in your test using the $this->getLang() method:
*
* @par Using the crafted language object:
* @code
* function testHasLanguageObject() {
* $langObject = $this->getLang();
* $this->assertInstanceOf( 'LanguageFoo',
* $langObject
* );
* }
* @endcode
*/
abstract class LanguageClassesTestCase extends MediaWikiTestCase {
/**
* Internal language object
*
* A new object is created before each tests thanks to PHPUnit
* setUp() method, it is deleted after each test too. To get
* this object you simply use the getLang method.
*
* You must have setup a language code first. See $LanguageClassCode
* @code
* function testWeAreTheChampions() {
* $this->getLang(); # language object
* }
* @endcode
*/
private $languageObject;
/**
* @return Language
*/
protected function getLang() {
return $this->languageObject;
}
/**
* Create a new language object before each test.
*/
protected function setUp() {
parent::setUp();
$found = preg_match( '/Language(.+)Test/', get_called_class(), $m );
if ( $found ) {
# Normalize language code since classes uses underscores
$m[1] = str_replace( '_', '-', $m[1] );
} else {
# Fallback to english language
$m[1] = 'en';
wfDebug(
__METHOD__ . " could not extract a language name "
. "out of " . get_called_class() . " failling back to 'en'\n"
);
}
// @todo validate $m[1] which should be a valid language code
$this->languageObject = Language::factory( $m[1] );
}
/**
* Delete the internal language object so each test start
* out with a fresh language instance.
*/
protected function tearDown() {
unset( $this->languageObject );
parent::tearDown();
}
}
|