Merge "Add tags for undo edits"
[lhc/web/wiklou.git] / tests / phpunit / includes / media / SVGTest.php
1 <?php
2
3 /**
4 * @group Media
5 */
6 class SVGTest extends MediaWikiMediaTestCase {
7
8 /**
9 * @var SvgHandler
10 */
11 private $handler;
12
13 protected function setUp() {
14 parent::setUp();
15
16 $this->filePath = __DIR__ . '/../../data/media/';
17
18 $this->setMwGlobals( 'wgShowEXIF', true );
19
20 $this->handler = new SvgHandler;
21 }
22
23 /**
24 * @param string $filename
25 * @param array $expected The expected independent metadata
26 * @dataProvider providerGetIndependentMetaArray
27 * @covers SvgHandler::getCommonMetaArray
28 */
29 public function testGetIndependentMetaArray( $filename, $expected ) {
30 $file = $this->dataFile( $filename, 'image/svg+xml' );
31 $res = $this->handler->getCommonMetaArray( $file );
32
33 $this->assertEquals( $res, $expected );
34 }
35
36 public static function providerGetIndependentMetaArray() {
37 return [
38 [ 'Tux.svg', [
39 'ObjectName' => 'Tux',
40 'ImageDescription' =>
41 'For more information see: http://commons.wikimedia.org/wiki/Image:Tux.svg',
42 ] ],
43 [ 'Wikimedia-logo.svg', [] ]
44 ];
45 }
46
47 /**
48 * @param string $userPreferredLanguage
49 * @param array $svgLanguages
50 * @param string $expectedMatch
51 * @dataProvider providerGetMatchedLanguage
52 * @covers SvgHandler::getMatchedLanguage
53 */
54 public function testGetMatchedLanguage( $userPreferredLanguage, $svgLanguages, $expectedMatch ) {
55 $match = $this->handler->getMatchedLanguage( $userPreferredLanguage, $svgLanguages );
56 $this->assertEquals( $expectedMatch, $match );
57 }
58
59 public function providerGetMatchedLanguage() {
60 return [
61 'no match' => [
62 'userPreferredLanguage' => 'en',
63 'svgLanguages' => [ 'de-DE', 'zh', 'ga', 'fr', 'sr-Latn-ME' ],
64 'expectedMatch' => null,
65 ],
66 'no subtags' => [
67 'userPreferredLanguage' => 'en',
68 'svgLanguages' => [ 'de', 'zh', 'en', 'fr' ],
69 'expectedMatch' => 'en',
70 ],
71 'user no subtags, svg 1 subtag' => [
72 'userPreferredLanguage' => 'en',
73 'svgLanguages' => [ 'de-DE', 'en-GB', 'en-US', 'fr' ],
74 'expectedMatch' => 'en-GB',
75 ],
76 'user no subtags, svg >1 subtag' => [
77 'userPreferredLanguage' => 'sr',
78 'svgLanguages' => [ 'de-DE', 'sr-Cyrl-BA', 'sr-Latn-ME', 'en-US', 'fr' ],
79 'expectedMatch' => 'sr-Cyrl-BA',
80 ],
81 'user 1 subtag, svg no subtags' => [
82 'userPreferredLanguage' => 'en-US',
83 'svgLanguages' => [ 'de', 'en', 'en', 'fr' ],
84 'expectedMatch' => null,
85 ],
86 'user 1 subtag, svg 1 subtag' => [
87 'userPreferredLanguage' => 'en-US',
88 'svgLanguages' => [ 'de-DE', 'en-GB', 'en-US', 'fr' ],
89 'expectedMatch' => 'en-US',
90 ],
91 'user 1 subtag, svg >1 subtag' => [
92 'userPreferredLanguage' => 'sr-Latn',
93 'svgLanguages' => [ 'de-DE', 'sr-Cyrl-BA', 'sr-Latn-ME', 'fr' ],
94 'expectedMatch' => 'sr-Latn-ME',
95 ],
96 'user >1 subtag, svg >1 subtag' => [
97 'userPreferredLanguage' => 'sr-Latn-ME',
98 'svgLanguages' => [ 'de-DE', 'sr-Cyrl-BA', 'sr-Latn-ME', 'en-US', 'fr' ],
99 'expectedMatch' => 'sr-Latn-ME',
100 ],
101 'user >1 subtag, svg <=1 subtag' => [
102 'userPreferredLanguage' => 'sr-Latn-ME',
103 'svgLanguages' => [ 'de-DE', 'sr-Cyrl', 'sr-Latn', 'en-US', 'fr' ],
104 'expectedMatch' => null,
105 ],
106 'ensure case-insensitive' => [
107 'userPreferredLanguage' => 'sr-latn',
108 'svgLanguages' => [ 'de-DE', 'sr-Cyrl', 'sr-Latn-ME', 'en-US', 'fr' ],
109 'expectedMatch' => 'sr-Latn-ME',
110 ],
111 ];
112 }
113 }