/**
* Copyright (C) 2012-2017 52°North Initiative for Geospatial Open Source
* Software GmbH
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
* by the Free Software Foundation.
*
* If the program is linked with libraries which are licensed under one of
* the following licenses, the combination of the program with the linked
* library is not considered a "derivative work" of the program:
*
* - Apache License, version 2.0
* - Apache Software License, version 1.0
* - GNU Lesser General Public License, version 3
* - Mozilla Public License, versions 1.0, 1.1 and 2.0
* - Common Development and Distribution License (CDDL), version 1.0
*
* Therefore the distribution of the program linked with libraries licensed
* under the aforementioned licenses, is permitted by the copyright holders
* if the distribution is compliant with both the GNU General Public
* License version 2 and the aforementioned licenses.
*
* This program 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 General
* Public License for more details.
*/
package org.n52.sos.encode;
import static java.lang.Boolean.TRUE;
import static org.hamcrest.Matchers.*;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.IsNot.not;
import static org.junit.Assert.assertThat;
import java.math.BigInteger;
import net.opengis.swe.x101.AnyScalarPropertyType;
import net.opengis.swe.x101.CountDocument.Count;
import net.opengis.swe.x101.DataComponentPropertyType;
import net.opengis.swe.x101.DataRecordType;
import net.opengis.swe.x101.EnvelopeType;
import net.opengis.swe.x101.SimpleDataRecordType;
import net.opengis.swe.x101.VectorType.Coordinate;
import org.apache.xmlbeans.XmlCalendar;
import org.apache.xmlbeans.XmlObject;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.n52.sos.AbstractBeforeAfterClassSettingsManagerTest;
import org.n52.sos.exception.ows.NoApplicableCodeException;
import org.n52.sos.ogc.ows.OwsExceptionReport;
import org.n52.sos.ogc.sos.SosEnvelope;
import org.n52.sos.ogc.swe.RangeValue;
import org.n52.sos.ogc.swe.SweAbstractDataComponent;
import org.n52.sos.ogc.swe.SweConstants.SweDataComponentType;
import org.n52.sos.ogc.swe.SweDataRecord;
import org.n52.sos.ogc.swe.SweEnvelope;
import org.n52.sos.ogc.swe.SweField;
import org.n52.sos.ogc.swe.SweSimpleDataRecord;
import org.n52.sos.ogc.swe.simpleType.SweBoolean;
import org.n52.sos.ogc.swe.simpleType.SweCategory;
import org.n52.sos.ogc.swe.simpleType.SweCount;
import org.n52.sos.ogc.swe.simpleType.SweQuality;
import org.n52.sos.ogc.swe.simpleType.SweQuantity;
import org.n52.sos.ogc.swe.simpleType.SweQuantityRange;
import org.n52.sos.ogc.swe.simpleType.SweText;
import org.n52.sos.ogc.swe.simpleType.SweTime;
import org.n52.sos.ogc.swe.simpleType.SweTimeRange;
import org.n52.sos.util.DateTimeHelper;
import com.google.common.collect.Lists;
import com.vividsolutions.jts.geom.Envelope;
/**
* @author <a href="mailto:e.h.juerrens@52north.org">Eike Hinderk Jürrens</a>
*
* @since 4.0.0
*/
public class SweCommonEncoderv101Test extends AbstractBeforeAfterClassSettingsManagerTest {
@Test
public final void should_encode_simpleDataRecord() throws OwsExceptionReport {
final XmlObject encode = new SweCommonEncoderv101().encode(new SweSimpleDataRecord());
assertThat(encode, instanceOf(SimpleDataRecordType.class));
}
@Test
public void should_encode_simpleDataRecordWithFields() throws OwsExceptionReport {
final String field0Value = "field-0-value";
final String field0Name = "field-0";
final String field1Name = "field-1";
final Boolean field1Value = Boolean.TRUE;
final XmlObject encode =
new SweCommonEncoderv101().encode(new SweSimpleDataRecord().addField(
new SweField(field0Name, new SweText().setValue(field0Value))).addField(
new SweField(field1Name, new SweBoolean().setValue(field1Value))));
assertThat(encode, instanceOf(SimpleDataRecordType.class));
final SimpleDataRecordType xbSimpleDataRecord = (SimpleDataRecordType) encode;
final AnyScalarPropertyType field0 = xbSimpleDataRecord.getFieldArray(0);
final AnyScalarPropertyType field1 = xbSimpleDataRecord.getFieldArray(1);
assertThat(xbSimpleDataRecord.getFieldArray().length, is(2));
assertThat(field0.isSetText(), is(TRUE));
assertThat(field0.getName(), is(field0Name));
assertThat(field0.getText().getValue(), is(field0Value));
assertThat(field1.isSetBoolean(), is(TRUE));
assertThat(field1.getName(), is(field1Name));
assertThat(field1.getBoolean().getValue(), is(field1Value));
}
@Test
public void should_encode_simpleDatarecord_with_fieldBoolean() throws OwsExceptionReport {
final String field1Name = "field-1";
final Boolean field1Value = Boolean.TRUE;
final XmlObject encode =
new SweCommonEncoderv101().encode(new SweSimpleDataRecord().addField(new SweField(field1Name,
new SweBoolean().setValue(field1Value))));
assertThat(encode, instanceOf(SimpleDataRecordType.class));
final SimpleDataRecordType xbSimpleDataRecord = (SimpleDataRecordType) encode;
final AnyScalarPropertyType field1 = xbSimpleDataRecord.getFieldArray(0);
assertThat(xbSimpleDataRecord.getFieldArray().length, is(1));
assertThat(field1.isSetBoolean(), is(TRUE));
assertThat(field1.getName(), is(field1Name));
assertThat(field1.getBoolean().getValue(), is(field1Value));
}
@Test
public void should_encode_Datarecord_with_fieldText() throws OwsExceptionReport {
final String field1Name = "test-name";
final String field1Value = "test-value";
final XmlObject encode =
new SweCommonEncoderv101().encode(new SweDataRecord().addField(new SweField(field1Name, new SweText()
.setValue(field1Value))));
assertThat(encode, is(instanceOf(DataRecordType.class)));
final DataRecordType xbDataRecord = (DataRecordType) encode;
final DataComponentPropertyType field1 = xbDataRecord.getFieldArray(0);
assertThat(xbDataRecord.getFieldArray().length, is(1));
assertThat(field1.isSetText(), is(TRUE));
assertThat(field1.getName(), is(field1Name));
assertThat(field1.getText().getValue(), is(field1Value));
}
@Test
public void should_encode_Datarecord_with_fieldBoolean() throws OwsExceptionReport {
final String field1Name = "test-name";
final boolean field1Value = true;
final XmlObject encode =
new SweCommonEncoderv101().encode(new SweDataRecord().addField(new SweField(field1Name,
new SweBoolean().setValue(field1Value))));
assertThat(encode, is(instanceOf(DataRecordType.class)));
final DataRecordType xbDataRecord = (DataRecordType) encode;
final DataComponentPropertyType field1 = xbDataRecord.getFieldArray(0);
assertThat(xbDataRecord.getFieldArray().length, is(1));
assertThat(field1.isSetBoolean(), is(TRUE));
assertThat(field1.getName(), is(field1Name));
assertThat(field1.getBoolean().getValue(), is(field1Value));
}
@Test
public void should_encode_Datarecord_with_fieldCategory() throws OwsExceptionReport {
final String field1Name = "test-name";
final String field1Value = "test-value";
final String codeSpace = "test-codespace";
final XmlObject encode =
new SweCommonEncoderv101().encode(new SweDataRecord().addField(new SweField(field1Name,
new SweCategory().setCodeSpace(codeSpace).setValue(field1Value))));
assertThat(encode, is(instanceOf(DataRecordType.class)));
final DataRecordType xbDataRecord = (DataRecordType) encode;
final DataComponentPropertyType field1 = xbDataRecord.getFieldArray(0);
assertThat(xbDataRecord.getFieldArray().length, is(1));
assertThat(field1.isSetCategory(), is(TRUE));
assertThat(field1.getName(), is(field1Name));
assertThat(field1.getCategory().getValue(), is(field1Value));
assertThat(field1.getCategory().getCodeSpace().getHref(), is(codeSpace));
}
@Test
public void should_encode_Datarecord_with_fieldCount() throws OwsExceptionReport {
final String field1Name = "test-name";
final int field1Value = 52;
final XmlObject encode =
new SweCommonEncoderv101().encode(new SweDataRecord().addField(new SweField(field1Name, new SweCount()
.setValue(field1Value))));
assertThat(encode, is(instanceOf(DataRecordType.class)));
final DataRecordType xbDataRecord = (DataRecordType) encode;
final DataComponentPropertyType field1 = xbDataRecord.getFieldArray(0);
assertThat(xbDataRecord.getFieldArray().length, is(1));
assertThat(field1.isSetCount(), is(TRUE));
assertThat(field1.getName(), is(field1Name));
assertThat(field1.getCount().getValue(), is(BigInteger.valueOf(field1Value)));
}
@Test
public void should_encode_Datarecord_with_fieldQuantity() throws OwsExceptionReport {
final String field1Name = "test-name";
final double field1Value = 52.0;
final XmlObject encode =
new SweCommonEncoderv101().encode(new SweDataRecord().addField(new SweField(field1Name,
new SweQuantity().setValue(field1Value))));
assertThat(encode, is(instanceOf(DataRecordType.class)));
final DataRecordType xbDataRecord = (DataRecordType) encode;
final DataComponentPropertyType field1 = xbDataRecord.getFieldArray(0);
assertThat(xbDataRecord.getFieldArray().length, is(1));
assertThat(field1.isSetQuantity(), is(TRUE));
assertThat(field1.getName(), is(field1Name));
assertThat(field1.getQuantity().getValue(), is(field1Value));
}
@Test
public void should_encode_Datarecord_with_fieldTimeRange() throws OwsExceptionReport {
final String field1Name = "test-name";
final RangeValue<DateTime> field1Value = new RangeValue<DateTime>();
final long now = System.currentTimeMillis();
final DateTime rangeStart = new DateTime(now - 1000);
final DateTime rangeEnd = new DateTime(now + 1000);
field1Value.setRangeStart(rangeStart);
field1Value.setRangeEnd(rangeEnd);
final XmlObject encode =
new SweCommonEncoderv101().encode(new SweDataRecord().addField(new SweField(field1Name,
new SweTimeRange().setValue(field1Value))));
assertThat(encode, is(instanceOf(DataRecordType.class)));
final DataRecordType xbDataRecord = (DataRecordType) encode;
assertThat(xbDataRecord.getFieldArray().length, is(1));
final DataComponentPropertyType field1 = xbDataRecord.getFieldArray(0);
assertThat(field1.isSetTimeRange(), is(TRUE));
final DateTime xbTimeRangeStart =
new DateTime(((XmlCalendar) field1.getTimeRange().getValue().get(0)).getTimeInMillis());
final DateTime xbTimeRangeEnd =
new DateTime(((XmlCalendar) field1.getTimeRange().getValue().get(1)).getTimeInMillis());
assertThat(field1.getName(), is(field1Name));
assertThat(xbTimeRangeStart, is(field1Value.getRangeStart()));
assertThat(xbTimeRangeEnd, is(field1Value.getRangeEnd()));
}
@Test
public void should_encode_Datarecord_with_fieldTime() throws OwsExceptionReport {
final String field1Name = "test-name";
final DateTime field1Value = new DateTime(System.currentTimeMillis());
final XmlObject encode =
new SweCommonEncoderv101().encode(new SweDataRecord().addField(new SweField(field1Name, new SweTime()
.setValue(field1Value))));
assertThat(encode, is(instanceOf(DataRecordType.class)));
final DataRecordType xbDataRecord = (DataRecordType) encode;
final DataComponentPropertyType field1 = xbDataRecord.getFieldArray(0);
assertThat(xbDataRecord.getFieldArray().length, is(1));
assertThat(field1.isSetTime(), is(TRUE));
assertThat(field1.getName(), is(field1Name));
final DateTime xbTime = new DateTime(((XmlCalendar) field1.getTime().getValue()).getTimeInMillis(), DateTimeZone.UTC);
assertThat(xbTime.toDateTime(field1Value.getZone()), is(field1Value));
}
@Rule
public ExpectedException thrown = ExpectedException.none();
@Test
public void should_throw_NoApplicableCodeException_with_DataRecord_and_field_with_not_supported_element()
throws OwsExceptionReport {
thrown.expect(NoApplicableCodeException.class);
thrown.expectMessage("The element type 'org.n52.sos.encode.SweCommonEncoderv101Test$1' "
+ "of the received 'org.n52.sos.ogc.swe.SweField' is not supported"
+ " by this encoder 'org.n52.sos.encode.SweCommonEncoderv101'.");
new SweCommonEncoderv101().encode(new SweDataRecord().addField(new SweField("test",
new SweAbstractDataComponent() {
@Override
public SweDataComponentType getDataComponentType() {
return null;
}
})));
}
@Test
public void should_encode_simpleDatarecord_with_fieldText() throws OwsExceptionReport {
final String field1Name = "field-1";
final String field1Value = "field-1-value";
final XmlObject encode =
new SweCommonEncoderv101().encode(new SweSimpleDataRecord().addField(new SweField(field1Name,
new SweText().setValue(field1Value))));
assertThat(encode, instanceOf(SimpleDataRecordType.class));
final SimpleDataRecordType xbSimpleDataRecord = (SimpleDataRecordType) encode;
final AnyScalarPropertyType field1 = xbSimpleDataRecord.getFieldArray(0);
assertThat(xbSimpleDataRecord.getFieldArray().length, is(1));
assertThat(field1.isSetText(), is(TRUE));
assertThat(field1.getName(), is(field1Name));
assertThat(field1.getText().getValue(), is(field1Value));
}
@Test
public void should_encode_simpleDatarecord_with_fieldCategory() throws OwsExceptionReport {
final String name = "field-1";
final String value = "field-1-value";
final String codeSpace = "field-1-codespace";
final XmlObject encode =
new SweCommonEncoderv101().encode(new SweSimpleDataRecord().addField(new SweField(name,
new SweCategory().setValue(value).setCodeSpace(codeSpace))));
assertThat(encode, instanceOf(SimpleDataRecordType.class));
final SimpleDataRecordType xbSimpleDataRecord = (SimpleDataRecordType) encode;
final AnyScalarPropertyType field1 = xbSimpleDataRecord.getFieldArray(0);
assertThat(xbSimpleDataRecord.getFieldArray().length, is(1));
assertThat(field1.isSetCategory(), is(TRUE));
assertThat(field1.getName(), is(name));
assertThat(field1.getCategory().getValue(), is(value));
assertThat(field1.getCategory().isSetCodeSpace(), is(TRUE));
assertThat(field1.getCategory().getCodeSpace().isSetHref(), is(TRUE));
}
@Test
public void should_encode_simpleDatarecord_with_fieldCount() throws OwsExceptionReport {
final String name = "field-1";
final int value = 42;
final XmlObject encode =
new SweCommonEncoderv101().encode(new SweSimpleDataRecord().addField(new SweField(name, new SweCount()
.setValue(value))));
assertThat(encode, instanceOf(SimpleDataRecordType.class));
final SimpleDataRecordType xbSimpleDataRecord = (SimpleDataRecordType) encode;
final AnyScalarPropertyType field1 = xbSimpleDataRecord.getFieldArray(0);
assertThat(xbSimpleDataRecord.getFieldArray().length, is(1));
assertThat(field1.getName(), is(name));
assertThat(field1.isSetCount(), is(TRUE));
assertThat(field1.getCount().getValue().intValue(), is(value));
}
@Test
public void should_encode_simpleDatarecord_with_fieldQuantity() throws OwsExceptionReport {
final String name = "field-1";
final double value = 42.5;
final XmlObject encode =
new SweCommonEncoderv101().encode(new SweSimpleDataRecord().addField(new SweField(name,
new SweQuantity().setValue(value))));
assertThat(encode, instanceOf(SimpleDataRecordType.class));
final SimpleDataRecordType xbSimpleDataRecord = (SimpleDataRecordType) encode;
final AnyScalarPropertyType field1 = xbSimpleDataRecord.getFieldArray(0);
assertThat(xbSimpleDataRecord.getFieldArray().length, is(1));
assertThat(field1.getName(), is(name));
assertThat(field1.isSetQuantity(), is(TRUE));
assertThat(field1.getQuantity().getValue(), is(value));
}
@Test
public void should_encode_simpleDatarecord_with_fieldTime() throws OwsExceptionReport {
final String name = "field-1";
final DateTime value = new DateTime(DateTimeZone.UTC);
final XmlObject encode =
new SweCommonEncoderv101().encode(new SweSimpleDataRecord().addField(new SweField(name, new SweTime()
.setValue(value))));
assertThat(encode, instanceOf(SimpleDataRecordType.class));
final SimpleDataRecordType xbSimpleDataRecord = (SimpleDataRecordType) encode;
final AnyScalarPropertyType field1 = xbSimpleDataRecord.getFieldArray(0);
assertThat(xbSimpleDataRecord.getFieldArray().length, is(1));
assertThat(field1.getName(), is(name));
assertThat(field1.isSetTime(), is(TRUE));
assertThat(DateTimeHelper.parseIsoString2DateTime(field1.getTime().getValue().toString()).toString(), is(value.toString()));
}
@Test
public void should_encode_simpleDatarecord_with_quantities() throws OwsExceptionReport {
final String name = "field-1";
final String unit = "m";
final Double value = 1.1;
final String name2 = "field-2";
final String unit2 = "urn:ogc:def:uom:UCUM::m";
final Double value2 = 1.2;
final XmlObject encode =
new SweCommonEncoderv101().encode(new SweSimpleDataRecord().addField(
new SweField(name, new SweQuantity().setUom(unit).setValue(value))).addField(
new SweField(name2, new SweQuantity().setUom(unit2).setValue(value2))));
assertThat(encode, instanceOf(SimpleDataRecordType.class));
final SimpleDataRecordType xbSimpleDataRecord = (SimpleDataRecordType) encode;
assertThat(xbSimpleDataRecord.getFieldArray().length, is(2));
final AnyScalarPropertyType field1 = xbSimpleDataRecord.getFieldArray(0);
final AnyScalarPropertyType field2 = xbSimpleDataRecord.getFieldArray(1);
// unit in code
assertThat(field1.getName(), is(name));
assertThat(field1.isSetQuantity(), is(TRUE));
assertThat(field1.getQuantity().getValue(), is(value));
assertThat(field1.getQuantity().getUom().getCode(), is(unit));
// unit in href
assertThat(field2.getName(), is(name2));
assertThat(field2.isSetQuantity(), is(TRUE));
assertThat(field2.getQuantity().getValue(), is(value2));
assertThat(field2.getQuantity().getUom().getHref(), is(unit2));
}
@Test(expected = NoApplicableCodeException.class)
public void should_throw_exception_if_received_simpleDataRecord_with_field_with_null_element()
throws OwsExceptionReport {
new SweCommonEncoderv101().encode(new SweSimpleDataRecord().addField(new SweField("field-name", null)));
}
@Test public void
should_encode_count_with_quality_text()
throws OwsExceptionReport {
final String qualityTextValue = "quality-text-value";
final SweCount sosCount = (SweCount) new SweCount().setQuality(Lists.newArrayList((SweQuality)new SweText().setValue(qualityTextValue)));
final XmlObject encode = new SweCommonEncoderv101().encode(sosCount);
assertThat(encode, instanceOf(Count.class));
final Count xbCount = (Count) encode;
assertThat(xbCount.getQualityArray(), is(not(nullValue())));
assertThat(xbCount.getQualityArray().length, is(1));
assertThat(xbCount.getQualityArray(0).isSetText(), is(true));
assertThat(xbCount.getQualityArray(0).getText().getValue(),is(qualityTextValue));
}
@Test public void
should_encode_count_with_quality_Category()
throws OwsExceptionReport {
final String qualityCategoryValue = "quality-category-value";
final SweCount sosCount = (SweCount) new SweCount().setQuality(Lists.newArrayList((SweQuality)new SweCategory().setValue(qualityCategoryValue)));
final XmlObject encode = new SweCommonEncoderv101().encode(sosCount);
assertThat(encode, instanceOf(Count.class));
final Count xbCount = (Count) encode;
assertThat(xbCount.getQualityArray(), is(not(nullValue())));
assertThat(xbCount.getQualityArray().length, is(1));
assertThat(xbCount.getQualityArray(0).isSetCategory(), is(true));
assertThat(xbCount.getQualityArray(0).getCategory().getValue(),is(qualityCategoryValue));
}
@Test public void
should_encode_count_with_quality_Quantity()
throws OwsExceptionReport {
final double qualityQuantityValue = 42.0;
final SweCount sosCount = (SweCount) new SweCount().setQuality(Lists.newArrayList((SweQuality)new SweQuantity().setValue(qualityQuantityValue)));
final XmlObject encode = new SweCommonEncoderv101().encode(sosCount);
assertThat(encode, instanceOf(Count.class));
final Count xbCount = (Count) encode;
assertThat(xbCount.getQualityArray(), is(not(nullValue())));
assertThat(xbCount.getQualityArray().length, is(1));
assertThat(xbCount.getQualityArray(0).isSetQuantity(), is(true));
assertThat(xbCount.getQualityArray(0).getQuantity().getValue(),is(qualityQuantityValue));
}
@Test public void
should_encode_count_with_quality_QuantityRange()
throws OwsExceptionReport {
final RangeValue<Double> qualityQuantityRangeValue = new RangeValue<Double>(1.0, 2.0);
final SweCount sosCount = (SweCount) new SweCount().setQuality(Lists.newArrayList((SweQuality)new SweQuantityRange().setValue(qualityQuantityRangeValue)));
final XmlObject encode = new SweCommonEncoderv101().encode(sosCount);
assertThat(encode, instanceOf(Count.class));
final Count xbCount = (Count) encode;
assertThat(xbCount.getQualityArray(), is(not(nullValue())));
assertThat(xbCount.getQualityArray().length, is(1));
assertThat(xbCount.getQualityArray(0).isSetQuantityRange(), is(true));
assertThat((Double)xbCount.getQualityArray(0).getQuantityRange().getValue().get(0),is(qualityQuantityRangeValue.getRangeStart()));
assertThat((Double)xbCount.getQualityArray(0).getQuantityRange().getValue().get(1),is(qualityQuantityRangeValue.getRangeEnd()));
}
@Test
public void should_encode_SosEnvelope() throws OwsExceptionReport {
final int srid = 4326;
final double y1 = 7.0;
final double x1 = 51.0;
final double y2 = 8.0;
final double x2 = 52.0;
final String uom = "test-uom";
final String definition = "test-definition";
final SweEnvelope sweEnvelope = new SweEnvelope(new SosEnvelope(new Envelope(x1, x2, y1, y2), srid), uom);
final String xAxisId = "x";
final String yAxisId = "y";
final String northing = "northing";
final String easting = "easting";
sweEnvelope.setDefinition(definition);
final XmlObject encode = new SweCommonEncoderv101().encode(sweEnvelope);
assertThat(encode, instanceOf(EnvelopeType.class));
final EnvelopeType xbEnvelope = (EnvelopeType) encode;
assertThat(xbEnvelope.isSetDefinition(), is(true));
assertThat(xbEnvelope.getDefinition(), is(definition));
final Coordinate lcX = xbEnvelope.getLowerCorner().getVector().getCoordinateArray(0);
assertThat(lcX.getName(), is(easting));
assertThat(lcX.getQuantity().getAxisID(), is(xAxisId));
assertThat(lcX.getQuantity().getUom().getCode(), is(uom));
assertThat(lcX.getQuantity().getValue(), is(y1));
final Coordinate lcY = xbEnvelope.getLowerCorner().getVector().getCoordinateArray(1);
assertThat(lcY.getName(), is(northing));
assertThat(lcY.getQuantity().getAxisID(), is(yAxisId));
assertThat(lcY.getQuantity().getUom().getCode(), is(uom));
assertThat(lcY.getQuantity().getValue(), is(x1));
final Coordinate ucX = xbEnvelope.getUpperCorner().getVector().getCoordinateArray(0);
assertThat(ucX.getName(), is(easting));
assertThat(ucX.getQuantity().getAxisID(), is(xAxisId));
assertThat(ucX.getQuantity().getUom().getCode(), is(uom));
assertThat(ucX.getQuantity().getValue(), is(y2));
final Coordinate ucY = xbEnvelope.getUpperCorner().getVector().getCoordinateArray(1);
assertThat(ucY.getName(), is(northing));
assertThat(ucY.getQuantity().getAxisID(), is(yAxisId));
assertThat(ucY.getQuantity().getUom().getCode(), is(uom));
assertThat(ucY.getQuantity().getValue(), is(x2));
assertThat(xbEnvelope.isSetReferenceFrame(), is(true));
assertThat(xbEnvelope.getReferenceFrame(), is(""+srid));
}
}