Author: veithen Date: Thu Jul 9 18:27:48 2009 New Revision: 792627 URL: http://svn.apache.org/viewvc?rev=792627&view=rev Log: Further increased the coverage of XMLStreamReaderComparator.
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/stax/XMLStreamReaderComparator.java Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/stax/XMLStreamReaderComparator.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/stax/XMLStreamReaderComparator.java?rev=792627&r1=792626&r2=792627&view=diff ============================================================================== --- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/stax/XMLStreamReaderComparator.java (original) +++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/stax/XMLStreamReaderComparator.java Thu Jul 9 18:27:48 2009 @@ -54,6 +54,12 @@ */ private final Set prefixes = new HashSet(); + /** + * Set collecting all namespace URIs seen in the document to be able to + * test {...@link NamespaceContext#getPrefix(String)}. + */ + private final Set namespaceURIs = new HashSet(); + public XMLStreamReaderComparator(XMLStreamReader expected, XMLStreamReader actual) { this.expected = expected; this.actual = actual; @@ -134,6 +140,18 @@ return assertSameResult(methodName, new Class[0], new Object[0]); } + private Set toPrefixSet(Iterator it) { + Set set = new HashSet(); + while (it.hasNext()) { + String prefix = (String)it.next(); + // TODO: Woodstox returns null instead of "" for the default namespace. + // This seems incorrect, but the javax.namespace.NamespaceContext specs are + // not very clear. + set.add(prefix == null ? "" : prefix); + } + return set; + } + private void compareNamespaceContexts(NamespaceContext expected, NamespaceContext actual) { for (Iterator it = prefixes.iterator(); it.hasNext(); ) { String prefix = (String)it.next(); @@ -141,6 +159,19 @@ assertEquals("Namespace URI for prefix '" + prefix + "' (" + getLocation() + ")", expected.getNamespaceURI(prefix), actual.getNamespaceURI(prefix)); } } + for (Iterator it = namespaceURIs.iterator(); it.hasNext(); ) { + String namespaceURI = (String)it.next(); + if (namespaceURI != null && namespaceURI.length() > 0) { + assertEquals( + "Prefix for namespace URI '" + namespaceURI + "' (" + getLocation() + ")", + expected.getPrefix(namespaceURI), + actual.getPrefix(namespaceURI)); + assertEquals( + "Prefixes for namespace URI '" + namespaceURI + "' (" + getLocation() + ")", + toPrefixSet(expected.getPrefixes(namespaceURI)), + toPrefixSet(actual.getPrefixes(namespaceURI))); + } + } } /** @@ -168,7 +199,7 @@ Object[] args = { Integer.valueOf(i) }; assertSameResult("getAttributeLocalName", paramTypes, args); assertSameResult("getAttributeName", paramTypes, args); - assertSameResult("getAttributeNamespace", paramTypes, args); + namespaceURIs.add(assertSameResult("getAttributeNamespace", paramTypes, args)); prefixes.add(assertSameResult("getAttributePrefix", paramTypes, args)); assertSameResult("getAttributeType", paramTypes, args); assertSameResult("getAttributeValue", paramTypes, args); @@ -182,15 +213,16 @@ Map actualNamespaces = new HashMap(); for (int i=0; i<namespaceCount.intValue(); i++) { String prefix = expected.getNamespacePrefix(i); - expectedNamespaces.put(prefix, - expected.getNamespaceURI(i)); + String namespaceURI = expected.getNamespaceURI(i); + expectedNamespaces.put(prefix, namespaceURI); actualNamespaces.put(actual.getNamespacePrefix(i), actual.getNamespaceURI(i)); prefixes.add(prefix); + namespaceURIs.add(namespaceURI); } assertEquals(expectedNamespaces, actualNamespaces); } - assertSameResult("getNamespaceURI"); + namespaceURIs.add(assertSameResult("getNamespaceURI")); assertSameResult("getPIData"); assertSameResult("getPITarget"); prefixes.add(assertSameResult("getPrefix"));