/**
* Copyright 2014-2016 by Metanome Project
*
* Licensed 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 de.metanome.backend.configuration;
import de.metanome.algorithm_integration.AlgorithmConfigurationException;
import de.metanome.algorithm_integration.algorithm_types.DatabaseConnectionParameterAlgorithm;
import de.metanome.algorithm_integration.algorithm_types.TempFileAlgorithm;
import de.metanome.algorithm_integration.configuration.ConfigurationRequirementDatabaseConnection;
import de.metanome.algorithm_integration.input.DatabaseConnectionGenerator;
import org.junit.Test;
import java.util.HashSet;
import java.util.Set;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
/**
* Tests for {@link ConfigurationValueDatabaseConnectionGenerator}
*
* @author Jakob Zwiener
*/
public class ConfigurationValueDatabaseConnectionGeneratorTest {
/**
* Test method for {@link ConfigurationValueDatabaseConnectionGenerator#triggerSetValue(de.metanome.algorithm_integration.Algorithm,
* Set)} <p/> Parameters should be set on the algorithm through triggerSetValue. This is the last
* call in a double dispatch call to determine the parameters type.
*/
@Test
public void testTriggerSetValue() throws AlgorithmConfigurationException {
// Setup
DatabaseConnectionParameterAlgorithm
algorithm =
mock(DatabaseConnectionParameterAlgorithm.class);
Set<Class<?>> interfaces = new HashSet<>();
interfaces.add(DatabaseConnectionParameterAlgorithm.class);
// Expected values
String expectedIdentifier = "configId1";
DatabaseConnectionGenerator[]
expectedConfigurationValue =
{mock(DatabaseConnectionGenerator.class), mock(DatabaseConnectionGenerator.class)};
// Execute functionality
ConfigurationValueDatabaseConnectionGenerator
configValue = new ConfigurationValueDatabaseConnectionGenerator(
new ConfigurationRequirementDatabaseConnection(expectedIdentifier).getIdentifier(),
expectedConfigurationValue);
configValue.triggerSetValue(algorithm, interfaces);
// Check result
verify(algorithm).setDatabaseConnectionGeneratorConfigurationValue(expectedIdentifier,
expectedConfigurationValue);
}
/**
* Test method for {@link ConfigurationValueDatabaseConnectionGenerator#triggerSetValue(de.metanome.algorithm_integration.Algorithm,
* java.util.Set)} <p/> When the correct algorithm interface is missing an exception should be
* thrown.
*/
@Test
public void testTriggerSetValueMissingInterface() {
// Setup
DatabaseConnectionParameterAlgorithm
algorithm =
mock(DatabaseConnectionParameterAlgorithm.class);
// The file input parameter algorithm interface is missing.
Set<Class<?>> interfaces = new HashSet<>();
interfaces.add(TempFileAlgorithm.class);
// Expected values
String expectedIdentifier = "configId1";
DatabaseConnectionGenerator[]
expectedConfigurationValues =
{mock(DatabaseConnectionGenerator.class), mock(DatabaseConnectionGenerator.class)};
// Execute functionality
ConfigurationValueDatabaseConnectionGenerator
configValue = new ConfigurationValueDatabaseConnectionGenerator(
new ConfigurationRequirementDatabaseConnection(expectedIdentifier).getIdentifier(),
expectedConfigurationValues);
try {
configValue.triggerSetValue(algorithm, interfaces);
fail("No exception was thrown.");
} catch (AlgorithmConfigurationException e) {
// Intentionally left blank
}
}
}