Package thredds.catalog2.xml.parser.stax

Source Code of thredds.catalog2.xml.parser.stax.DateTypeParserTest

package thredds.catalog2.xml.parser.stax;

import org.junit.Test;
import static org.junit.Assert.*;

import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLStreamException;
import javax.xml.namespace.QName;
import java.util.Map;
import java.util.HashMap;

import thredds.catalog2.xml.parser.ThreddsXmlParserException;
import thredds.catalog2.xml.names.CatalogNamespace;

/**
* _more_
*
* @author edavis
* @since 4.0
*/
public class DateTypeParserTest
{
  @Test
  public void checkCompleteDateElement() throws XMLStreamException, ThreddsXmlParserException
  {
    String elemName = "date";
    String date = "2009-09-15T12:15";
    String format = "format";
    String type = "type";

    QName elemQualName = new QName( CatalogNamespace.CATALOG_1_0.getNamespaceUri(), elemName );
    String xml = getDateTypeElement( elemName, date, format, type );

    assertDateTypeXmlAsExpected( elemQualName, date, format, type, xml );
  }

  @Test
  public void checkCompleteAltNamedDateElement() throws XMLStreamException, ThreddsXmlParserException
  {
    String elemName = "myDate";
    String date = "2009-09-15T12:15";
    String format = "format";
    String type = "type";

    QName elemQualName = new QName( CatalogNamespace.CATALOG_1_0.getNamespaceUri(), elemName );
    String xml = getDateTypeElement( elemName, date, format, type );

    assertDateTypeXmlAsExpected( elemQualName, date, format, type, xml );
  }

  @Test
  public void checkFormattedDateElement() throws XMLStreamException, ThreddsXmlParserException
  {
    String elemName = "date";
    String date = "2009-09-15T12:15";
    String format = "format";

    QName elemQualName = new QName( CatalogNamespace.CATALOG_1_0.getNamespaceUri(), elemName );
    String xml = getDateTypeElement( elemName, date, format, null );

    assertDateTypeXmlAsExpected( elemQualName, date, format, null, xml );
  }

  @Test
  public void checkBareDateElement() throws XMLStreamException, ThreddsXmlParserException
  {
    String elemName = "date";
    String date = "2009-09-15T12:15";

    QName elemQualName = new QName( CatalogNamespace.CATALOG_1_0.getNamespaceUri(), elemName );
    String xml = getDateTypeElement( elemName, date, null, null );

    assertDateTypeXmlAsExpected( elemQualName, date, null, null, xml );
  }

  @Test
  public void checkEmptyDateElement() throws XMLStreamException, ThreddsXmlParserException
  {
    String elemName = "date";
    String format = "format";
    String type = "type";

    QName elemQualName = new QName( CatalogNamespace.CATALOG_1_0.getNamespaceUri(), elemName );
    String xml = getDateTypeElement( elemName, null, format, type );

    assertDateTypeXmlAsExpected( elemQualName, "", format, type, xml );
  }

  private String getDateTypeElement( String dateElementName, String dateString, String format, String type )
  {
    Map<String, String> attributes = new HashMap<String, String>();
    if ( format != null )
      attributes.put( "format", format );
    if ( type != null )
      attributes.put( "type", type );

    return StaxParserUtils.wrapContentXmlInXmlDocRootElement( dateElementName, attributes, dateString );
  }

  private void assertDateTypeXmlAsExpected( QName elemName, String date, String format, String type, String xml )
          throws XMLStreamException, ThreddsXmlParserException
  {
    XMLEventReader reader = StaxParserUtils.createXmlEventReaderOnXmlString( xml, "http://test.catalog2.thredds/DateTypeParserTest/someTest.xml" );

    DateTypeParser.Factory fac = new DateTypeParser.Factory( elemName );
    StaxParserUtils.advanceReaderToFirstStartElement( reader );
    assertTrue( fac.isEventMyStartElement( reader.peek() ));

    DateTypeParser dateTypeParser = fac.getNewDateTypeParser();
    assertNotNull( dateTypeParser );

    dateTypeParser.parseElement( reader );

    assertEquals( date, dateTypeParser.getValue());
    assertEquals( format, dateTypeParser.getFormat());
    assertEquals( type, dateTypeParser.getType());
  }
}
TOP

Related Classes of thredds.catalog2.xml.parser.stax.DateTypeParserTest

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.