* @param string|string[] $key Message key or array of message keys to try and use the first
* non-empty message for.
* @param array $params Message parameters.
+ * @param Language $language Optional language of the message, defaults to $wgLang.
*/
- public function __construct( $key, $params = array() ) {
+ public function __construct( $key, $params = array(), Language $language = null ) {
global $wgLang;
+
$this->key = $key;
$this->parameters = array_values( $params );
- $this->language = $wgLang;
+ $this->language = $language ? $language : $wgLang;
}
/**
<?php
class MessageTest extends MediaWikiLangTestCase {
+
protected function setUp() {
parent::setUp();
) );
}
+ /**
+ * @covers Message::__construct
+ * @dataProvider provideConstructor
+ */
+ public function testConstructor( $expectedLang, $key, $params, $language ) {
+ $reflection = new ReflectionClass( 'Message' );
+
+ $keyProperty = $reflection->getProperty( 'key' );
+ $keyProperty->setAccessible( true );
+
+ $paramsProperty = $reflection->getProperty( 'parameters' );
+ $paramsProperty->setAccessible( true );
+
+ $langProperty = $reflection->getProperty( 'language' );
+ $langProperty->setAccessible( true );
+
+ $message = new Message( $key, $params, $language );
+
+ $this->assertEquals( $key, $keyProperty->getValue( $message ) );
+ $this->assertEquals( $params, $paramsProperty->getValue( $message ) );
+ $this->assertEquals( $expectedLang, $langProperty->getValue( $message ) );
+ }
+
+ public function provideConstructor() {
+ $langDe = Language::factory( 'de' );
+ $langEn = Language::factory( 'en' );
+
+ return array(
+ array( $langDe, 'foo', array(), $langDe ),
+ array( $langDe, 'foo', array( 'bar' ), $langDe ),
+ array( $langEn, 'foo', array( 'bar' ), null )
+ );
+ }
+
public function provideTestParams() {
return array(
array( array() ),