5 protected function setUp() {
10 'wgForceUIMsgAsContentMsg' =>
array(),
18 public function testConstructor( $expectedLang, $key,
$params, $language ) {
19 $reflection =
new ReflectionClass(
'Message' );
21 $keyProperty = $reflection->getProperty(
'key' );
22 $keyProperty->setAccessible(
true );
24 $paramsProperty = $reflection->getProperty(
'parameters' );
25 $paramsProperty->setAccessible(
true );
27 $langProperty = $reflection->getProperty(
'language' );
28 $langProperty->setAccessible(
true );
30 $message =
new Message( $key,
$params, $language );
32 $this->assertEquals( $key, $keyProperty->getValue( $message ) );
33 $this->assertEquals(
$params, $paramsProperty->getValue( $message ) );
34 $this->assertEquals( $expectedLang, $langProperty->getValue( $message ) );
37 public function provideConstructor() {
43 array( $langDe,
'foo',
array(
'bar' ), $langDe ),
48 public function provideTestParams() {
62 public function getLanguageProvider() {
73 public function testGetLanguageCode( $key,
$params, $languageCode ) {
75 $message =
new Message( $key,
$params, $language );
77 $this->assertEquals( $language, $message->getLanguage() );
84 public function testParams( $expected ) {
85 $msg =
new Message(
'imasomething' );
87 $returned = call_user_func_array(
array( $msg,
'params' ), array_slice( func_get_args(), 1 ) );
89 $this->assertSame( $msg, $returned );
90 $this->assertEquals( $expected, $msg->getParams() );
96 public function testExists() {
97 $this->assertTrue(
wfMessage(
'mainpage' )->exists() );
98 $this->assertTrue(
wfMessage(
'mainpage' )->params(
array() )->exists() );
99 $this->assertTrue(
wfMessage(
'mainpage' )->rawParams(
'foo', 123 )->exists() );
100 $this->assertFalse(
wfMessage(
'i-dont-exist-evar' )->exists() );
101 $this->assertFalse(
wfMessage(
'i-dont-exist-evar' )->params(
array() )->exists() );
102 $this->assertFalse(
wfMessage(
'i-dont-exist-evar' )->rawParams(
'foo', 123 )->exists() );
108 public function testKey() {
109 $this->assertInstanceOf(
'Message',
wfMessage(
'mainpage' ) );
110 $this->assertInstanceOf(
'Message',
wfMessage(
'i-dont-exist-evar' ) );
111 $this->assertEquals(
'Main Page',
wfMessage(
'mainpage' )->
text() );
112 $this->assertEquals(
'<i-dont-exist-evar>',
wfMessage(
'i-dont-exist-evar' )->
text() );
113 $this->assertEquals(
'<i-dont-exist-evar>',
wfMessage(
'i-dont-exist-evar' )->plain() );
114 $this->assertEquals(
'<i-dont-exist-evar>',
wfMessage(
'i-dont-exist-evar' )->escaped() );
120 public function testInLanguage() {
121 $this->assertEquals(
'Main Page',
wfMessage(
'mainpage' )->inLanguage(
'en' )->
text() );
122 $this->assertEquals(
'Заглавная страница',
wfMessage(
'mainpage' )->inLanguage(
'ru' )->
text() );
130 public function testMessageParams() {
131 $this->assertEquals(
'Return to $1.',
wfMessage(
'returnto' )->
text() );
133 $this->assertEquals(
'You have foo (bar).',
wfMessage(
'youhavenewmessages',
'foo',
'bar' )->
text() );
134 $this->assertEquals(
'You have foo (bar).',
wfMessage(
'youhavenewmessages',
array(
'foo',
'bar' ) )->
text() );
141 public function testMessageParamSubstitution() {
142 $this->assertEquals(
'(Заглавная страница)',
wfMessage(
'parentheses',
'Заглавная страница' )->plain() );
143 $this->assertEquals(
'(Заглавная страница $1)',
wfMessage(
'parentheses',
'Заглавная страница $1' )->plain() );
144 $this->assertEquals(
'(Заглавная страница)',
wfMessage(
'parentheses' )->rawParams(
'Заглавная страница' )->plain() );
145 $this->assertEquals(
'(Заглавная страница $1)',
wfMessage(
'parentheses' )->rawParams(
'Заглавная страница $1' )->plain() );
148 public function testRawHtmlInMsg() {
155 new $wgParserConf[
'class'](
array( $wgParserConf ) )
158 $msg =
new RawMessage(
'<html><script>alert("xss")</script></html>' );
159 $txt =
'<span class="error"><html> tags cannot be' .
160 ' used outside of normal pages.</span>';
161 $this->assertSame( $txt, $msg->parse() );
168 public function testDeliciouslyManyParams() {
169 $msg =
new RawMessage(
'$1$2$3$4$5$6$7$8$9$10$11$12' );
171 $params =
array(
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k' );
172 $this->assertEquals(
'abcdefghijka2', $msg->params(
$params )->plain(),
'Params > 9 are replaced correctly' );
178 public function testMessageNumParams() {
180 $msg =
new RawMessage(
'$1' );
183 $lang->formatNum( 123456.789 ),
184 $msg->inLanguage( $lang )->numParams( 123456.789 )->plain(),
185 'numParams is handled correctly'
192 public function testMessageDurationParams() {
194 $msg =
new RawMessage(
'$1' );
197 $lang->formatDuration( 1234 ),
198 $msg->inLanguage( $lang )->durationParams( 1234 )->plain(),
199 'durationParams is handled correctly'
208 public function testMessageExpiryParams() {
210 $msg =
new RawMessage(
'$1' );
214 $msg->inLanguage( $lang )->expiryParams(
wfTimestampNow() )->plain(),
215 'expiryParams is handled correctly'
222 public function testMessageTimeperiodParams() {
224 $msg =
new RawMessage(
'$1' );
227 $lang->formatTimePeriod( 1234 ),
228 $msg->inLanguage( $lang )->timeperiodParams( 1234 )->plain(),
229 'timeperiodParams is handled correctly'
236 public function testMessageSizeParams() {
238 $msg =
new RawMessage(
'$1' );
241 $lang->formatSize( 123456 ),
242 $msg->inLanguage( $lang )->sizeParams( 123456 )->plain(),
243 'sizeParams is handled correctly'
250 public function testMessageBitrateParams() {
252 $msg =
new RawMessage(
'$1' );
255 $lang->formatBitrate( 123456 ),
256 $msg->inLanguage( $lang )->bitrateParams( 123456 )->plain(),
257 'bitrateParams is handled correctly'
264 public function testInContentLanguageDisabled() {
267 $this->assertEquals(
'Main Page',
wfMessage(
'mainpage' )->inContentLanguage()->plain(),
'ForceUIMsg disabled' );
273 public function testInContentLanguageEnabled() {
276 'wgForceUIMsgAsContentMsg' =>
array(
'mainpage' ),
279 $this->assertEquals(
'Accueil',
wfMessage(
'mainpage' )->inContentLanguage()->plain(),
'ForceUIMsg enabled' );
286 public function testInLanguageThrows() {