@@ -2,23 +2,47 @@ use std::fs;
2
2
use std:: path:: PathBuf ;
3
3
use std:: str:: FromStr ;
4
4
5
- use image:: { codecs:: png:: PngDecoder , ImageDecoder } ;
5
+ use image:: ImageDecoder ;
6
+
7
+ #[ cfg( feature = "png" ) ]
8
+ use image:: codecs:: png:: PngDecoder ;
9
+ #[ cfg( feature = "webp" ) ]
10
+ use image:: codecs:: webp:: WebPDecoder ;
6
11
7
12
extern crate glob;
8
13
extern crate image;
9
14
10
15
const XMP_PNG_PATH : & str = "tests/images/png/transparency/tp1n3p08_xmp.png" ;
11
- const EXPECTED_METADATA : & str = "<?xpacket begin='\u{feff} ' id='W5M0MpCehiHzreSzNTczkc9d'?>\n <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 13.25'>\n <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>\n \n <rdf:Description rdf:about=''\n xmlns:dc='http://purl.org/dc/elements/1.1/'>\n <dc:subject>\n <rdf:Bag>\n <rdf:li>sunset, mountains, nature</rdf:li>\n </rdf:Bag>\n </dc:subject>\n </rdf:Description>\n </rdf:RDF>\n </x:xmpmeta>\n <?xpacket end='r'?>" ;
16
+ const EXPECTED_PNG_METADATA : & str = "<?xpacket begin='\u{feff} ' id='W5M0MpCehiHzreSzNTczkc9d'?>\n <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 13.25'>\n <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>\n \n <rdf:Description rdf:about=''\n xmlns:dc='http://purl.org/dc/elements/1.1/'>\n <dc:subject>\n <rdf:Bag>\n <rdf:li>sunset, mountains, nature</rdf:li>\n </rdf:Bag>\n </dc:subject>\n </rdf:Description>\n </rdf:RDF>\n </x:xmpmeta>\n <?xpacket end='r'?>" ;
17
+
18
+ const XMP_WEBP_PATH : & str = "tests/images/webp/lossless_images/simple_xmp.webp" ;
19
+ const EXPECTED_WEBP_METADATA : & str = "<?xpacket begin='\u{feff} ' id='W5M0MpCehiHzreSzNTczkc9d'?>\n <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 13.25'>\n <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>\n \n <rdf:Description rdf:about=''\n xmlns:dc='http://purl.org/dc/elements/1.1/'>\n <dc:subject>\n <rdf:Bag>\n <rdf:li>sunset, mountains, nature</rdf:li>\n </rdf:Bag>\n </dc:subject>\n </rdf:Description>\n </rdf:RDF>\n </x:xmpmeta>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n <?xpacket end='w'?>" ;
12
20
13
21
#[ test]
22
+ #[ cfg( feature = "png" ) ]
14
23
fn test_read_xmp_png ( ) -> Result < ( ) , image:: ImageError > {
15
24
let img_path = PathBuf :: from_str ( XMP_PNG_PATH ) . unwrap ( ) ;
16
25
17
26
let data = fs:: read ( img_path) ?;
18
27
let mut png_decoder = PngDecoder :: new ( std:: io:: Cursor :: new ( data) ) ?;
19
28
let metadata = png_decoder. xmp_metadata ( ) ?;
20
29
assert ! ( metadata. is_some( ) ) ;
21
- assert_eq ! ( EXPECTED_METADATA . as_bytes( ) , metadata. unwrap( ) ) ;
30
+ assert_eq ! ( EXPECTED_PNG_METADATA . as_bytes( ) , metadata. unwrap( ) ) ;
31
+
32
+ Ok ( ( ) )
33
+ }
34
+
35
+ #[ test]
36
+ #[ cfg( feature = "webp" ) ]
37
+ fn test_read_xmp_webp ( ) -> Result < ( ) , image:: ImageError > {
38
+ let img_path = PathBuf :: from_str ( XMP_WEBP_PATH ) . unwrap ( ) ;
39
+
40
+ let data = fs:: read ( img_path) ?;
41
+ let mut webp_decoder = WebPDecoder :: new ( std:: io:: Cursor :: new ( data) ) ?;
42
+ let metadata = webp_decoder. xmp_metadata ( ) ?;
43
+
44
+ assert ! ( metadata. is_some( ) ) ;
45
+ assert_eq ! ( EXPECTED_WEBP_METADATA . as_bytes( ) , metadata. unwrap( ) ) ;
22
46
23
47
Ok ( ( ) )
24
48
}
0 commit comments