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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
<?php
namespace MediaWiki\Tests\Unit\Message;
use InvalidArgumentException;
use MediaWiki\Message\Converter;
use MediaWikiUnitTestCase;
use Message;
use Wikimedia\Message\MessageValue;
/**
* @covers \MediaWiki\Message\Converter
*/
class ConverterTest extends MediaWikiUnitTestCase {
public function testCreateMessage() {
$converter = new Converter();
$m = $converter->createMessage( 'foobar' );
$this->assertInstanceOf( Message::class, $m );
$this->assertSame( 'foobar', $m->getKey() );
$this->assertSame( [], $m->getParams() );
}
/** @dataProvider provideConversions */
public function testConvertMessage( Message $m, MessageValue $mv ) {
$converter = new Converter();
$this->assertEquals( $mv, $converter->convertMessage( $m ) );
}
/** @dataProvider provideConversions */
public function testConvertMessageValue( Message $m, MessageValue $mv ) {
$converter = new Converter();
$this->assertEquals( $m, $converter->convertMessageValue( $mv ) );
}
public static function provideConversions() {
yield 'Basic message, no params' => [
new Message( 'foobar' ),
new MessageValue( 'foobar' ),
];
yield 'Scalar text params' => [
new Message( 'foobar', [ 'one', 2, 3 ] ),
new MessageValue( 'foobar', [ 'one', 2, 3 ] ),
];
yield 'Message(Value) as param' => [
new Message( 'foo', [ new Message( 'bar', [ new Message( 'baz' ) ] ) ] ),
new MessageValue( 'foo', [ new MessageValue( 'bar', [ new MessageValue( 'baz' ) ] ) ] ),
];
yield 'numParams' => [
Message::newFromKey( 'foobar' )->numParams( 1, 2, 3 ),
MessageValue::new( 'foobar' )->numParams( 1, 2, 3 ),
];
yield 'longDurationParams' => [
Message::newFromKey( 'foobar' )->durationParams( 1, 2, 3 ),
MessageValue::new( 'foobar' )->longDurationParams( 1, 2, 3 ),
];
yield 'shortDurationParams' => [
Message::newFromKey( 'foobar' )->timeperiodParams( 1, 2, 3 ),
MessageValue::new( 'foobar' )->shortDurationParams( 1, 2, 3 ),
];
yield 'expiryParams' => [
Message::newFromKey( 'foobar' )->expiryParams( 1, 2, 'infinity' ),
MessageValue::new( 'foobar' )->expiryParams( 1, 2, 'infinity' ),
];
yield 'sizeParams' => [
Message::newFromKey( 'foobar' )->sizeParams( 1, 2, 3 ),
MessageValue::new( 'foobar' )->sizeParams( 1, 2, 3 ),
];
yield 'bitrateParams' => [
Message::newFromKey( 'foobar' )->bitrateParams( 1, 2, 3 ),
MessageValue::new( 'foobar' )->bitrateParams( 1, 2, 3 ),
];
yield 'rawParams' => [
Message::newFromKey( 'foobar' )->rawParams( 1, 2, 3 ),
MessageValue::new( 'foobar' )->rawParams( 1, 2, 3 ),
];
yield 'plaintextParams' => [
Message::newFromKey( 'foobar' )->plaintextParams( 1, 2, 3 ),
MessageValue::new( 'foobar' )->plaintextParams( 1, 2, 3 ),
];
yield 'listParams' => [
Message::newFromKey( 'foobar',
Message::listParam( [ 1, 2, 3 ], 'comma' ),
Message::listParam( [ 4, 5, 6 ], 'semicolon' ),
Message::listParam( [ 7, 8, 9 ], 'pipe' ),
Message::listParam( [ 10, 11, 12 ], 'text' )
),
MessageValue::new( 'foobar' )
->commaListParams( [ 1, 2, 3 ] )
->semicolonListParams( [ 4, 5, 6 ] )
->pipeListParams( [ 7, 8, 9 ] )
->textListParams( [ 10, 11, 12 ] ),
];
}
public function testConvertMessage_invalidParam() {
$m = Message::newFromKey( 'foobar', [ 'foo' => 'bar' ] );
$converter = new Converter();
$this->expectException( InvalidArgumentException::class );
$converter->convertMessage( $m );
}
}
|