Package de.odysseus.staxon.event

Source Code of de.odysseus.staxon.event.SimpleXMLEventFactoryTest

/*
* Copyright 2011, 2012 Odysseus Software GmbH
*
* Licensed 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 de.odysseus.staxon.event;

import java.io.StringWriter;
import java.util.Arrays;

import javax.xml.namespace.QName;
import javax.xml.stream.Location;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.Comment;
import javax.xml.stream.events.EndDocument;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.EntityReference;
import javax.xml.stream.events.Namespace;
import javax.xml.stream.events.ProcessingInstruction;
import javax.xml.stream.events.StartDocument;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;

import junit.framework.Assert;

import org.junit.Test;

public class SimpleXMLEventFactoryTest {
  static final Location LOCATION = new Location() {
    @Override
    public String getSystemId() {
      return null;
    }
    @Override
    public String getPublicId() {
      return null;
    }
    @Override
    public int getLineNumber() {
      return 0;
    }
    @Override
    public int getColumnNumber() {
      return 0;
    }
    @Override
    public int getCharacterOffset() {
      return 0;
    }
  };
 
  SimpleXMLEventFactory factory = new SimpleXMLEventFactory(LOCATION);

  private void verify(XMLEvent event, int expectedEventType, String expectedWriteAsEncodedUnicode) throws XMLStreamException {
    Assert.assertEquals(expectedEventType, event.getEventType());
    Assert.assertNull(event.getSchemaType());
    Assert.assertSame(LOCATION, event.getLocation());
    StringWriter stringWriter = new StringWriter();
    event.writeAsEncodedUnicode(stringWriter);
    Assert.assertEquals(expectedWriteAsEncodedUnicode, stringWriter.toString());
  }

  @Test
  public void testCreateAttribute_Prefix_NamespaceURI_LocalName_Value() throws XMLStreamException {
    Attribute event = factory.createAttribute("foo", "http://foo", "bar", "foobar");
    verify(event, XMLStreamConstants.ATTRIBUTE, "foo:bar=\"foobar\"");
  }

  @Test
  public void testCreateAttribute_LocalName_Value() throws XMLStreamException {
    Attribute event = factory.createAttribute("foo", "bar");
    verify(event, XMLStreamConstants.ATTRIBUTE, "foo=\"bar\"");
  }

  @Test
  public void testCreateAttribute_Name_Value() throws XMLStreamException {
    Attribute event = factory.createAttribute(new QName("http://foo", "bar", "foo"), "foobar");
    verify(event, XMLStreamConstants.ATTRIBUTE, "foo:bar=\"foobar\"");
  }

  @Test
  public void testCreateNamespace_NamespaceURI() throws XMLStreamException {
    Namespace event = factory.createNamespace("http://foo");
    verify(event, XMLStreamConstants.NAMESPACE, "xmlns=\"http://foo\"");
  }

  @Test
  public void testCreateNamespace_Prefix_NamespaceURI() throws XMLStreamException {
    Namespace event = factory.createNamespace("foo", "http://foo");
    verify(event, XMLStreamConstants.NAMESPACE, "xmlns:foo=\"http://foo\"");
  }

  @Test
  public void testCreateStartElement_Name_Attributes_Namespaces() throws XMLStreamException {
    Namespace namespace = factory.createNamespace("foo", "http://foo");
    Attribute attribute = factory.createAttribute("foo", "bar");
    StartElement event = factory.createStartElement(new QName("http://foo", "bar", "foo"), Arrays.asList(attribute).iterator(), Arrays.asList(namespace).iterator());
    verify(event, XMLStreamConstants.START_ELEMENT, "<foo:bar xmlns:foo=\"http://foo\" foo=\"bar\">");
  }

  @Test
  public void testCreateStartElement_Prefix_NamespaceURI_LocalName() throws XMLStreamException {
    StartElement event = factory.createStartElement("foo", "http://foo", "bar");
    verify(event, XMLStreamConstants.START_ELEMENT, "<foo:bar>");
  }

  @Test
  public void testCreateStartElement_Prefix_NamespaceURI_LocalName_Attributes_Namespaces() throws XMLStreamException {
    Namespace namespace = factory.createNamespace("foo", "http://foo");
    Attribute attribute = factory.createAttribute("foo", "bar");
    StartElement event = factory.createStartElement("foo", "http://foo", "bar", Arrays.asList(attribute).iterator(), Arrays.asList(namespace).iterator());
    verify(event, XMLStreamConstants.START_ELEMENT, "<foo:bar xmlns:foo=\"http://foo\" foo=\"bar\">");
  }

  @Test
  public void testCreateStartElement_Prefix_NamespaceURI_LocalName_Attributes_Namespaces_Context() throws XMLStreamException {
    Attribute attribute = factory.createAttribute("foo", "bar");
    StartElement event = factory.createStartElement("foo", "http://foo", "bar", Arrays.asList(attribute).iterator(), null);
    verify(event, XMLStreamConstants.START_ELEMENT, "<foo:bar foo=\"bar\">");
  }

  @Test
  public void testCreateEndElement_Name_Namespaces() throws XMLStreamException {
    Namespace namespace = factory.createNamespace("foo", "http://foo");
    EndElement event = factory.createEndElement(new QName("http://foo", "bar", "foo"), Arrays.asList(namespace).iterator());
    verify(event, XMLStreamConstants.END_ELEMENT, "</foo:bar>");
    Assert.assertEquals(namespace, event.getNamespaces().next());
  }

  @Test
  public void testCreateEndElement_Prefix_NamespaceURI_LocalName() throws XMLStreamException {
    EndElement event = factory.createEndElement("foo", "http://foo", "bar");
    verify(event, XMLStreamConstants.END_ELEMENT, "</foo:bar>");
  }

  @Test
  public void testCreateEndElement_Prefix_NamespaceURI_LocalName_Namespaces() throws XMLStreamException {
    Namespace namespace = factory.createNamespace("foo", "http://foo");
    EndElement event = factory.createEndElement("foo", "http://foo", "bar", Arrays.asList(namespace).iterator());
    verify(event, XMLStreamConstants.END_ELEMENT, "</foo:bar>");
    Assert.assertEquals(namespace, event.getNamespaces().next());
  }

  @Test
  public void testCreateCharacters() throws XMLStreamException {
    Characters event = factory.createCharacters("foobar");
    verify(event, XMLStreamConstants.CHARACTERS, "foobar");
  }

  @Test
  public void testCreateCData() throws XMLStreamException {
    Characters event = factory.createCData("foobar");
    verify(event, XMLStreamConstants.CDATA, "<![CDATA[foobar]]>");
  }

  @Test
  public void testCreateSpace() throws XMLStreamException {
    Characters event = factory.createSpace(" ");
    verify(event, XMLStreamConstants.CHARACTERS, " ");
    Assert.assertTrue(event.isWhiteSpace());
    Assert.assertFalse(event.isIgnorableWhiteSpace());
  }

  @Test
  public void testCreateIgnorableSpace() throws XMLStreamException {
    Characters event = factory.createIgnorableSpace(" ");
    verify(event, XMLStreamConstants.SPACE, "");
    Assert.assertTrue(event.isWhiteSpace());
    Assert.assertTrue(event.isIgnorableWhiteSpace());
  }

  @Test
  public void testCreateStartDocument() throws XMLStreamException {
    StartDocument event = factory.createStartDocument();
    verify(event, XMLStreamConstants.START_DOCUMENT, "<?xml version=\"1.0\"?>");
  }

  @Test
  public void testCreateStartDocument_Encoding_Version_Standalone() throws XMLStreamException {
    StartDocument event = factory.createStartDocument("UTF-8", "1.1", true);
    verify(event, XMLStreamConstants.START_DOCUMENT, "<?xml version=\"1.1\" encoding=\"UTF-8\" standalone=\"yes\"?>");
  }

  @Test
  public void testCreateStartDocument_Encoding_Version() throws XMLStreamException {
    StartDocument event = factory.createStartDocument("UTF-8", "1.1");
    verify(event, XMLStreamConstants.START_DOCUMENT, "<?xml version=\"1.1\" encoding=\"UTF-8\"?>");
  }

  @Test
  public void testCreateStartDocument_Encoding() throws XMLStreamException {
    StartDocument event = factory.createStartDocument("UTF-8");
    verify(event, XMLStreamConstants.START_DOCUMENT, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
  }

  @Test
  public void testCreateEndDocument() throws XMLStreamException {
    EndDocument event = factory.createEndDocument();
    verify(event, XMLStreamConstants.END_DOCUMENT, "");
  }

  @Test
  public void testCreateEntityReference() throws XMLStreamException {
    EntityReference event = factory.createEntityReference("foo", null);
    verify(event, XMLStreamConstants.ENTITY_REFERENCE, "&foo;");
  }

  @Test
  public void testCreateComment() throws XMLStreamException {
    Comment event = factory.createComment("foo");
    verify(event, XMLStreamConstants.COMMENT, "<!--foo-->");
  }

  @Test
  public void testCreateProcessingInstruction() throws XMLStreamException {
    ProcessingInstruction event = factory.createProcessingInstruction("foo", "bar");
    verify(event, XMLStreamConstants.PROCESSING_INSTRUCTION, "<?foo bar?>");
  }

  @Test(expected = UnsupportedOperationException.class)
  public void testCreateDTD() {
    factory.createDTD("foo");
  }
}
TOP

Related Classes of de.odysseus.staxon.event.SimpleXMLEventFactoryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.