You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2025/12/16 08:48:21 UTC

svn commit: r1930620 - pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/xml

Author: tilman
Date: Tue Dec 16 08:48:21 2025
New Revision: 1930620

Log:
PDFBOX-5660: expand test coverage

Modified:
   pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java

Modified: pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java	Tue Dec 16 08:48:16 2025	(r1930619)
+++ pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java	Tue Dec 16 08:48:21 2025	(r1930620)
@@ -681,4 +681,50 @@ class DomXmpParserTest
                 () -> xmpParser.parse(s.getBytes(StandardCharsets.UTF_8)));
         assertEquals("No rdf description found in xmp", ex.getMessage());
     }
+
+    @Test
+    void testTextInsteadOfArray() throws XmpParsingException
+    {
+        String s = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n" +
+                    "<?xpacket begin=\"\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\n" +
+                    "<x:xmpmeta xmlns:x=\"adobe:ns:meta/\"\n" +
+                    "           x:xmptk=\"3.1-701\">\n" +
+                    "	<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n" +
+                    "		<rdf:Description xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n" +
+                    "		                 rdf:about=\"\">\n" +
+                    "			<dc:title>Title</dc:title>\n" +
+                    "		</rdf:Description>\n" +
+                    "	</rdf:RDF>\n" +
+                    "</x:xmpmeta><?xpacket end=\"w\"?>";
+        final DomXmpParser xmpParser = new DomXmpParser();
+        XmpParsingException ex = assertThrows(
+                XmpParsingException.class,
+                () -> xmpParser.parse(s.getBytes(StandardCharsets.UTF_8)));
+        assertEquals("Invalid array definition, expecting Alt and found Text [prefix=dc; name=title]", ex.getMessage());
+    }
+
+    @Test
+    void testPropertyNotDefined() throws XmpParsingException
+    {
+        // While "Fired" does exist as a type, it's not the correct syntax, the PDFLib XMP validator complains too.
+        String s = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n" +
+                    "<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>\n" +
+                    "<x:xmpmeta xmlns:x=\"adobe:ns:meta/\"\n" +
+                    "           x:xmptk=\"XMP toolkit 3.0-28, framework 1.6\">\n" +
+                    "	<rdf:RDF xmlns:iX=\"http://ns.adobe.com/iX/1.0/\"\n" +
+                    "	         xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n" +
+                    "		<rdf:Description xmlns:exif=\"http://ns.adobe.com/exif/1.0/\"\n" +
+                    "		                 rdf:about=\"uuid:d9974396-53ee-11d9-9542-81b7ec7f4613\">\n" +
+                    "			<exif:Flash rdf:parseType=\"Resource\">\n" +
+                    "				<exif:Fired>False</exif:Fired>\n" +
+                    "			</exif:Flash>\n" +
+                    "		</rdf:Description>\n" +
+                    "	</rdf:RDF>\n" +
+                    "</x:xmpmeta><?xpacket end='w'?>";
+        final DomXmpParser xmpParser = new DomXmpParser();
+        XmpParsingException ex = assertThrows(
+                XmpParsingException.class,
+                () -> xmpParser.parse(s.getBytes(StandardCharsets.UTF_8)));
+        assertEquals("Property 'Fired' not defined in http://ns.adobe.com/exif/1.0/", ex.getMessage());
+    }
 }