blob: 217f8c426e0132aad514fe724e1b1ddee69c5555 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.sis.storage.gpx;
import java.util.List;
import java.net.URI;
import java.net.URISyntaxException;
// Test dependencies
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import org.apache.sis.test.TestCase;
import static org.apache.sis.test.TestUtilities.date;
// Specific to the main branch:
import org.junit.jupiter.api.Disabled;
/**
* Tests the {@link Metadata} class.
*
* @author Johann Sorel (Geomatys)
* @author Martin Desruisseaux (Geomatys)
*/
public final class MetadataTest extends TestCase {
/**
* Creates a new test case.
*/
public MetadataTest() {
}
/**
* Tests the {@link Metadata#equals(Object)} and {@link Metadata#hashCode()}.
*
* @throws URISyntaxException if a {@link Link} element is constructed with an invalid URI.
*/
@Test
public void testEqualsAndHashCode() throws URISyntaxException {
final Metadata md1 = create();
final Metadata md2 = create();
assertEquals(md1, md2);
assertEquals(md1.hashCode(), md2.hashCode());
md2.author.name = "someone else";
assertNotEquals(md1, md2);
assertNotEquals(md1.hashCode(), md2.hashCode());
}
/**
* Tests the copy constructor used for converting ISO 19115 metadata to GPX metadata.
*
* @throws URISyntaxException if a {@link Link} element is constructed with an invalid URI.
*/
@Test
@Disabled("Can not execute this test on this branch because it depends on Citation.getOnlineResources() "
+ "and Identification.getExtents() methods, which are not present in GeoAPI 3.0 interfaces. "
+ "Despite this test failure, the copy constructor should nevertheless works in practice "
+ "if the Citation and Identification objects are instances of DefaultCitation or AbstractExtent "
+ "(the SIS implementations of GeoAPI interfaces).")
public void testCopyConstructor() throws URISyntaxException {
final Metadata md1 = create();
final Metadata md2 = new Metadata(md1, null);
assertEquals(md1, md2);
assertEquals(md1.hashCode(), md2.hashCode());
}
/**
* Creates a metadata instance with the same data as the one in the {@code "1.1/metadata.xml"} test file.
*/
static Metadata create() throws URISyntaxException {
final Person person = new Person();
person.name = "Jean-Pierre";
person.email = "jean.pierre@test.com";
person.link = new Link(new URI("http://someone-site.org"));
final Copyright copyright = new Copyright();
copyright.author = "Apache";
copyright.year = 2004;
copyright.license = new URI("http://www.apache.org/licenses/LICENSE-2.0");
final Bounds bounds = new Bounds();
bounds.westBoundLongitude = -20;
bounds.eastBoundLongitude = 30;
bounds.southBoundLatitude = 10;
bounds.northBoundLatitude = 40;
final Metadata metadata = new Metadata();
metadata.name = "Sample";
metadata.description = "GPX test file";
metadata.author = person;
metadata.creator = "DataProducer";
metadata.copyright = copyright;
metadata.keywords = List.of("sample", "metadata");
metadata.bounds = bounds;
metadata.time = date("2010-03-01 00:00:00");
metadata.links = List.of(new Link(new URI("http://first-address.org")),
new Link(new URI("http://second-address.org")),
new Link(new URI("http://third-address.org")));
metadata.links.get(2).type = "website";
metadata.links.get(0).text = "first";
return metadata;
}
}