2013-08-28 23:09:07 +00:00
|
|
|
<?php
|
2013-11-23 18:24:14 +00:00
|
|
|
|
2014-07-15 17:31:07 +00:00
|
|
|
/**
|
|
|
|
|
* @group Media
|
|
|
|
|
*/
|
2017-12-10 10:40:05 +00:00
|
|
|
class SVGTest extends MediaWikiMediaTestCase {
|
2013-08-28 23:09:07 +00:00
|
|
|
|
2017-10-18 12:38:48 +00:00
|
|
|
/**
|
|
|
|
|
* @var SvgHandler
|
|
|
|
|
*/
|
|
|
|
|
private $handler;
|
|
|
|
|
|
2013-08-28 23:09:07 +00:00
|
|
|
protected function setUp() {
|
|
|
|
|
parent::setUp();
|
|
|
|
|
|
|
|
|
|
$this->filePath = __DIR__ . '/../../data/media/';
|
|
|
|
|
|
|
|
|
|
$this->setMwGlobals( 'wgShowEXIF', true );
|
|
|
|
|
|
2013-11-23 18:24:14 +00:00
|
|
|
$this->handler = new SvgHandler;
|
2013-08-28 23:09:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2014-04-17 18:43:42 +00:00
|
|
|
* @param string $filename
|
|
|
|
|
* @param array $expected The expected independent metadata
|
2013-08-28 23:09:07 +00:00
|
|
|
* @dataProvider providerGetIndependentMetaArray
|
2013-08-07 23:03:34 +00:00
|
|
|
* @covers SvgHandler::getCommonMetaArray
|
2013-08-28 23:09:07 +00:00
|
|
|
*/
|
|
|
|
|
public function testGetIndependentMetaArray( $filename, $expected ) {
|
|
|
|
|
$file = $this->dataFile( $filename, 'image/svg+xml' );
|
|
|
|
|
$res = $this->handler->getCommonMetaArray( $file );
|
|
|
|
|
|
|
|
|
|
$this->assertEquals( $res, $expected );
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-18 01:28:26 +00:00
|
|
|
public static function providerGetIndependentMetaArray() {
|
2016-02-17 09:09:32 +00:00
|
|
|
return [
|
|
|
|
|
[ 'Tux.svg', [
|
2013-08-28 23:09:07 +00:00
|
|
|
'ObjectName' => 'Tux',
|
2014-04-24 17:52:09 +00:00
|
|
|
'ImageDescription' =>
|
|
|
|
|
'For more information see: http://commons.wikimedia.org/wiki/Image:Tux.svg',
|
2016-02-17 09:09:32 +00:00
|
|
|
] ],
|
|
|
|
|
[ 'Wikimedia-logo.svg', [] ]
|
|
|
|
|
];
|
2013-08-28 23:09:07 +00:00
|
|
|
}
|
2017-10-18 12:38:48 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param string $userPreferredLanguage
|
|
|
|
|
* @param array $svgLanguages
|
|
|
|
|
* @param string $expectedMatch
|
|
|
|
|
* @dataProvider providerGetMatchedLanguage
|
|
|
|
|
* @covers SvgHandler::getMatchedLanguage
|
|
|
|
|
*/
|
|
|
|
|
public function testGetMatchedLanguage( $userPreferredLanguage, $svgLanguages, $expectedMatch ) {
|
|
|
|
|
$match = $this->handler->getMatchedLanguage( $userPreferredLanguage, $svgLanguages );
|
|
|
|
|
$this->assertEquals( $expectedMatch, $match );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function providerGetMatchedLanguage() {
|
|
|
|
|
return [
|
|
|
|
|
'no match' => [
|
|
|
|
|
'userPreferredLanguage' => 'en',
|
|
|
|
|
'svgLanguages' => [ 'de-DE', 'zh', 'ga', 'fr', 'sr-Latn-ME' ],
|
|
|
|
|
'expectedMatch' => null,
|
|
|
|
|
],
|
|
|
|
|
'no subtags' => [
|
|
|
|
|
'userPreferredLanguage' => 'en',
|
|
|
|
|
'svgLanguages' => [ 'de', 'zh', 'en', 'fr' ],
|
|
|
|
|
'expectedMatch' => 'en',
|
|
|
|
|
],
|
|
|
|
|
'user no subtags, svg 1 subtag' => [
|
|
|
|
|
'userPreferredLanguage' => 'en',
|
|
|
|
|
'svgLanguages' => [ 'de-DE', 'en-GB', 'en-US', 'fr' ],
|
|
|
|
|
'expectedMatch' => 'en-GB',
|
|
|
|
|
],
|
|
|
|
|
'user no subtags, svg >1 subtag' => [
|
|
|
|
|
'userPreferredLanguage' => 'sr',
|
|
|
|
|
'svgLanguages' => [ 'de-DE', 'sr-Cyrl-BA', 'sr-Latn-ME', 'en-US', 'fr' ],
|
|
|
|
|
'expectedMatch' => 'sr-Cyrl-BA',
|
|
|
|
|
],
|
|
|
|
|
'user 1 subtag, svg no subtags' => [
|
|
|
|
|
'userPreferredLanguage' => 'en-US',
|
|
|
|
|
'svgLanguages' => [ 'de', 'en', 'en', 'fr' ],
|
|
|
|
|
'expectedMatch' => null,
|
|
|
|
|
],
|
|
|
|
|
'user 1 subtag, svg 1 subtag' => [
|
|
|
|
|
'userPreferredLanguage' => 'en-US',
|
|
|
|
|
'svgLanguages' => [ 'de-DE', 'en-GB', 'en-US', 'fr' ],
|
|
|
|
|
'expectedMatch' => 'en-US',
|
|
|
|
|
],
|
|
|
|
|
'user 1 subtag, svg >1 subtag' => [
|
|
|
|
|
'userPreferredLanguage' => 'sr-Latn',
|
|
|
|
|
'svgLanguages' => [ 'de-DE', 'sr-Cyrl-BA', 'sr-Latn-ME', 'fr' ],
|
|
|
|
|
'expectedMatch' => 'sr-Latn-ME',
|
|
|
|
|
],
|
|
|
|
|
'user >1 subtag, svg >1 subtag' => [
|
|
|
|
|
'userPreferredLanguage' => 'sr-Latn-ME',
|
|
|
|
|
'svgLanguages' => [ 'de-DE', 'sr-Cyrl-BA', 'sr-Latn-ME', 'en-US', 'fr' ],
|
|
|
|
|
'expectedMatch' => 'sr-Latn-ME',
|
|
|
|
|
],
|
|
|
|
|
'user >1 subtag, svg <=1 subtag' => [
|
|
|
|
|
'userPreferredLanguage' => 'sr-Latn-ME',
|
|
|
|
|
'svgLanguages' => [ 'de-DE', 'sr-Cyrl', 'sr-Latn', 'en-US', 'fr' ],
|
|
|
|
|
'expectedMatch' => null,
|
|
|
|
|
],
|
|
|
|
|
'ensure case-insensitive' => [
|
|
|
|
|
'userPreferredLanguage' => 'sr-latn',
|
|
|
|
|
'svgLanguages' => [ 'de-DE', 'sr-Cyrl', 'sr-Latn-ME', 'en-US', 'fr' ],
|
|
|
|
|
'expectedMatch' => 'sr-Latn-ME',
|
|
|
|
|
],
|
|
|
|
|
];
|
|
|
|
|
}
|
2013-08-28 23:09:07 +00:00
|
|
|
}
|