Skip to content

Commit

Permalink
Add (failing) unit test for #184
Browse files Browse the repository at this point in the history
  • Loading branch information
cowtowncoder committed Jan 14, 2024
1 parent b853557 commit 747837f
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package org.codehaus.stax.test.vstream;

import javax.xml.stream.*;

import org.codehaus.stax.test.SimpleResolver;

/**
* Currently failing case(s) of {@code ExternalSubsetTest}
*/
public class ExternalSubset184Test
extends BaseVStreamTest
{
public void testNotationReferenceInInternalSubset()
throws XMLStreamException
{
String EXT_ENTITY_VALUE = "Overridden value";
String XML = "<!DOCTYPE root SYSTEM 'myurl' [ <!ENTITY gr2 SYSTEM \"gr2\" NDATA IMAGE> " +
" <!ENTITY extEnt '"+EXT_ENTITY_VALUE+"'>" + " ]>"
+"<root>&extEnt;</root>";

String EXT_SUBSET =
"<!ELEMENT root (#PCDATA)>\n"
+"<!ENTITY extEnt 'Original DTD value'>\n" +
"<!NOTATION IMAGE PUBLIC \"-//ES//NOTATION image format//EN\" \n" +
" \"http://www.test.com/xml/common/dtd/notation/image\">";

XMLStreamReader sr = getReader(XML, true,
new SimpleResolver(EXT_SUBSET));
assertTokenType(DTD, sr.next());
assertTokenType(START_ELEMENT, sr.next());
assertEquals("root", sr.getLocalName());
assertTokenType(CHARACTERS, sr.next());
assertEquals(EXT_ENTITY_VALUE, getAndVerifyText(sr));
assertTokenType(END_ELEMENT, sr.next());
sr.close();
}

/*
////////////////////////////////////////
// Private methods, other
////////////////////////////////////////
*/

private XMLStreamReader getReader(String contents, boolean nsAware,
XMLResolver resolver)
throws XMLStreamException
{
XMLInputFactory f = getInputFactory();
setCoalescing(f, false); // shouldn't really matter
setNamespaceAware(f, nsAware);
setSupportDTD(f, true);
setValidating(f, true);
// This shouldn't be required but let's play it safe:
setSupportExternalEntities(f, true);
setResolver(f, resolver);
return constructStreamReader(f, contents);
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
*
* @author Tatu Saloranta
*/
public class TestExternalSubset
public class ExternalSubsetTest
extends BaseVStreamTest
{
public void testSimpleValidExternalSubset()
Expand Down Expand Up @@ -56,6 +56,29 @@ public void testEntityInExternalSubset()
sr.close();
}

public void testParameterEntityOverrideInInternalSubset()
throws XMLStreamException
{
String XML = "<!DOCTYPE root SYSTEM 'myurl' [ <!ENTITY % PATRR \"image CDATA #IMPLIED\"> " +
" ]>" +
"<root id=\"id1\" image=\"img1\">Some text</root>";

String EXT_SUBSET =
"<!ENTITY % PATRR \"photo CDATA #IMPLIED\">\n" +
"<!ELEMENT root (#PCDATA)>\n" +
"<!ATTLIST root id CDATA #REQUIRED\n" +
" %PATRR; >";

XMLStreamReader sr = getReader(XML, true,
new SimpleResolver(EXT_SUBSET));
assertTokenType(DTD, sr.next());
assertTokenType(START_ELEMENT, sr.next());
assertEquals("root", sr.getLocalName());
assertTokenType(CHARACTERS, sr.next());
assertTokenType(END_ELEMENT, sr.next());
sr.close();
}

/*
////////////////////////////////////////
// Private methods, other
Expand Down

0 comments on commit 747837f

Please sign in to comment.