/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.components.converger.execution.validator;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import java.util.HashMap;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import de.rcenvironment.components.converger.common.ConvergerComponentConstants;
import de.rcenvironment.core.component.model.endpoint.api.EndpointDefinition;
import de.rcenvironment.core.component.model.testutils.ComponentDescriptionMockCreater;
import de.rcenvironment.core.component.validation.api.ComponentValidationMessage;
import de.rcenvironment.core.datamodel.api.DataType;
/**
*
* Tests for the {@link ConvergerComponentValidator}.
*
* @author Jascha Riedel
*/
public class ConvergerComponentValidatorTest {
private ComponentDescriptionMockCreater componentDescription;
private ConvergerComponentValidator validator;
private List<ComponentValidationMessage> messages;
/** Basic setup. */
@Before
public void setUp() {
componentDescription = new ComponentDescriptionMockCreater();
validator = new ConvergerComponentValidator();
}
/** Tests validation for no Inputs. */
@Test
public void testNoInputs() {
messages = validator.validateLoopComponentSpecific(componentDescription.createComponentDescriptionMock());
assertEquals(ComponentValidationMessage.Type.WARNING, messages.get(0).getType());
}
/** Test whether an input is recognized. */
@Test
public void testWithInputs() {
addSimulatedInput();
messages = validator.validateLoopComponentSpecific(componentDescription.createComponentDescriptionMock());
assertEquals(3, messages.size());
assertEquals(ComponentValidationMessage.Type.ERROR, messages.get(0).getType());
}
/** Tests if validator is happy if all values are correct. */
@Test
public void testAllConfigValuesSet() {
addSimulatedInput();
componentDescription.addConfigurationValue(ConvergerComponentConstants.KEY_EPS_A, "dummy");
componentDescription.addConfigurationValue(ConvergerComponentConstants.KEY_EPS_R, "dummy2");
componentDescription.addConfigurationValue(ConvergerComponentConstants.KEY_ITERATIONS_TO_CONSIDER, "dummy3");
messages = validator.validateLoopComponentSpecific(componentDescription.createComponentDescriptionMock());
assertEquals(0, messages.size());
}
/** Test configuration individually. */
@Test
public void testEachConfigValue() {
addSimulatedInput();
componentDescription.addConfigurationValue(ConvergerComponentConstants.KEY_EPS_A, "a");
messages = validator.validateLoopComponentSpecific(componentDescription.createComponentDescriptionMock());
for (ComponentValidationMessage message : messages) {
assertFalse(message.getProperty().equals(ConvergerComponentConstants.KEY_EPS_A));
}
componentDescription = new ComponentDescriptionMockCreater();
addSimulatedInput();
componentDescription.addConfigurationValue(ConvergerComponentConstants.KEY_EPS_R, "b");
messages = validator.validateLoopComponentSpecific(componentDescription.createComponentDescriptionMock());
for (ComponentValidationMessage message : messages) {
assertFalse(message.getProperty().equals(ConvergerComponentConstants.KEY_EPS_R));
}
componentDescription = new ComponentDescriptionMockCreater();
addSimulatedInput();
componentDescription.addConfigurationValue(ConvergerComponentConstants.KEY_ITERATIONS_TO_CONSIDER, "c");
messages = validator.validateLoopComponentSpecific(componentDescription.createComponentDescriptionMock());
for (ComponentValidationMessage message : messages) {
assertFalse(message.getProperty().equals(ConvergerComponentConstants.KEY_ITERATIONS_TO_CONSIDER));
}
}
private void addSimulatedInput() {
componentDescription.addSimulatedInput("testInput", DataType.Float, new HashMap<String, String>(),
EndpointDefinition.InputExecutionContraint.NotRequired, true);
}
}