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
|
<?php
declare( strict_types = 1 );
namespace MediaWiki\Extension\Translate\PageTranslation;
use InvalidArgumentException;
use Language;
use MediaWikiUnitTestCase;
/**
* @author Niklas Laxström
* @license GPL-2.0-or-later
* @covers \MediaWiki\Extension\Translate\PageTranslation\ParserOutput
*/
class ParserOutputTest extends MediaWikiUnitTestCase {
public function testConstructor() {
$actual = new ParserOutput( '', [], [] );
$this->assertInstanceOf( ParserOutput::class, $actual );
}
public function testConstructorFail() {
$this->expectException( InvalidArgumentException::class );
$actual = new ParserOutput( '', [ (object)[] ], [] );
$this->assertInstanceOf( ParserOutput::class, $actual );
}
public function testConstructorFail2() {
$this->expectException( InvalidArgumentException::class );
$actual = new ParserOutput( '', [], [ (object)[] ] );
$this->assertInstanceOf( ParserOutput::class, $actual );
}
public function testSourcePageTemplate() {
$output = new ParserOutput(
'A<0>B',
[ '<0>' => new Section( '<translate>', '<1>', '</translate>' ) ],
[]
);
$this->assertSame( 'A<translate><1></translate>B', $output->sourcePageTemplate() );
}
public function testTranslationPageTemplate() {
$output = new ParserOutput(
'A<0>B',
[ '<0>' => new Section( '<translate>', '<1>', '</translate>' ) ],
[]
);
$this->assertSame( 'A<1>B', $output->translationPageTemplate() );
}
public function testUnits() {
$units = [];
$units['<1>'] = new TranslationUnit();
$output = new ParserOutput(
'A<0>B',
[ '<0>' => new Section( '<translate>', '<1>', '</translate>' ) ],
$units
);
$this->assertSame( $units, $output->units() );
}
public function testSourcePageTextForRendering() {
$units = [];
$units['<1>'] = new TranslationUnit();
$units['<1>']->text = 'Hello';
$output = new ParserOutput(
'A<0>B',
[ '<0>' => new Section( '<translate>', '<1>', '</translate>' ) ],
$units
);
$language = $this->createStub( Language::class );
$language->method( 'getHtmlCode' )->willReturn( 'en-GB' );
$this->assertSame( 'AHelloB', $output->sourcePageTextForRendering( $language ) );
}
public function testSourcePageTextForSaving() {
$units = [];
$units['<1>'] = new TranslationUnit();
$units['<1>']->text = 'Hello';
$units['<1>']->id = 'abc';
$units['<1>']->setIsInline( true );
$output = new ParserOutput(
'A<0>B',
[ '<0>' => new Section( '<translate>', '<1>', '</translate>' ) ],
$units
);
$this->assertSame( 'A<translate><!--T:abc--> Hello</translate>B', $output->sourcePageTextForSaving() );
}
}
|