/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.component.validation.internal; import static org.junit.Assert.assertEquals; import java.util.HashMap; import java.util.List; import org.junit.Before; import org.junit.Test; 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; /** * * Test for the default Component Validator which in the end is used for every Component. * * @author Jascha Riedel */ public class DefaultComponentValidatorTest { private ComponentDescriptionMockCreater componentDescriptionMockCreater; private DefaultComponentValidator validator; private List<ComponentValidationMessage> messages; /** Basic setup. */ @Before public void setUp() { componentDescriptionMockCreater = new ComponentDescriptionMockCreater(); validator = new DefaultComponentValidator(); } /** Test validator without any inputs. */ @Test public void testWithoutAnyInputs() { messages = validator.validate(componentDescriptionMockCreater.createComponentDescriptionMock(), false); assertEquals(0, messages.size()); } /** Test validator with not required input, not connected. */ @Test public void testWithNotRequiredInputNotConnected() { validateOneInputWithExecutionConstraint(EndpointDefinition.InputExecutionContraint.NotRequired, false); assertEquals(0, messages.size()); } /** Test validator with not required input, connected. */ @Test public void testWithNotRequiredInputConnected() { validateOneInputWithExecutionConstraint(EndpointDefinition.InputExecutionContraint.NotRequired, true); assertEquals(0, messages.size()); } /** Test with required if connected input, not connected. */ @Test public void testWithRequiredIfConnectedNotConnected() { validateOneInputWithExecutionConstraint(EndpointDefinition.InputExecutionContraint.RequiredIfConnected, false); assertEquals(0, messages.size()); } /** Test with required if connected input, connected. */ @Test public void testWithRequiredIfConnectedConnected() { validateOneInputWithExecutionConstraint(EndpointDefinition.InputExecutionContraint.RequiredIfConnected, true); assertEquals(0, messages.size()); } /** Test with required input, not connected. */ @Test public void testWithRequiredNotConnected() { validateOneInputWithExecutionConstraint(EndpointDefinition.InputExecutionContraint.Required, false); assertEquals(1, messages.size()); } /** Test with required input, connected. */ @Test public void testWithRequiredConnected() { validateOneInputWithExecutionConstraint(EndpointDefinition.InputExecutionContraint.Required, true); assertEquals(0, messages.size()); } /** Test with mixture of Inputs. */ @Test public void testWithMixtureOfInputs() { componentDescriptionMockCreater.addSimulatedInput("test", DataType.Float, new HashMap<String, String>(), EndpointDefinition.InputExecutionContraint.NotRequired, false); componentDescriptionMockCreater.addSimulatedInput("test1", DataType.Float, new HashMap<String, String>(), EndpointDefinition.InputExecutionContraint.NotRequired, true); componentDescriptionMockCreater.addSimulatedInput("test2", DataType.Float, new HashMap<String, String>(), EndpointDefinition.InputExecutionContraint.RequiredIfConnected, false); componentDescriptionMockCreater.addSimulatedInput("test3", DataType.Float, new HashMap<String, String>(), EndpointDefinition.InputExecutionContraint.RequiredIfConnected, true); componentDescriptionMockCreater.addSimulatedInput("test4", DataType.Float, new HashMap<String, String>(), EndpointDefinition.InputExecutionContraint.Required, false); componentDescriptionMockCreater.addSimulatedInput("test5", DataType.Float, new HashMap<String, String>(), EndpointDefinition.InputExecutionContraint.Required, true); messages = validator.validate(componentDescriptionMockCreater.createComponentDescriptionMock(), false); assertEquals(1, messages.size()); } private void validateOneInputWithExecutionConstraint(EndpointDefinition.InputExecutionContraint constraint, boolean isConnected) { componentDescriptionMockCreater.addSimulatedInput("test", DataType.Float, new HashMap<String, String>(), constraint, isConnected); messages = validator.validate(componentDescriptionMockCreater.createComponentDescriptionMock(), false); } }