/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.component.execution.internal;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.collections4.map.HashedMap;
import org.easymock.EasyMock;
import org.omg.IOP.ExceptionDetailMessage;
import de.rcenvironment.core.component.api.ComponentConstants;
import de.rcenvironment.core.component.model.endpoint.api.EndpointDefinition;
import de.rcenvironment.core.component.model.endpoint.api.EndpointDescription;
import de.rcenvironment.core.component.model.endpoint.api.EndpointDescriptionsManager;
import de.rcenvironment.core.component.model.endpoint.api.EndpointGroupDefinition;
import de.rcenvironment.core.component.model.endpoint.api.EndpointGroupDescription;
/**
* Factory for {@link EndpointDescriptionsManager} mocks.
*
* @author Doreen Seider
*/
public final class InputDescriptionManagerMockFactory implements ExceptionDetailMessage {
private InputDescriptionManagerMockFactory() {}
/**
* Creates a mock for {@link EndpointDescriptionsManager}, which mocks methods on the base of the information passed, which are
* scheduling-related.
*
* @param inputMockInformations expected input declarations
* @return mock for {@link EndpointDescriptionsManager}
*/
public static EndpointDescriptionsManager createInputDescriptionManagerMock(List<InputMockInformation> inputMockInformations) {
return createInputDescriptionManagerMock(inputMockInformations, new ArrayList<InputGroupMockInformation>());
}
/**
* Creates a mock for {@link EndpointDescriptionsManager}, which mocks methods on the base of the information passed, which are
* scheduling-related.
*
* @param inputMockInformations expected input declarations
* @param inputGroupMockInformations expected input group declarations
* @return mock for {@link EndpointDescriptionsManager}
*/
public static EndpointDescriptionsManager createInputDescriptionManagerMock(List<InputMockInformation> inputMockInformations,
List<InputGroupMockInformation> inputGroupMockInformations) {
EndpointDescriptionsManager endpointDescriptionsManagerMock = EasyMock.createMock(EndpointDescriptionsManager.class);
Set<EndpointDescription> endpointDescriptions = new HashSet<>();
for (InputMockInformation info : inputMockInformations) {
EndpointDefinition endpointDefinitionMock = EasyMock.createStrictMock(EndpointDefinition.class);
EasyMock.expect(endpointDefinitionMock.getEndpointCharacter()).andStubReturn(info.endpointCharacter);
EasyMock.replay(endpointDefinitionMock);
EndpointDescription endpointDescriptionMock = EasyMock.createStrictMock(EndpointDescription.class);
EasyMock.expect(endpointDescriptionMock.getEndpointDefinition()).andStubReturn(endpointDefinitionMock);
EasyMock.expect(endpointDescriptionMock.getName()).andReturn(info.name).anyTimes();
Map<String, String> metaData = new HashedMap<>();
metaData.put(ComponentConstants.INPUT_METADATA_KEY_INPUT_DATUM_HANDLING, info.inputDatumHandling.name());
metaData.put(ComponentConstants.INPUT_METADATA_KEY_INPUT_EXECUTION_CONSTRAINT, info.inputExecutionContraint.name());
EasyMock.expect(endpointDescriptionMock.getMetaData()).andStubReturn(metaData);
EasyMock.expect(endpointDescriptionMock.getDataType()).andStubReturn(info.dataType);
EasyMock.expect(endpointDescriptionMock.isConnected()).andStubReturn(info.connected);
EasyMock.expect(endpointDescriptionMock.getParentGroupName()).andStubReturn(info.parentGroup);
EasyMock.replay(endpointDescriptionMock);
endpointDescriptions.add(endpointDescriptionMock);
}
EasyMock.expect(endpointDescriptionsManagerMock.getEndpointDescriptions()).andReturn(endpointDescriptions).anyTimes();
Set<EndpointGroupDescription> endpointGroupDescriptions = new HashSet<>();
for (InputGroupMockInformation info : inputGroupMockInformations) {
EndpointGroupDefinition endpointGroupDefinitionMock = EasyMock.createStrictMock(EndpointGroupDefinition.class);
EasyMock.expect(endpointGroupDefinitionMock.getLogicOperation()).andStubReturn(info.type);
EasyMock.replay(endpointGroupDefinitionMock);
EndpointGroupDescription endpointGroupDescriptionMock = EasyMock.createMock(EndpointGroupDescription.class);
EasyMock.expect(endpointGroupDescriptionMock.getEndpointGroupDefinition()).andStubReturn(endpointGroupDefinitionMock);
EasyMock.expect(endpointGroupDescriptionMock.getName()).andStubReturn(info.name);
EasyMock.expect(endpointGroupDescriptionMock.getParentGroupName()).andStubReturn(info.parentGroup);
EasyMock.replay(endpointGroupDescriptionMock);
endpointGroupDescriptions.add(endpointGroupDescriptionMock);
EasyMock.expect(endpointDescriptionsManagerMock.getEndpointGroupDescription(info.name))
.andStubReturn(endpointGroupDescriptionMock);
}
EasyMock.expect(endpointDescriptionsManagerMock.getEndpointGroupDescriptions()).andReturn(endpointGroupDescriptions);
EasyMock.replay(endpointDescriptionsManagerMock);
return endpointDescriptionsManagerMock;
}
}