use of org.opengis.util.InternationalString in project sis by apache.
the class PropertyAccessorTest method testSetCollection.
/**
* Tests the {@link PropertyAccessor#set(int, Object, Object, int)} method when the value
* is a collection. The new collection shall replace the previous one (no merge expected).
* The metadata object created by this test after the replacement is:
*
* {@preformat text
* DefaultCitation
* ├─Title……………………………………………………… Ignored title
* ├─Alternate title (1 of 2)…… New title 1
* └─Alternate title (2 of 2)…… New title 2
* }
*
* @see #testSetInAppendMode()
*/
@Test
@DependsOnMethod("testSet")
public void testSetCollection() {
final DefaultCitation instance = new DefaultCitation("Ignored title");
final List<InternationalString> oldTitles = Arrays.<InternationalString>asList(new SimpleInternationalString("Old title 1"), new SimpleInternationalString("Old title 2"));
final List<InternationalString> newTitles = Arrays.<InternationalString>asList(new SimpleInternationalString("New title 1"), new SimpleInternationalString("New title 2"));
// Set the alternate titles.
instance.setAlternateTitles(oldTitles);
final PropertyAccessor accessor = createPropertyAccessor();
final int index = accessor.indexOf("alternateTitles", true);
final Object oldValue = accessor.set(index, instance, newTitles, RETURN_PREVIOUS);
final Object newValue = accessor.get(index, instance);
// Verify the values.
assertEquals("set(…, RETURN_PREVIOUS)", oldTitles, oldValue);
assertEquals("get(…)", newTitles, newValue);
assertSame("alternateTitles", newValue, instance.getAlternateTitles());
assertTitleEquals("title", "Ignored title", instance);
}
use of org.opengis.util.InternationalString in project sis by apache.
the class PropertyAccessorTest method testHashCode.
/**
* Tests {@link PropertyAccessor#hashCode(Object)}.
*/
@Test
public void testHashCode() {
final DefaultCitation instance = new DefaultCitation();
final PropertyAccessor accessor = createPropertyAccessor();
final int baseCode = Citation.class.hashCode();
int hashCode = accessor.hashCode(instance);
assertEquals("Empty metadata.", baseCode, hashCode);
final InternationalString title = new SimpleInternationalString("Some title");
instance.setTitle(title);
hashCode = accessor.hashCode(instance);
assertEquals("Metadata with a single value.", baseCode + title.hashCode(), hashCode);
final InternationalString alternateTitle = new SimpleInternationalString("An other title");
instance.setAlternateTitles(singleton(alternateTitle));
hashCode = accessor.hashCode(instance);
assertEquals("Metadata with two values.", baseCode + title.hashCode() + Arrays.asList(alternateTitle).hashCode(), hashCode);
}
use of org.opengis.util.InternationalString in project sis by apache.
the class PropertyAccessorTest method testSetIntoCollection.
/**
* Tests the {@link PropertyAccessor#set(int, Object, Object, int)} method
* when adding elements in a collection, with or without conversion of type.
*/
private static void testSetIntoCollection(final boolean conversion) {
final String text1 = "An other title";
final String text2 = "Yet an other title";
final InternationalString title1 = new SimpleInternationalString(text1);
final InternationalString title2 = new SimpleInternationalString(text2);
final DefaultCitation instance = new DefaultCitation("Ignored title");
final PropertyAccessor accessor = createPropertyAccessor();
final int index = accessor.indexOf("alternateTitles", true);
// Insert the first value. Old collection shall be empty.
Object oldValue = accessor.set(index, instance, conversion ? text1 : title1, RETURN_PREVIOUS);
assertInstanceOf("alternateTitles", Collection.class, oldValue);
assertTrue("alternateTitles", ((Collection<?>) oldValue).isEmpty());
// Insert the second value. Old collection shall contain the first value.
oldValue = accessor.set(index, instance, conversion ? text2 : title2, RETURN_PREVIOUS);
assertInstanceOf("alternateTitles", Collection.class, oldValue);
oldValue = getSingleton((Collection<?>) oldValue);
assertSame("alternateTitles", text1, oldValue.toString());
if (!conversion) {
assertSame("InternationalString should have been stored as-is.", title1, oldValue);
}
// Check final collection content.
final List<InternationalString> expected = Arrays.asList(title1, title2);
assertEquals("alternateTitles", expected, accessor.get(index, instance));
assertTitleEquals("title", "Ignored title", instance);
}
use of org.opengis.util.InternationalString in project sis by apache.
the class PropertyInformationTest method validateTitle.
/**
* Validates a property information for {@link Citation#getTitle()}.
* This is validation code to be shared with {@link PropertyAccessorTest#testInformation()}.
*/
static void validateTitle(final ExtendedElementInformation information) {
assertParentIsCitation(information);
assertEquals("title", information.getName());
final InternationalString definition = information.getDefinition();
assertEquals("Name by which the cited resource is known.", definition.toString(Locale.ENGLISH));
// Test other locale here, if any.
assertInstanceOf("Specific to SIS implementation.", CheckedContainer.class, information);
assertEquals(InternationalString.class, ((CheckedContainer<?>) information).getElementType());
assertEquals(Datatype.CHARACTER_STRING, information.getDataType());
assertEquals(Obligation.MANDATORY, information.getObligation());
assertEquals(Integer.valueOf(1), information.getMaximumOccurrence());
assertNull(information.getDomainValue());
}
use of org.opengis.util.InternationalString in project sis by apache.
the class SpecialCasesTest method testPropertyInformation.
/**
* Tests {@link SpecialCases#information(int)}.
*/
@Test
public void testPropertyInformation() {
final ExtendedElementInformation info = accessor.information(accessor.indexOf("westBoundLongitude", true));
final InternationalString domain = info.getDomainValue();
assertInstanceOf("Expected numerical information about range.", NumberRange.class, domain);
final NumberRange<?> range = (NumberRange) domain;
assertEquals(-180, range.getMinDouble(), STRICT);
assertEquals(+180, range.getMaxDouble(), STRICT);
}
Aggregations