/**
* 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.ogc.swes;
import static java.lang.Boolean.FALSE;
import static java.lang.Boolean.TRUE;
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import org.junit.Test;
import org.n52.sos.ogc.swe.simpleType.SweBoolean;
/**
* @author <a href="mailto:e.h.juerrens@52north.org">Eike Hinderk
* Jürrens</a>
*
* @since 4.0.0
*/
public class SwesExtensionsTest {
protected static enum TestDefinitions {
definition1, definition2, definition3;
}
private static final String DEFINITION_1 = TestDefinitions.definition1.name();
private static final String DEFINITION_2 = TestDefinitions.definition2.name();
private static final String DEFINITION_3= TestDefinitions.definition3.name();
private static final String VALUE_1 = "";
private static final Integer VALUE_2 = new Integer(1);
private static final Boolean VALUE_3 = new Boolean(false);
@Test
public void isEmpty_should_return_false_if_extensions_are_null_or_empty() {
assertThat(new SwesExtensions().isEmpty(), is(TRUE));
}
@Test
public void isEmpty_should_return_false_if_at_least_one_extension_is_set() {
final SwesExtensions extensions = new SwesExtensions();
extensions.addSwesExtension(new SwesExtensionImpl<Boolean>().setDefinition(DEFINITION_1));
assertThat(extensions.isEmpty(), is(FALSE));
}
@Test
public void isBooleanExtensionSet_should_return_true_if_set_to_true() {
final SwesExtensions extensions = new SwesExtensions();
extensions.addSwesExtension(new SwesExtensionImpl<SweBoolean>().setDefinition(DEFINITION_1).setValue(new SweBoolean().setValue(TRUE)));
assertThat(extensions.isBooleanExtensionSet(DEFINITION_1), is(TRUE));
}
@Test
public void containsExtension_for_string_schould_return_true() {
final SwesExtensions extensions = new SwesExtensions();
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_1).setValue(new String()));
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_2).setValue(new String()));
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_3).setValue(new String()));
assertThat(extensions.containsExtension(DEFINITION_1), is(TRUE));
assertThat(extensions.containsExtension(DEFINITION_2), is(TRUE));
assertThat(extensions.containsExtension(DEFINITION_3), is(TRUE));
}
@Test
public void containsExtension_for_enum_schould_return_true() {
final SwesExtensions extensions = new SwesExtensions();
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_1).setValue(new String()));
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_2).setValue(new String()));
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_3).setValue(new String()));
assertThat(extensions.containsExtension(DEFINITION_1), is(TRUE));
assertThat(extensions.containsExtension(DEFINITION_2), is(TRUE));
assertThat(extensions.containsExtension(DEFINITION_3), is(TRUE));
}
@Test
public void containsExtension_for_enum_created_with_string_schould_return_true() {
final SwesExtensions extensions = new SwesExtensions();
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_1).setValue(new String()));
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_2).setValue(new String()));
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_3).setValue(new String()));
assertThat(extensions.containsExtension(DEFINITION_1), is(TRUE));
assertThat(extensions.containsExtension(DEFINITION_2), is(TRUE));
assertThat(extensions.containsExtension(DEFINITION_3), is(TRUE));
}
@Test
public void containsExtension_for_string_created_with_enum_schould_return_true() {
final SwesExtensions extensions = new SwesExtensions();
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_1).setValue(new String()));
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_2).setValue(new String()));
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_3).setValue(new String()));
assertThat(extensions.containsExtension(DEFINITION_1), is(TRUE));
assertThat(extensions.containsExtension(DEFINITION_2), is(TRUE));
assertThat(extensions.containsExtension(DEFINITION_3), is(TRUE));
}
@Test
public void getExtension_for_string_schould_return_true() {
final SwesExtensions extensions = new SwesExtensions();
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_1).setValue(VALUE_1));
extensions.addSwesExtension(new SwesExtensionImpl<Integer>().setDefinition(DEFINITION_2).setValue(VALUE_2));
extensions.addSwesExtension(new SwesExtensionImpl<Boolean>().setDefinition(DEFINITION_3).setValue(VALUE_3));
assertThat(extensions.getExtension(DEFINITION_1).getValue(), instanceOf(VALUE_1.getClass()));
assertThat(extensions.getExtension(DEFINITION_2).getValue(), instanceOf(VALUE_2.getClass()));
assertThat(extensions.getExtension(DEFINITION_3).getValue(), instanceOf(VALUE_3.getClass()));
}
@Test
public void getExtension_for_enum_schould_return_true() {
final SwesExtensions extensions = new SwesExtensions();
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_1).setValue(VALUE_1));
extensions.addSwesExtension(new SwesExtensionImpl<Integer>().setDefinition(DEFINITION_2).setValue(VALUE_2));
extensions.addSwesExtension(new SwesExtensionImpl<Boolean>().setDefinition(DEFINITION_3).setValue(VALUE_3));
assertThat(extensions.getExtension(DEFINITION_1).getValue(), instanceOf(VALUE_1.getClass()));
assertThat(extensions.getExtension(DEFINITION_2).getValue(), instanceOf(VALUE_2.getClass()));
assertThat(extensions.getExtension(DEFINITION_3).getValue(), instanceOf(VALUE_3.getClass()));
}
@Test
public void getExtension_for_enum_created_with_string_schould_return_true() {
final SwesExtensions extensions = new SwesExtensions();
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_1).setValue(VALUE_1));
extensions.addSwesExtension(new SwesExtensionImpl<Integer>().setDefinition(DEFINITION_2).setValue(VALUE_2));
extensions.addSwesExtension(new SwesExtensionImpl<Boolean>().setDefinition(DEFINITION_3).setValue(VALUE_3));
assertThat(extensions.getExtension(DEFINITION_1).getValue(), instanceOf(VALUE_1.getClass()));
assertThat(extensions.getExtension(DEFINITION_2).getValue(), instanceOf(VALUE_2.getClass()));
assertThat(extensions.getExtension(DEFINITION_3).getValue(), instanceOf(VALUE_3.getClass()));
}
@Test
public void getExtension_for_string_created_with_enum_schould_return_true() {
final SwesExtensions extensions = new SwesExtensions();
extensions.addSwesExtension(new SwesExtensionImpl<String>().setDefinition(DEFINITION_1).setValue(VALUE_1));
extensions.addSwesExtension(new SwesExtensionImpl<Integer>().setDefinition(DEFINITION_2).setValue(VALUE_2));
extensions.addSwesExtension(new SwesExtensionImpl<Boolean>().setDefinition(DEFINITION_3).setValue(VALUE_3));
assertThat(extensions.getExtension(DEFINITION_1).getValue(), instanceOf(VALUE_1.getClass()));
assertThat(extensions.getExtension(DEFINITION_2).getValue(), instanceOf(VALUE_2.getClass()));
assertThat(extensions.getExtension(DEFINITION_3).getValue(), instanceOf(VALUE_3.getClass()));
}
}