[],
[],
],
+ [
+ [],
+ [ [] ],
+ ],
[
[ 'foo' ],
[ 'foo' ],
[ [ 'baz', 'foo' ] ],
],
[
- [ 'baz', 'foo' ],
+ [ Message::rawParam( 'baz' ) ],
+ [ Message::rawParam( 'baz' ) ],
+ ],
+ [
+ [ Message::rawParam( 'baz' ), 'foo' ],
+ [ Message::rawParam( 'baz' ), 'foo' ],
+ ],
+ [
+ [ Message::rawParam( 'baz' ) ],
+ [ [ Message::rawParam( 'baz' ) ] ],
+ ],
+ [
+ [ Message::rawParam( 'baz' ), 'foo' ],
+ [ [ Message::rawParam( 'baz' ), 'foo' ] ],
+ ],
+
+ // Test handling of erroneous input, to detect if it changes
+ [
+ [ [ 'baz', 'foo' ], 'hhh' ],
[ [ 'baz', 'foo' ], 'hhh' ],
],
[
- [ 'baz', 'foo' ],
+ [ [ 'baz', 'foo' ], 'hhh', [ 'ahahahahha' ] ],
[ [ 'baz', 'foo' ], 'hhh', [ 'ahahahahha' ] ],
],
[
- [ 'baz', 'foo' ],
+ [ [ 'baz', 'foo' ], [ 'ahahahahha' ] ],
[ [ 'baz', 'foo' ], [ 'ahahahahha' ] ],
],
[
- [ 'baz' ],
+ [ [ 'baz' ], [ 'ahahahahha' ] ],
[ [ 'baz' ], [ 'ahahahahha' ] ],
],
];
public function testWfMessageParams() {
$this->assertSame( 'Return to $1.', wfMessage( 'returnto' )->text() );
$this->assertSame( 'Return to $1.', wfMessage( 'returnto', [] )->text() );
+ $this->assertSame(
+ 'Return to 1,024.',
+ wfMessage( 'returnto', Message::numParam( 1024 ) )->text()
+ );
+ $this->assertSame(
+ 'Return to 1,024.',
+ wfMessage( 'returnto', [ Message::numParam( 1024 ) ] )->text()
+ );
$this->assertSame(
'You have foo (bar).',
wfMessage( 'youhavenewmessages', 'foo', 'bar' )->text()
'You have foo (bar).',
wfMessage( 'youhavenewmessages', [ 'foo', 'bar' ] )->text()
);
+ $this->assertSame(
+ 'You have 1,024 (bar).',
+ wfMessage(
+ 'youhavenewmessages',
+ Message::numParam( 1024 ), 'bar'
+ )->text()
+ );
+ $this->assertSame(
+ 'You have foo (2,048).',
+ wfMessage(
+ 'youhavenewmessages',
+ 'foo', Message::numParam( 2048 )
+ )->text()
+ );
+ $this->assertSame(
+ 'You have 1,024 (2,048).',
+ wfMessage(
+ 'youhavenewmessages',
+ [ Message::numParam( 1024 ), Message::numParam( 2048 ) ]
+ )->text()
+ );
}
/**
return [
[ '<span>foo</span>', 'parse', '<span>foo</span>', '<span>foo</span>' ],
[ '<span>foo</span>', 'escaped', '<span>foo</span>',
- '<span>foo</span>' ],
+ '<span>foo</span>' ],
[ '<span>foo</span>', 'plain', '<span>foo</span>', '<span>foo</span>' ],
[ '<script>alert(1)</script>', 'parse', '<script>alert(1)</script>',
'<script>alert(1)</script>' ],
[ '<script>alert(1)</script>', 'escaped', '<script>alert(1)</script>',
'<script>alert(1)</script>' ],
[ '<script>alert(1)</script>', 'plain', '<script>alert(1)</script>',
- '<script>alert(1)</script>' ],
+ '<script>alert(1)</script>' ],
];
}
}
/**
- * FIXME: This should not need database, but Language#formatExpiry does (bug 55912)
+ * FIXME: This should not need database, but Language#formatExpiry does (T57912)
* @group Database
* @covers Message::expiryParam
* @covers Message::expiryParams
);
}
+ public static function provideListParam() {
+ $lang = Language::factory( 'de' );
+ $msg1 = new Message( 'mainpage', [], $lang );
+ $msg2 = new RawMessage( "''link''", [], $lang );
+
+ return [
+ 'Simple comma list' => [
+ [ 'a', 'b', 'c' ],
+ 'comma',
+ 'text',
+ 'a, b, c'
+ ],
+
+ 'Simple semicolon list' => [
+ [ 'a', 'b', 'c' ],
+ 'semicolon',
+ 'text',
+ 'a; b; c'
+ ],
+
+ 'Simple pipe list' => [
+ [ 'a', 'b', 'c' ],
+ 'pipe',
+ 'text',
+ 'a | b | c'
+ ],
+
+ 'Simple text list' => [
+ [ 'a', 'b', 'c' ],
+ 'text',
+ 'text',
+ 'a, b and c'
+ ],
+
+ 'Empty list' => [
+ [],
+ 'comma',
+ 'text',
+ ''
+ ],
+
+ 'List with all "before" params, ->text()' => [
+ [ "''link''", Message::numParam( 12345678 ) ],
+ 'semicolon',
+ 'text',
+ '\'\'link\'\'; 12,345,678'
+ ],
+
+ 'List with all "before" params, ->parse()' => [
+ [ "''link''", Message::numParam( 12345678 ) ],
+ 'semicolon',
+ 'parse',
+ '<i>link</i>; 12,345,678'
+ ],
+
+ 'List with all "after" params, ->text()' => [
+ [ $msg1, $msg2, Message::rawParam( '[[foo]]' ) ],
+ 'semicolon',
+ 'text',
+ 'Main Page; \'\'link\'\'; [[foo]]'
+ ],
+
+ 'List with all "after" params, ->parse()' => [
+ [ $msg1, $msg2, Message::rawParam( '[[foo]]' ) ],
+ 'semicolon',
+ 'parse',
+ 'Main Page; <i>link</i>; [[foo]]'
+ ],
+
+ 'List with both "before" and "after" params, ->text()' => [
+ [ $msg1, $msg2, Message::rawParam( '[[foo]]' ), "''link''", Message::numParam( 12345678 ) ],
+ 'semicolon',
+ 'text',
+ 'Main Page; \'\'link\'\'; [[foo]]; \'\'link\'\'; 12,345,678'
+ ],
+
+ 'List with both "before" and "after" params, ->parse()' => [
+ [ $msg1, $msg2, Message::rawParam( '[[foo]]' ), "''link''", Message::numParam( 12345678 ) ],
+ 'semicolon',
+ 'parse',
+ 'Main Page; <i>link</i>; [[foo]]; <i>link</i>; 12,345,678'
+ ],
+ ];
+ }
+
+ /**
+ * @covers Message::listParam
+ * @covers Message::extractParam
+ * @covers Message::formatListParam
+ * @dataProvider provideListParam
+ */
+ public function testListParam( $list, $type, $format, $expect ) {
+ $lang = Language::factory( 'en' );
+
+ $msg = new RawMessage( '$1' );
+ $msg->params( [ Message::listParam( $list, $type ) ] );
+ $this->assertEquals(
+ $expect,
+ $msg->inLanguage( $lang )->$format()
+ );
+ }
+
/**
* @covers Message::extractParam
*/