Package buri.ddmsence.ddms.summary

Source Code of buri.ddmsence.ddms.summary.GeospatialCoverageTest

/* Copyright 2010 - 2014 by Brian Uri!
  
   This file is part of DDMSence.
  
   This library is free software; you can redistribute it and/or modify
   it under the terms of version 3.0 of the GNU Lesser General Public
   License as published by the Free Software Foundation.
  
   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
   GNU Lesser General Public License for more details.
  
   You should have received a copy of the GNU Lesser General Public
   License along with DDMSence. If not, see <http://www.gnu.org/licenses/>.

   You can contact the author at ddmsence@urizone.net. The DDMSence
   home page is located at http://ddmsence.urizone.net/
*/
package buri.ddmsence.ddms.summary;

import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.List;

import nu.xom.Element;

import org.junit.Test;

import buri.ddmsence.AbstractBaseTestCase;
import buri.ddmsence.ddms.IDDMSComponent;
import buri.ddmsence.ddms.ITspiShape;
import buri.ddmsence.ddms.InvalidDDMSException;
import buri.ddmsence.ddms.OutputFormat;
import buri.ddmsence.ddms.resource.Rights;
import buri.ddmsence.ddms.security.ism.SecurityAttributesTest;
import buri.ddmsence.ddms.summary.gml.PointTest;
import buri.ddmsence.util.DDMSVersion;
import buri.ddmsence.util.Util;

/**
* <p> Tests related to ddms:geospatialCoverage elements </p>
*
* @author Brian Uri!
* @since 0.9.b
*/
public class GeospatialCoverageTest extends AbstractBaseTestCase {

  private static final String TEST_PRECEDENCE = "Primary";
  private static final Integer TEST_ORDER = Integer.valueOf(1);

  /**
   * Constructor
   */
  public GeospatialCoverageTest() throws InvalidDDMSException {
    super("geospatialCoverage.xml");
  }

  /**
   * Returns a fixture object for testing.
   *
   * @param a fixed order value
   */
  public static GeospatialCoverage getFixture(int order) {
    try {
      DDMSVersion version = DDMSVersion.getCurrentVersion();
      return (new GeospatialCoverage(null, null, null, PostalAddressTest.getFixture(), null, null,
        version.isAtLeast("4.0.1") ? Integer.valueOf(order) : null, null));
    }
    catch (InvalidDDMSException e) {
      fail("Could not create fixture: " + e.getMessage());
    }
    return (null);
  }

  /**
   * Returns a fixture object for testing.
   */
  public static GeospatialCoverage getFixture() {
    try {
      BoundingGeometry geometry = null;
      if (!DDMSVersion.getCurrentVersion().isAtLeast("5.0"))
        geometry = new BoundingGeometry(null, PointTest.getFixtureList());
      else {
        List<ITspiShape> shapes = new ArrayList<ITspiShape>();
        shapes.add(buri.ddmsence.ddms.summary.tspi.PointTest.getFixture());
        geometry = new BoundingGeometry(shapes);
      }
      return (new GeospatialCoverage(null, null, geometry, null, null, null, null, null));
    }
    catch (InvalidDDMSException e) {
      fail("Could not create fixture: " + e.getMessage());
    }
    return (null);
  }

  /**
   * Attempts to build a component from a XOM element.
   *
   * @param element the element to build from
   * @param message an expected error message. If empty, the constructor is expected to succeed.
   *
   * @return a valid object
   */
  private GeospatialCoverage getInstance(Element element, String message) {
    boolean expectFailure = !Util.isEmpty(message);
    GeospatialCoverage component = null;
    try {
      if (DDMSVersion.getCurrentVersion().isAtLeast("3.0"))
        SecurityAttributesTest.getFixture().addTo(element);
      component = new GeospatialCoverage(element);
      checkConstructorSuccess(expectFailure);
    }
    catch (InvalidDDMSException e) {
      checkConstructorFailure(expectFailure, e);
      expectMessage(e, message);
    }
    return (component);
  }

  /**
   * Helper method to create an object which is expected to be valid.
   *
   * @param builder the builder to commit
   * @param message an expected error message. If empty, the constructor is expected to succeed.
   *
   * @return a valid object
   */
  private GeospatialCoverage getInstance(GeospatialCoverage.Builder builder, String message) {
    boolean expectFailure = !Util.isEmpty(message);
    GeospatialCoverage component = null;
    try {
      component = builder.commit();
      checkConstructorSuccess(expectFailure);
    }
    catch (InvalidDDMSException e) {
      checkConstructorFailure(expectFailure, e);
      expectMessage(e, message);
    }
    return (component);
  }

  /**
   * Returns a builder, pre-populated with base data from the XML sample.
   *
   * This builder can then be modified to test various conditions.
   */
  private GeospatialCoverage.Builder getBaseBuilder() {
    DDMSVersion version = DDMSVersion.getCurrentVersion();
    GeospatialCoverage component = getInstance(getValidElement(version.getVersion()), SUCCESS);
    return (new GeospatialCoverage.Builder(component));
  }

  /**
   * Returns the ISM attributes HTML output, if the DDMS Version supports it.
   */
  private String getHtmlIcism() {
    DDMSVersion version = DDMSVersion.getCurrentVersion();
    String prefix = version.isAtLeast("4.0.1") ? "geospatialCoverage." : "geospatialCoverage.GeospatialExtent.";
    if (DDMSVersion.getCurrentVersion().isAtLeast("3.0"))
      return (buildHTMLTextOutput(OutputFormat.HTML, prefix + "classification", "U") + buildHTMLTextOutput(OutputFormat.HTML, prefix + "ownerProducer",
        "USA"));
    return ("");
  }

  /**
   * Returns the ISM attributes Text output, if the DDMS Version supports it.
   */
  private String getTextIcism() {
    DDMSVersion version = DDMSVersion.getCurrentVersion();
    String prefix = version.isAtLeast("4.0.1") ? "geospatialCoverage." : "geospatialCoverage.GeospatialExtent.";
    if (DDMSVersion.getCurrentVersion().isAtLeast("3.0"))
      return (buildHTMLTextOutput(OutputFormat.TEXT, prefix + "classification", "U") + buildHTMLTextOutput(OutputFormat.TEXT, prefix + "ownerProducer",
        "USA"));
    return ("");
  }

  /**
   * Returns the expected output for the test instance of this component
   */
  private String getExpectedHTMLTextOutput(OutputFormat format) throws InvalidDDMSException {
    Util.requireHTMLText(format);
    DDMSVersion version = DDMSVersion.getCurrentVersion();
    String prefix = version.isAtLeast("4.0.1") ? "geospatialCoverage." : "geospatialCoverage.GeospatialExtent.";
    StringBuffer text = new StringBuffer();
    text.append(GeographicIdentifierTest.getCountryCodeBasedFixture().getHTMLTextOutput(format, prefix, ""));
    if (version.isAtLeast("4.0.1")) {
      text.append(buildHTMLTextOutput(format, prefix + "precedence", "Primary"));
      text.append(buildHTMLTextOutput(format, prefix + "order", "1"));
    }
    if (version.isAtLeast("3.0"))
      text.append(SecurityAttributesTest.getFixture().getHTMLTextOutput(format, prefix));
    return (text.toString());
  }

  /**
   * Returns the expected JSON output for this unit test
   */
  private String getExpectedJSONOutput(Class theClass) throws InvalidDDMSException {
    DDMSVersion version = DDMSVersion.getCurrentVersion();
    StringBuffer json = new StringBuffer();
    if (theClass == GeographicIdentifier.class) {
      json.append("{\"geographicIdentifier\":").append(GeographicIdentifierTest.getCountryCodeBasedFixture().toJSON());
      if (version.isAtLeast("4.0.1"))
        json.append(",\"precedence\":\"Primary\",\"order\":1");
    }
    else if (theClass == BoundingBox.class)
      json.append("{\"boundingBox\":").append(BoundingBoxTest.getFixture().toJSON());
    else if (theClass == BoundingGeometry.class)
      json.append("{\"boundingGeometry\":").append(BoundingGeometryTest.getFixture().toJSON());
    else if (theClass == PostalAddress.class)
      json.append("{\"postalAddress\":").append(PostalAddressTest.getFixture().toJSON());
    else if (theClass == VerticalExtent.class)
      json.append("{\"verticalExtent\":").append(VerticalExtentTest.getFixture().toJSON());
    if (version.isAtLeast("3.0"))
      json.append(",").append(SecurityAttributesTest.getBasicJSON());
    json.append("}");
    return (json.toString());
  }
 
  /**
   * Returns the expected XML output for this unit test
   */
  private String getExpectedXMLOutput() {
    DDMSVersion version = DDMSVersion.getCurrentVersion();
    StringBuffer xml = new StringBuffer();
    xml.append("<ddms:geospatialCoverage ").append(getXmlnsDDMS());
    if (version.isAtLeast("3.0")) {
      xml.append(" ").append(getXmlnsISM()).append(" ");
      if (version.isAtLeast("4.0.1"))
        xml.append("ddms:precedence=\"Primary\" ddms:order=\"1\" ");
      xml.append("ism:classification=\"U\" ism:ownerProducer=\"USA\"");
    }
    xml.append(">\n\t");
    if (version.isAtLeast("5.0")) {
      xml.append("<ddms:geographicIdentifier>\n\t\t");
      xml.append("<ddms:countryCode ddms:").append(CountryCodeTest.getTestQualifierName());
      xml.append("=\"urn:us:gov:dod:nga:def:geo-political:GENC:3:ed1\" ");
      xml.append("ddms:").append(CountryCodeTest.getTestValueName()).append("=\"USA\" />\n\t");
      xml.append("</ddms:geographicIdentifier>\n");
    }
    else if (version.isAtLeast("4.0.1")) {
      xml.append("<ddms:geographicIdentifier>\n\t\t");
      xml.append("<ddms:countryCode ddms:").append(CountryCodeTest.getTestQualifierName());
      xml.append("=\"urn:us:gov:ic:cvenum:irm:coverage:iso3166:trigraph:v1\" ");
      xml.append("ddms:").append(CountryCodeTest.getTestValueName()).append("=\"LAO\" />\n\t");
      xml.append("</ddms:geographicIdentifier>\n");
    }
    else {
      xml.append("<ddms:GeospatialExtent>\n\t\t<ddms:geographicIdentifier>\n\t\t\t");
      xml.append("<ddms:countryCode ddms:qualifier=\"urn:us:gov:ic:cvenum:irm:coverage:iso3166:trigraph:v1\" ddms:value=\"LAO\" />\n\t\t");
      xml.append("</ddms:geographicIdentifier>\n\t</ddms:GeospatialExtent>\n");
    }
    xml.append("</ddms:geospatialCoverage>");
    return (xml.toString());
  }

  /**
   * Helper method to create a XOM element that can be used to test element constructors
   *
   * @param component the child of the GeospatialExtent
   * @return Element
   */
  private Element buildComponentElement(IDDMSComponent component) {
    List<IDDMSComponent> list = new ArrayList<IDDMSComponent>();
    if (component != null)
      list.add(component);
    return (buildComponentElement(list));
  }

  /**
   * Helper method to create a XOM element that can be used to test element constructors
   *
   * @param components the children of the GeospatialExtent
   * @return Element
   */
  private Element buildComponentElement(List<IDDMSComponent> components) {
    DDMSVersion version = DDMSVersion.getCurrentVersion();
    Element element = Util.buildDDMSElement(GeospatialCoverage.getName(DDMSVersion.getCurrentVersion()), null);
    Element extElement = version.isAtLeast("4.0.1") ? element : Util.buildDDMSElement("GeospatialExtent", null);
    for (IDDMSComponent component : components) {
      if (component != null)
        extElement.appendChild(component.getXOMElementCopy());
    }
    if (!version.isAtLeast("4.0.1"))
      element.appendChild(extElement);
    return (element);
  }

  @Test
  public void testNameAndNamespace() {
    for (String sVersion : getSupportedVersions()) {
      DDMSVersion version = DDMSVersion.setCurrentVersion(sVersion);

      assertNameAndNamespace(getInstance(getValidElement(sVersion), SUCCESS), DEFAULT_DDMS_PREFIX,
        GeospatialCoverage.getName(version));
      getInstance(getWrongNameElementFixture(), WRONG_NAME_MESSAGE);
    }
  }

  @Test
  public void testConstructors() {
    for (String sVersion : getSupportedVersions()) {
      DDMSVersion version = DDMSVersion.setCurrentVersion(sVersion);

      // Element-based, geographicIdentifier
      getInstance(getValidElement(sVersion), SUCCESS);

      // Data-based via Builder, geographicIdentifier
      getBaseBuilder();

      if (!version.isAtLeast("5.0")) {
        // Element-based, boundingBox
        Element element = buildComponentElement(BoundingBoxTest.getFixture());
        GeospatialCoverage elementComponent = getInstance(element, SUCCESS);

        // Data-based via Builder, boundingBox
        getInstance(new GeospatialCoverage.Builder(elementComponent), SUCCESS);

        // Element-based, verticalExtent
        element = buildComponentElement(VerticalExtentTest.getFixture());
        elementComponent = getInstance(element, SUCCESS);

        // Data-based via Builder, verticalExtent
        getInstance(new GeospatialCoverage.Builder(elementComponent), SUCCESS);
      }

      // Element-based, boundingGeometry
      Element element = buildComponentElement(BoundingGeometryTest.getFixture());
      GeospatialCoverage elementComponent = getInstance(element, SUCCESS);

      // Data-based via Builder, boundingGeometry
      getInstance(new GeospatialCoverage.Builder(elementComponent), SUCCESS);

      // Element-based, postalAddress
      element = buildComponentElement(PostalAddressTest.getFixture());
      elementComponent = getInstance(element, SUCCESS);

      // Data-based via Builder, postalAddress
      getInstance(new GeospatialCoverage.Builder(elementComponent), SUCCESS);

      // Element-based, everything
      List<IDDMSComponent> list = new ArrayList<IDDMSComponent>();
      list.add(BoundingBoxTest.getFixture());
      list.add(BoundingGeometryTest.getFixture());
      list.add(PostalAddressTest.getFixture());
      list.add(VerticalExtentTest.getFixture());
      element = buildComponentElement(list);
      elementComponent = getInstance(element, SUCCESS);

      // Data-based, everything
      getInstance(new GeospatialCoverage.Builder(elementComponent), SUCCESS);
    }
  }

  @Test
  public void testConstructorsMinimal() {
    // No tests.
  }

  @Test
  public void testValidationErrors() throws InvalidDDMSException {
    for (String sVersion : getSupportedVersions()) {
      DDMSVersion version = DDMSVersion.setCurrentVersion(sVersion);

      // At least 1 of geographicIdentifier, boundingBox, boundingGeometry, postalAddress, or verticalExtent
      // must be used.
      Element element = buildComponentElement((IDDMSComponent) null);
      getInstance(element, "At least 1 of ");

      // Too many geographicIdentifier
      List<IDDMSComponent> list = new ArrayList<IDDMSComponent>();
      list.add(GeographicIdentifierTest.getCountryCodeBasedFixture());
      list.add(GeographicIdentifierTest.getCountryCodeBasedFixture());
      element = buildComponentElement(list);
      getInstance(element, "No more than 1 geographicIdentifier");

      if (!version.isAtLeast("5.0")) {
        // Too many boundingBox
        list = new ArrayList<IDDMSComponent>();
        list.add(BoundingBoxTest.getFixture());
        list.add(BoundingBoxTest.getFixture());
        element = buildComponentElement(list);
        getInstance(element, "No more than 1 boundingBox");

        // Too many verticalExtent
        list = new ArrayList<IDDMSComponent>();
        list.add(VerticalExtentTest.getFixture());
        list.add(VerticalExtentTest.getFixture());
        element = buildComponentElement(list);
        getInstance(element, "No more than 1 verticalExtent");
      }

      // Too many boundingGeometry
      list = new ArrayList<IDDMSComponent>();
      list.add(BoundingGeometryTest.getFixture());
      list.add(BoundingGeometryTest.getFixture());
      element = buildComponentElement(list);
      getInstance(element, "No more than 1 boundingGeometry");

      // Too many postalAddress
      list = new ArrayList<IDDMSComponent>();
      list.add(PostalAddressTest.getFixture());
      list.add(PostalAddressTest.getFixture());
      element = buildComponentElement(list);
      getInstance(element, "No more than 1 postalAddress");

      // If facilityIdentifier is used, nothing else can.
      list = new ArrayList<IDDMSComponent>();
      list.add(GeographicIdentifierTest.getFacIdBasedFixture());
      list.add(BoundingGeometryTest.getFixture());
      element = buildComponentElement(list);
      getInstance(element, "A geographicIdentifier containing a facilityIdentifier");
    }
  }

  @Test
  public void testValidationWarnings() {
    for (String sVersion : getSupportedVersions()) {
      DDMSVersion version = DDMSVersion.setCurrentVersion(sVersion);
      GeospatialCoverage component = getInstance(getValidElement(sVersion), SUCCESS);

      if (!version.isAtLeast("5.0")) {
        // No warnings
        assertEquals(0, component.getValidationWarnings().size());
      }
      else {
        assertEquals(1, component.getValidationWarnings().size());
        String text = "The ddms:countryCode is syntactically correct";
        String locator = "ddms:geospatialCoverage/ddms:geographicIdentifier";
        assertWarningEquality(text, locator, component.getValidationWarnings().get(0));
      }
    }
  }

  @Test
  public void testEquality() throws InvalidDDMSException {
    for (String sVersion : getSupportedVersions()) {
      DDMSVersion version = DDMSVersion.setCurrentVersion(sVersion);

      // Base equality, countryCode
      GeospatialCoverage elementComponent = getInstance(getValidElement(sVersion), SUCCESS);
      GeospatialCoverage builderComponent = new GeospatialCoverage.Builder(elementComponent).commit();
      assertEquals(elementComponent, builderComponent);
      assertEquals(elementComponent.hashCode(), builderComponent.hashCode());

      // Wrong class
      Rights wrongComponent = new Rights(true, true, true);
      assertFalse(elementComponent.equals(wrongComponent));

      // Different values in each field
      if (version.isAtLeast("4.0.1")) {
        GeospatialCoverage.Builder builder = getBaseBuilder();
        builder.setOrder(Integer.valueOf(2));
        assertFalse(elementComponent.equals(builder.commit()));
     
        builder = getBaseBuilder();
        builder.setPrecedence("Secondary");
        assertFalse(elementComponent.equals(builder.commit()));
      }     
      if (!version.isAtLeast("5.0")) {
        GeospatialCoverage.Builder builder = getBaseBuilder();
        builder.setGeographicIdentifier(null);
        builder.setPrecedence(null);
        builder.setBoundingBox(new BoundingBox.Builder(BoundingBoxTest.getFixture()));
        assertFalse(elementComponent.equals(builder.commit()));

        builder = getBaseBuilder();
        builder.setGeographicIdentifier(null);
        builder.setPrecedence(null);
        builder.setVerticalExtent(new VerticalExtent.Builder(VerticalExtentTest.getFixture()));
        assertFalse(elementComponent.equals(builder.commit()));
      }

      GeospatialCoverage.Builder builder = getBaseBuilder();
      builder.setGeographicIdentifier(null);
      builder.setPrecedence(null);
      builder.setBoundingGeometry(new BoundingGeometry.Builder(BoundingGeometryTest.getFixture()));
      assertFalse(elementComponent.equals(builder.commit()));

      builder = getBaseBuilder();
      builder.setGeographicIdentifier(null);
      builder.setPrecedence(null);
      builder.setPostalAddress(new PostalAddress.Builder(PostalAddressTest.getFixture()));
      assertFalse(elementComponent.equals(builder.commit()));
    }
  }

  @Test
  public void testVersionSpecific() throws InvalidDDMSException {
    // No security attributes in DDMS 2.0
    DDMSVersion.setCurrentVersion("3.1");
    GeospatialCoverage.Builder builder = getBaseBuilder();
    DDMSVersion.setCurrentVersion("2.0");
    getInstance(builder, "Security attributes must not be applied");

    // No precedence before 4.0.1
    DDMSVersion.setCurrentVersion("3.1");
    builder = getBaseBuilder();
    builder.setPrecedence(TEST_PRECEDENCE);
    getInstance(builder, "The ddms:precedence attribute must not be used");

    // No order before 4.0.1
    builder = getBaseBuilder();
    builder.setOrder(TEST_ORDER);
    getInstance(builder, "The ddms:order attribute must not be used");
  }

  @Test
  public void testOutput() throws InvalidDDMSException {
    for (String sVersion : getSupportedVersions()) {
      DDMSVersion version = DDMSVersion.setCurrentVersion(sVersion);
      String prefix = "geospatialCoverage.";
      if (!version.isAtLeast("4.0.1"))
        prefix += "GeospatialExtent.";

      // geographicIdentifier
      GeospatialCoverage elementComponent = getInstance(getValidElement(sVersion), SUCCESS);
      assertEquals(getExpectedHTMLTextOutput(OutputFormat.HTML), elementComponent.toHTML());
      assertEquals(getExpectedHTMLTextOutput(OutputFormat.TEXT), elementComponent.toText());
      assertEquals(getExpectedXMLOutput(), elementComponent.toXML());
      assertEquals(getExpectedJSONOutput(GeographicIdentifier.class), elementComponent.toJSON());
      assertValidJSON(elementComponent.toJSON());

      if (!version.isAtLeast("5.0")) {
        // boundingBox
        Element element = buildComponentElement(BoundingBoxTest.getFixture());
        elementComponent = getInstance(element, SUCCESS);
        assertEquals(BoundingBoxTest.getFixture().getHTMLTextOutput(OutputFormat.HTML, prefix, "") + getHtmlIcism(),
          elementComponent.toHTML());
        assertEquals(BoundingBoxTest.getFixture().getHTMLTextOutput(OutputFormat.TEXT, prefix, "") + getTextIcism(),
          elementComponent.toText());
        assertEquals(getExpectedJSONOutput(BoundingBox.class), elementComponent.toJSON());
        assertValidJSON(elementComponent.toJSON());

        // verticalExtent
        element = buildComponentElement(VerticalExtentTest.getFixture());
        elementComponent = getInstance(element, SUCCESS);
        assertEquals(VerticalExtentTest.getFixture().getHTMLTextOutput(OutputFormat.HTML, prefix, "") + getHtmlIcism(),
          elementComponent.toHTML());
        assertEquals(VerticalExtentTest.getFixture().getHTMLTextOutput(OutputFormat.TEXT, prefix, "") + getTextIcism(),
          elementComponent.toText());
        assertEquals(getExpectedJSONOutput(VerticalExtent.class), elementComponent.toJSON());
        assertValidJSON(elementComponent.toJSON());
      }

      // boundingGeometry
      Element element = buildComponentElement(BoundingGeometryTest.getFixture());
      elementComponent = getInstance(element, SUCCESS);
      assertEquals(BoundingGeometryTest.getFixture().getHTMLTextOutput(OutputFormat.HTML, prefix, "") + getHtmlIcism(),
        elementComponent.toHTML());
      assertEquals(BoundingGeometryTest.getFixture().getHTMLTextOutput(OutputFormat.TEXT, prefix, "") + getTextIcism(),
        elementComponent.toText());
      assertEquals(getExpectedJSONOutput(BoundingGeometry.class), elementComponent.toJSON());
      assertValidJSON(elementComponent.toJSON());

      // postalAddress
      element = buildComponentElement(PostalAddressTest.getFixture());
      elementComponent = getInstance(element, SUCCESS);
      assertEquals(PostalAddressTest.getFixture().getHTMLTextOutput(OutputFormat.HTML, prefix, "") + getHtmlIcism(),
        elementComponent.toHTML());
      assertEquals(PostalAddressTest.getFixture().getHTMLTextOutput(OutputFormat.TEXT, prefix, "") + getTextIcism(),
        elementComponent.toText());
      assertEquals(getExpectedJSONOutput(PostalAddress.class), elementComponent.toJSON());
      assertValidJSON(elementComponent.toJSON());
    }
  }

  @Test
  public void testBuilderIsEmpty() throws InvalidDDMSException {
    for (String sVersion : getSupportedVersions()) {
      DDMSVersion.setCurrentVersion(sVersion);

      GeospatialCoverage.Builder builder = new GeospatialCoverage.Builder();
      assertNull(builder.commit());
      assertTrue(builder.isEmpty());

      builder.setOrder(TEST_ORDER);
      assertFalse(builder.isEmpty());
    }
  }

  @Test
  public void testGetLocatorSuffix() {
    for (String sVersion : getSupportedVersions()) {
      DDMSVersion version = DDMSVersion.setCurrentVersion(sVersion);
      GeospatialCoverage component = getInstance(getValidElement(sVersion), SUCCESS);
      String suffix = version.isAtLeast("4.0.1") ? "" : "/ddms:GeospatialExtent";
      assertEquals(suffix, component.getLocatorSuffix());
    }
  }

  @Test
  public void testPrecedenceRestrictions() {
    DDMSVersion.setCurrentVersion("4.0.1");
    try {
      new GeospatialCoverage(GeographicIdentifierTest.getCountryCodeBasedFixture(), null, null, null, null,
        "Tertiary", null, null);
      fail("Allowed invalid data.");
    }
    catch (InvalidDDMSException e) {
      expectMessage(e, "The ddms:precedence attribute must have a value from");
    }
    try {
      new GeospatialCoverage(null, BoundingBoxTest.getFixture(), null, null, null, TEST_PRECEDENCE, null, null);
      fail("Allowed invalid data.");
    }
    catch (InvalidDDMSException e) {
      expectMessage(e, "The ddms:precedence attribute must only be applied");
    }
  }
}
TOP

Related Classes of buri.ddmsence.ddms.summary.GeospatialCoverageTest

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.