Author: veithen Date: Mon Sep 27 20:31:51 2010 New Revision: 1001900 URL: http://svn.apache.org/viewvc?rev=1001900&view=rev Log: More thoroughly test whether the XMLStreamReader methods throw IllegalStateException as required by the StAX specs.
Added: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetLocalNameIllegalStateExceptionTestCase.java - copied, changed from r1001890, webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetLocalNameOnStartDocumentTestCase.java webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNameIllegalStateExceptionTestCase.java (with props) webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNamespaceURIIllegalStateExceptionTestCase.java (with props) webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetPrefixIllegalStateExceptionTestCase.java (with props) webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/IllegalStateExceptionTestCase.java (with props) webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/org/apache/axiom/util/stax/dialect/alleventtypes.xml (with props) Removed: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetLocalNameOnStartDocumentTestCase.java Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTest.java Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTest.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTest.java?rev=1001900&r1=1001899&r2=1001900&view=diff ============================================================================== --- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTest.java (original) +++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTest.java Mon Sep 27 20:31:51 2010 @@ -23,6 +23,7 @@ import java.util.Properties; import javax.xml.stream.FactoryConfigurationError; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLOutputFactory; +import javax.xml.stream.XMLStreamConstants; import junit.framework.TestSuite; @@ -52,8 +53,51 @@ public class DialectTest extends TestSui addDialectTest(new GetEncodingFromDetectionTestCase("UnicodeLittleUnmarked", "UTF-16LE")); addDialectTest(new GetEncodingTestCase()); addDialectTest(new GetEncodingWithCharacterStreamTestCase()); - addDialectTest(new GetLocalNameOnStartDocumentTestCase()); + addDialectTest(new GetLocalNameIllegalStateExceptionTestCase(XMLStreamConstants.START_ELEMENT, false)); + addDialectTest(new GetLocalNameIllegalStateExceptionTestCase(XMLStreamConstants.END_ELEMENT, false)); + addDialectTest(new GetLocalNameIllegalStateExceptionTestCase(XMLStreamConstants.PROCESSING_INSTRUCTION, true)); + addDialectTest(new GetLocalNameIllegalStateExceptionTestCase(XMLStreamConstants.CHARACTERS, true)); + addDialectTest(new GetLocalNameIllegalStateExceptionTestCase(XMLStreamConstants.COMMENT, true)); + addDialectTest(new GetLocalNameIllegalStateExceptionTestCase(XMLStreamConstants.SPACE, true)); + addDialectTest(new GetLocalNameIllegalStateExceptionTestCase(XMLStreamConstants.START_DOCUMENT, true)); + addDialectTest(new GetLocalNameIllegalStateExceptionTestCase(XMLStreamConstants.END_DOCUMENT, true)); + addDialectTest(new GetLocalNameIllegalStateExceptionTestCase(XMLStreamConstants.ENTITY_REFERENCE, false)); + addDialectTest(new GetLocalNameIllegalStateExceptionTestCase(XMLStreamConstants.DTD, true)); + addDialectTest(new GetLocalNameIllegalStateExceptionTestCase(XMLStreamConstants.CDATA, true)); + addDialectTest(new GetNameIllegalStateExceptionTestCase(XMLStreamConstants.START_ELEMENT, false)); + addDialectTest(new GetNameIllegalStateExceptionTestCase(XMLStreamConstants.END_ELEMENT, false)); + addDialectTest(new GetNameIllegalStateExceptionTestCase(XMLStreamConstants.PROCESSING_INSTRUCTION, true)); + addDialectTest(new GetNameIllegalStateExceptionTestCase(XMLStreamConstants.CHARACTERS, true)); + addDialectTest(new GetNameIllegalStateExceptionTestCase(XMLStreamConstants.COMMENT, true)); + addDialectTest(new GetNameIllegalStateExceptionTestCase(XMLStreamConstants.SPACE, true)); + addDialectTest(new GetNameIllegalStateExceptionTestCase(XMLStreamConstants.START_DOCUMENT, true)); + addDialectTest(new GetNameIllegalStateExceptionTestCase(XMLStreamConstants.END_DOCUMENT, true)); + addDialectTest(new GetNameIllegalStateExceptionTestCase(XMLStreamConstants.ENTITY_REFERENCE, true)); + addDialectTest(new GetNameIllegalStateExceptionTestCase(XMLStreamConstants.DTD, true)); + addDialectTest(new GetNameIllegalStateExceptionTestCase(XMLStreamConstants.CDATA, true)); addDialectTest(new GetNamespaceContextImplicitNamespacesTestCase()); + addDialectTest(new GetNamespaceURIIllegalStateExceptionTestCase(XMLStreamConstants.START_ELEMENT, false)); + addDialectTest(new GetNamespaceURIIllegalStateExceptionTestCase(XMLStreamConstants.END_ELEMENT, false)); + addDialectTest(new GetNamespaceURIIllegalStateExceptionTestCase(XMLStreamConstants.PROCESSING_INSTRUCTION, true)); + addDialectTest(new GetNamespaceURIIllegalStateExceptionTestCase(XMLStreamConstants.CHARACTERS, true)); + addDialectTest(new GetNamespaceURIIllegalStateExceptionTestCase(XMLStreamConstants.COMMENT, true)); + addDialectTest(new GetNamespaceURIIllegalStateExceptionTestCase(XMLStreamConstants.SPACE, true)); + addDialectTest(new GetNamespaceURIIllegalStateExceptionTestCase(XMLStreamConstants.START_DOCUMENT, true)); + addDialectTest(new GetNamespaceURIIllegalStateExceptionTestCase(XMLStreamConstants.END_DOCUMENT, true)); + addDialectTest(new GetNamespaceURIIllegalStateExceptionTestCase(XMLStreamConstants.ENTITY_REFERENCE, true)); + addDialectTest(new GetNamespaceURIIllegalStateExceptionTestCase(XMLStreamConstants.DTD, true)); + addDialectTest(new GetNamespaceURIIllegalStateExceptionTestCase(XMLStreamConstants.CDATA, true)); + addDialectTest(new GetPrefixIllegalStateExceptionTestCase(XMLStreamConstants.START_ELEMENT, false)); + addDialectTest(new GetPrefixIllegalStateExceptionTestCase(XMLStreamConstants.END_ELEMENT, false)); + addDialectTest(new GetPrefixIllegalStateExceptionTestCase(XMLStreamConstants.PROCESSING_INSTRUCTION, true)); + addDialectTest(new GetPrefixIllegalStateExceptionTestCase(XMLStreamConstants.CHARACTERS, true)); + addDialectTest(new GetPrefixIllegalStateExceptionTestCase(XMLStreamConstants.COMMENT, true)); + addDialectTest(new GetPrefixIllegalStateExceptionTestCase(XMLStreamConstants.SPACE, true)); + addDialectTest(new GetPrefixIllegalStateExceptionTestCase(XMLStreamConstants.START_DOCUMENT, true)); + addDialectTest(new GetPrefixIllegalStateExceptionTestCase(XMLStreamConstants.END_DOCUMENT, true)); + addDialectTest(new GetPrefixIllegalStateExceptionTestCase(XMLStreamConstants.ENTITY_REFERENCE, true)); + addDialectTest(new GetPrefixIllegalStateExceptionTestCase(XMLStreamConstants.DTD, true)); + addDialectTest(new GetPrefixIllegalStateExceptionTestCase(XMLStreamConstants.CDATA, true)); addDialectTest(new GetPrefixWithNoPrefixTestCase()); addDialectTest(new GetTextInPrologTestCase()); addDialectTest(new GetVersionTestCase()); Copied: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetLocalNameIllegalStateExceptionTestCase.java (from r1001890, webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetLocalNameOnStartDocumentTestCase.java) URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetLocalNameIllegalStateExceptionTestCase.java?p2=webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetLocalNameIllegalStateExceptionTestCase.java&p1=webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetLocalNameOnStartDocumentTestCase.java&r1=1001890&r2=1001900&rev=1001900&view=diff ============================================================================== --- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetLocalNameOnStartDocumentTestCase.java (original) +++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetLocalNameIllegalStateExceptionTestCase.java Mon Sep 27 20:31:51 2010 @@ -18,20 +18,15 @@ */ package org.apache.axiom.util.stax.dialect; -import java.io.StringReader; - -import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; -public class GetLocalNameOnStartDocumentTestCase extends DialectTestCase { - protected void runTest() throws Throwable { - XMLInputFactory factory = newNormalizedXMLInputFactory(); - XMLStreamReader reader = factory.createXMLStreamReader(new StringReader("<root/>")); - try { - reader.getLocalName(); - fail("Expected IllegalStateException"); - } catch (IllegalStateException ex) { - // Expected - } +public class GetLocalNameIllegalStateExceptionTestCase extends IllegalStateExceptionTestCase { + public GetLocalNameIllegalStateExceptionTestCase(int event, boolean expectException) { + super(event, expectException); + } + + protected void invoke(XMLStreamReader reader) throws XMLStreamException { + reader.getLocalName(); } } Added: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNameIllegalStateExceptionTestCase.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNameIllegalStateExceptionTestCase.java?rev=1001900&view=auto ============================================================================== --- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNameIllegalStateExceptionTestCase.java (added) +++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNameIllegalStateExceptionTestCase.java Mon Sep 27 20:31:51 2010 @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.axiom.util.stax.dialect; + +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; + +public class GetNameIllegalStateExceptionTestCase extends IllegalStateExceptionTestCase { + public GetNameIllegalStateExceptionTestCase(int event, boolean expectException) { + super(event, expectException); + } + + protected void invoke(XMLStreamReader reader) throws XMLStreamException { + reader.getName(); + } +} Propchange: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNameIllegalStateExceptionTestCase.java ------------------------------------------------------------------------------ svn:eol-style = native Added: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNamespaceURIIllegalStateExceptionTestCase.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNamespaceURIIllegalStateExceptionTestCase.java?rev=1001900&view=auto ============================================================================== --- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNamespaceURIIllegalStateExceptionTestCase.java (added) +++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNamespaceURIIllegalStateExceptionTestCase.java Mon Sep 27 20:31:51 2010 @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.axiom.util.stax.dialect; + +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; + +public class GetNamespaceURIIllegalStateExceptionTestCase extends IllegalStateExceptionTestCase { + public GetNamespaceURIIllegalStateExceptionTestCase(int event, boolean expectException) { + super(event, expectException); + } + + protected void invoke(XMLStreamReader reader) throws XMLStreamException { + reader.getNamespaceURI(); + } +} Propchange: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNamespaceURIIllegalStateExceptionTestCase.java ------------------------------------------------------------------------------ svn:eol-style = native Added: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetPrefixIllegalStateExceptionTestCase.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetPrefixIllegalStateExceptionTestCase.java?rev=1001900&view=auto ============================================================================== --- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetPrefixIllegalStateExceptionTestCase.java (added) +++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetPrefixIllegalStateExceptionTestCase.java Mon Sep 27 20:31:51 2010 @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.axiom.util.stax.dialect; + +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; + +public class GetPrefixIllegalStateExceptionTestCase extends IllegalStateExceptionTestCase { + public GetPrefixIllegalStateExceptionTestCase(int event, boolean expectException) { + super(event, expectException); + } + + protected void invoke(XMLStreamReader reader) throws XMLStreamException { + reader.getPrefix(); + } +} Propchange: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetPrefixIllegalStateExceptionTestCase.java ------------------------------------------------------------------------------ svn:eol-style = native Added: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/IllegalStateExceptionTestCase.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/IllegalStateExceptionTestCase.java?rev=1001900&view=auto ============================================================================== --- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/IllegalStateExceptionTestCase.java (added) +++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/IllegalStateExceptionTestCase.java Mon Sep 27 20:31:51 2010 @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.axiom.util.stax.dialect; + +import java.io.InputStream; + +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; + +import org.apache.axiom.util.stax.XMLEventUtils; + +public abstract class IllegalStateExceptionTestCase extends DialectTestCase { + private final int event; + private final boolean expectException; + + public IllegalStateExceptionTestCase(int event, boolean expectException) { + this.event = event; + this.expectException = expectException; + setName(getClass().getName() + " [" + XMLEventUtils.getEventTypeString(event) + "]"); + } + + protected final void runTest() throws Throwable { + XMLInputFactory factory = getDialect().enableCDataReporting(newNormalizedXMLInputFactory()); + factory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, Boolean.FALSE); + InputStream in = IllegalStateExceptionTestCase.class.getResourceAsStream("alleventtypes.xml"); + try { + XMLStreamReader reader = factory.createXMLStreamReader(in); + while (true) { + if (reader.getEventType() == event) { + break; + } else if (reader.hasNext()) { + reader.next(); + } else { + fail("Internal error: didn't encounter event " + event); + } + } + boolean exception; + try { + invoke(reader); + exception = false; + } catch (IllegalStateException ex) { + exception = true; + } + if (exception && !expectException) { + fail("Didn't expect IllegalStateException"); + } else if (!exception && expectException) { + fail("Expected IllegalStateException"); + } + } finally { + in.close(); + } + } + + protected abstract void invoke(XMLStreamReader reader) throws XMLStreamException; +} Propchange: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/IllegalStateExceptionTestCase.java ------------------------------------------------------------------------------ svn:eol-style = native Added: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/org/apache/axiom/util/stax/dialect/alleventtypes.xml URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/org/apache/axiom/util/stax/dialect/alleventtypes.xml?rev=1001900&view=auto ============================================================================== --- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/org/apache/axiom/util/stax/dialect/alleventtypes.xml (added) +++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/org/apache/axiom/util/stax/dialect/alleventtypes.xml Mon Sep 27 20:31:51 2010 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding ="UTF-8"?> +<!DOCTYPE root [ + <!ELEMENT root (child*)> + <!ELEMENT child (#PCDATA)> + <!ENTITY test "test"> +]> +<root> + <child>X<!--X--><?x?>&test;<![CDATA[X]]></child> +</root> \ No newline at end of file Propchange: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/org/apache/axiom/util/stax/dialect/alleventtypes.xml ------------------------------------------------------------------------------ svn:eol-style = native