MediaWiki
REL1_30
JpegMetadataExtractorTest.php
Go to the documentation of this file.
1
<?php
12
class
JpegMetadataExtractorTest
extends
MediaWikiTestCase
{
13
14
protected
$filePath
;
15
16
protected
function
setUp
() {
17
parent::setUp();
18
19
$this->filePath = __DIR__ .
'/../../data/media/'
;
20
}
21
30
public
function
testUtf8Comment
( $file ) {
31
$res
=
JpegMetadataExtractor::segmentSplitter
( $this->filePath . $file );
32
$this->assertEquals( [
'UTF-8 JPEG Comment — ¼'
],
$res
[
'COM'
] );
33
}
34
35
public
static
function
provideUtf8Comment
() {
36
return
[
37
[
'jpeg-comment-utf.jpg'
],
38
[
'jpeg-padding-even.jpg'
],
39
[
'jpeg-padding-odd.jpg'
],
40
];
41
}
42
44
public
function
testIso88591Comment
() {
45
$res
=
JpegMetadataExtractor::segmentSplitter
( $this->filePath .
'jpeg-comment-iso8859-1.jpg'
);
46
$this->assertEquals( [
'ISO-8859-1 JPEG Comment - ¼'
],
$res
[
'COM'
] );
47
}
48
53
public
function
testBinaryCommentStripped
() {
54
$res
=
JpegMetadataExtractor::segmentSplitter
( $this->filePath .
'jpeg-comment-binary.jpg'
);
55
$this->assertEmpty(
$res
[
'COM'
] );
56
}
57
58
/* Very rarely a file can have multiple comments.
59
* Order of comments is based on order inside the file.
60
*/
61
public
function
testMultipleComment
() {
62
$res
=
JpegMetadataExtractor::segmentSplitter
( $this->filePath .
'jpeg-comment-multiple.jpg'
);
63
$this->assertEquals( [
'foo'
,
'bar'
],
$res
[
'COM'
] );
64
}
65
66
public
function
testXMPExtraction
() {
67
$res
=
JpegMetadataExtractor::segmentSplitter
( $this->filePath .
'jpeg-xmp-psir.jpg'
);
68
$expected = file_get_contents( $this->filePath .
'jpeg-xmp-psir.xmp'
);
69
$this->assertEquals( $expected,
$res
[
'XMP'
] );
70
}
71
72
public
function
testPSIRExtraction
() {
73
$res
=
JpegMetadataExtractor::segmentSplitter
( $this->filePath .
'jpeg-xmp-psir.jpg'
);
74
$expected =
'50686f746f73686f7020332e30003842494d04040000000'
75
.
'000181c02190004746573741c02190003666f6f1c020000020004'
;
76
$this->assertEquals( $expected, bin2hex(
$res
[
'PSIR'
][0] ) );
77
}
78
79
public
function
testXMPExtractionAltAppId
() {
80
$res
=
JpegMetadataExtractor::segmentSplitter
( $this->filePath .
'jpeg-xmp-alt.jpg'
);
81
$expected = file_get_contents( $this->filePath .
'jpeg-xmp-psir.xmp'
);
82
$this->assertEquals( $expected,
$res
[
'XMP'
] );
83
}
84
85
public
function
testIPTCHashComparisionNoHash
() {
86
$segments =
JpegMetadataExtractor::segmentSplitter
( $this->filePath .
'jpeg-xmp-psir.jpg'
);
87
$res
=
JpegMetadataExtractor::doPSIR
( $segments[
'PSIR'
][0] );
88
89
$this->assertEquals(
'iptc-no-hash'
,
$res
);
90
}
91
92
public
function
testIPTCHashComparisionBadHash
() {
93
$segments =
JpegMetadataExtractor::segmentSplitter
( $this->filePath .
'jpeg-iptc-bad-hash.jpg'
);
94
$res
=
JpegMetadataExtractor::doPSIR
( $segments[
'PSIR'
][0] );
95
96
$this->assertEquals(
'iptc-bad-hash'
,
$res
);
97
}
98
99
public
function
testIPTCHashComparisionGoodHash
() {
100
$segments =
JpegMetadataExtractor::segmentSplitter
( $this->filePath .
'jpeg-iptc-good-hash.jpg'
);
101
$res
=
JpegMetadataExtractor::doPSIR
( $segments[
'PSIR'
][0] );
102
103
$this->assertEquals(
'iptc-good-hash'
,
$res
);
104
}
105
106
public
function
testExifByteOrder
() {
107
$res
=
JpegMetadataExtractor::segmentSplitter
( $this->filePath .
'exif-user-comment.jpg'
);
108
$expected =
'BE'
;
109
$this->assertEquals( $expected,
$res
[
'byteOrder'
] );
110
}
111
}
JpegMetadataExtractorTest
Definition
JpegMetadataExtractorTest.php:12
JpegMetadataExtractorTest\testIPTCHashComparisionGoodHash
testIPTCHashComparisionGoodHash()
Definition
JpegMetadataExtractorTest.php:99
JpegMetadataExtractorTest\testIso88591Comment
testIso88591Comment()
The file is iso-8859-1, but it should get auto converted.
Definition
JpegMetadataExtractorTest.php:44
JpegMetadataExtractorTest\testExifByteOrder
testExifByteOrder()
Definition
JpegMetadataExtractorTest.php:106
JpegMetadataExtractorTest\testIPTCHashComparisionBadHash
testIPTCHashComparisionBadHash()
Definition
JpegMetadataExtractorTest.php:92
JpegMetadataExtractorTest\setUp
setUp()
Definition
JpegMetadataExtractorTest.php:16
JpegMetadataExtractorTest\testXMPExtraction
testXMPExtraction()
Definition
JpegMetadataExtractorTest.php:66
JpegMetadataExtractorTest\testMultipleComment
testMultipleComment()
Definition
JpegMetadataExtractorTest.php:61
JpegMetadataExtractorTest\testIPTCHashComparisionNoHash
testIPTCHashComparisionNoHash()
Definition
JpegMetadataExtractorTest.php:85
JpegMetadataExtractorTest\testUtf8Comment
testUtf8Comment( $file)
We also use this test to test padding bytes don't screw stuff up.
Definition
JpegMetadataExtractorTest.php:30
JpegMetadataExtractorTest\testBinaryCommentStripped
testBinaryCommentStripped()
Comment values that are non-textual (random binary junk) should not be shown.
Definition
JpegMetadataExtractorTest.php:53
JpegMetadataExtractorTest\testXMPExtractionAltAppId
testXMPExtractionAltAppId()
Definition
JpegMetadataExtractorTest.php:79
JpegMetadataExtractorTest\$filePath
$filePath
Definition
JpegMetadataExtractorTest.php:14
JpegMetadataExtractorTest\provideUtf8Comment
static provideUtf8Comment()
Definition
JpegMetadataExtractorTest.php:35
JpegMetadataExtractorTest\testPSIRExtraction
testPSIRExtraction()
Definition
JpegMetadataExtractorTest.php:72
JpegMetadataExtractor\doPSIR
static doPSIR( $app13)
This reads the photoshop image resource.
Definition
JpegMetadataExtractor.php:205
JpegMetadataExtractor\segmentSplitter
static segmentSplitter( $filename)
Function to extract metadata segments of interest from jpeg files based on GIFMetadataExtractor.
Definition
JpegMetadataExtractor.php:50
MediaWikiTestCase
Definition
MediaWikiTestCase.php:15
$res
$res
Definition
database.txt:21
tests
phpunit
includes
media
JpegMetadataExtractorTest.php
Generated on Mon Nov 25 2024 15:43:52 for MediaWiki by
1.10.0