8 protected function setUp() {
26 if ( !is_string( $xmp ) || !is_array( $expected ) ) {
27 throw new Exception(
"Invalid data provided to " . __METHOD__ );
30 $reader->
parse( $xmp );
31 $this->assertEquals( $expected, $reader->getResults(), $info, 0.0000000001 );
35 $xmpPath = __DIR__ .
'/../../data/xmp/';
43 array(
'1',
'parseType=Resource test' ),
44 array(
'2',
'Structure with mixed attribute and element props' ),
45 array(
'3',
'Extra qualifiers (that should be ignored)' ),
46 array(
'3-invalid',
'Test ignoring qualifiers that look like normal props' ),
47 array(
'4',
'Flash as qualifier' ),
48 array(
'5',
'Flash as qualifier 2' ),
49 array(
'6',
'Multiple rdf:Description' ),
50 array(
'7',
'Generic test of several property types' ),
51 array(
'flash',
'Test of Flash property' ),
52 array(
'invalid-child-not-struct',
'Test child props not in struct or ignored' ),
53 array(
'no-recognized-props',
'Test namespace and no recognized props' ),
54 array(
'no-namespace',
'Test non-namespaced attributes are ignored' ),
55 array(
'bag-for-seq',
"Allow bag's instead of seq's. (bug 27105)" ),
56 array(
'utf16BE',
'UTF-16BE encoding' ),
57 array(
'utf16LE',
'UTF-16LE encoding' ),
58 array(
'utf32BE',
'UTF-32BE encoding' ),
59 array(
'utf32LE',
'UTF-32LE encoding' ),
60 array(
'xmpExt',
'Extended XMP missing second part' ),
61 array(
'gps',
'Handling of exif GPS parameters in XMP' ),
64 $xmpFiles[] =
array(
'doctype-included',
'XMP includes doctype' );
66 foreach ( $xmpFiles
as $file ) {
67 $xmp = file_get_contents( $xmpPath .
$file[0] .
'.xmp' );
72 include $xmpPath .
$file[0] .
'.result.php';
88 $xmpPath = __DIR__ .
'/../../data/xmp/';
89 $standardXMP = file_get_contents( $xmpPath .
'xmpExt.xmp' );
90 $extendedXMP = file_get_contents( $xmpPath .
'xmpExt2.xmp' );
92 $md5sum =
'28C74E0AC2D796886759006FBE2E57B7';
93 $length = pack(
'N', strlen( $extendedXMP ) );
94 $offset = pack(
'N', 0 );
95 $extendedPacket = $md5sum . $length . $offset . $extendedXMP;
98 $reader->parse( $standardXMP );
99 $reader->parseExtended( $extendedPacket );
100 $actual = $reader->getResults();
104 'DigitalZoomRatio' =>
'0/10',
110 $this->assertEquals( $expected, $actual );
120 $xmpPath = __DIR__ .
'/../../data/xmp/';
121 $standardXMP = file_get_contents( $xmpPath .
'xmpExt.xmp' );
122 $extendedXMP = file_get_contents( $xmpPath .
'xmpExt2.xmp' );
124 $md5sum =
'28C74E0AC2D796886759006FBE2E57B9';
125 $length = pack(
'N', strlen( $extendedXMP ) );
126 $offset = pack(
'N', 0 );
127 $extendedPacket = $md5sum . $length . $offset . $extendedXMP;
130 $reader->parse( $standardXMP );
131 $reader->parseExtended( $extendedPacket );
132 $actual = $reader->getResults();
136 'DigitalZoomRatio' =>
'0/10',
141 $this->assertEquals( $expected, $actual );
151 $xmpPath = __DIR__ .
'/../../data/xmp/';
152 $standardXMP = file_get_contents( $xmpPath .
'xmpExt.xmp' );
153 $extendedXMP = file_get_contents( $xmpPath .
'xmpExt2.xmp' );
155 $md5sum =
'28C74E0AC2D796886759006FBE2E57B7';
156 $length = pack(
'N', strlen( $extendedXMP ) );
157 $offset = pack(
'N', 2048 );
158 $extendedPacket = $md5sum . $length . $offset . $extendedXMP;
161 $reader->parse( $standardXMP );
162 $reader->parseExtended( $extendedPacket );
163 $actual = $reader->getResults();
167 'DigitalZoomRatio' =>
'0/10',
172 $this->assertEquals( $expected, $actual );
182 $xmpPath = __DIR__ .
'/../../data/xmp/';
183 $file = fopen( $xmpPath .
'doctype-included.xmp',
'rb' );
187 $chunk = fread(
$file, 10 );
188 $valid = $reader->parse( $chunk, feof(
$file ) );
189 }
while ( !feof(
$file ) );
190 $this->assertFalse( $valid,
'Check that doctype is detected in fragmented XML' );
193 $reader->getResults(),
194 'Check that doctype is detected in fragmented XML'
200 $file = fopen( $xmpPath .
'doctype-not-included.xmp',
'rb' );
204 $chunk = fread(
$file, 10 );
205 $valid = $reader->parse( $chunk, feof(
$file ) );
206 }
while ( !feof(
$file ) );
209 'Check for false-positive detecting doctype in fragmented XML'
214 'DigitalZoomRatio' =>
'0/10',
218 $reader->getResults(),
219 'Check that doctype is detected in fragmented XML'