blob: 2aad55a6075c642fa12cb04b63e442183072304b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013 CEA LIST.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Cedric Dumoulin - cedric.dumoulin@lifl.fr
******************************************************************************/
package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createFolder;
import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorConfig;
import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorsMultipleBinding;
import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createOperatorBinding;
import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createPropertyId;
import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createPropertyOperatorConfig;
import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createTypeConfig;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
import org.eclipse.papyrus.layers.stackmodel.layers.Property;
import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
import org.eclipse.papyrus.layers.stackmodel.operators.BooleanAndOperator;
import org.eclipse.papyrus.layers.stackmodel.operators.BooleanOrOperator;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* @author cedric dumoulin
*
*/
public class RegistriesLoaderTest {
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
}
/**
* @throws java.lang.Exception
*/
@After
public void tearDown() throws Exception {
}
/**
* Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader#RegistriesLoader(org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModel)}.
*/
@Test
public void testRegistriesLoader() {
/**
* Create a model used as input for the loader.
*/
LayersConfigModel model = new LayersConfigModel();
initLayersConfigModel(model);
// Create the loader
RegistriesLoader loader = new RegistriesLoader(model);
// Check creation
assertNotNull("loader created", loader);
}
/**
* Test method for
* {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader#loadLayerOperatorDescriptorRegistry(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry, org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry)}
* .
*/
@Test
public void testLoadLayerOperator() {
/**
* Create a model used as input for the loader.
*/
LayersConfigModel model = new LayersConfigModel();
initLayersConfigModel(model);
// Create the loader
RegistriesLoader loader = new RegistriesLoader(model);
// CreatePropertyRegistry
PropertyRegistry propertyRegistry = LayersFactory.eINSTANCE.createPropertyRegistry();
// Create a LayerOperatorRegistry
LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
registry.setPropertyCollectionSize(propertyRegistry.getPropertiesCount());
// call load
loader.loadLayerOperatorDescriptorRegistry(registry, propertyRegistry);
// Check result
assertTrue("descriptors created", registry.getDescriptors().size() > 0);
assertTrue("operators created", registry.getPropertyOperators().size() > 0);
}
/**
* Test method for
* {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader#loadLayerOperatorDescriptorRegistry(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry, org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry)}
* .
*
* @throws NotFoundException
*/
@Test
public void testLoadLayerOperatorDescriptorRegistry() throws NotFoundException {
/**
* Create a model used as input for the loader.
*/
LayersConfigModel model = new LayersConfigModel();
initLayersConfigModel(model);
// Create the loader
RegistriesLoader loader = new RegistriesLoader(model);
// CreatePropertyRegistry
PropertyRegistry propertyRegistry = LayersFactory.eINSTANCE.createPropertyRegistry();
// Create a LayerOperatorRegistry
LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
registry.setPropertyCollectionSize(propertyRegistry.getPropertiesCount());
// call load
loader.loadLayerOperatorDescriptorRegistry(registry, propertyRegistry);
// Check result
assertTrue("descriptors created", registry.getDescriptors().size() > 0);
assertTrue("operators created", registry.getPropertyOperators().size() > 0);
// Check if a layer as its operaor
assertNotNull("descriptor found", registry.getLayerOperatorDescriptor("StackedLayersOperatorA"));
// check its operators
assertTrue("operators set", registry.getLayerOperatorDescriptor("StackedLayersOperatorA").getPropertyOperators().size() > 0);
// check its operators
Property property = propertyRegistry.getProperty("isVisible");
assertNotNull("operator found", registry.getLayerOperatorDescriptor("StackedLayersOperatorA").getPropertyOperator(property));
}
/**
* Test method for
* {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader#loadLayerOperatorDescriptorRegistry(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry, org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry)}
* .
*
* @throws NotFoundException
*/
@Test
public void testLoadLayerOperatorOnly() throws NotFoundException {
/**
* Create a model used as input for the loader.
*/
LayersConfigModel model = new LayersConfigModel();
initModelWithLayerOperatorOnly(model);
// Create the loader
RegistriesLoader loader = new RegistriesLoader(model);
// CreatePropertyRegistry
PropertyRegistry propertyRegistry = LayersFactory.eINSTANCE.createPropertyRegistry();
// Create a LayerOperatorRegistry
LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
registry.setPropertyCollectionSize(propertyRegistry.getPropertiesCount());
// call load
loader.loadLayerOperatorDescriptorRegistry(registry, propertyRegistry);
// Check result
assertTrue("descriptors created", registry.getDescriptors().size() > 0);
assertNotNull("descriptor found", registry.getLayerOperatorDescriptor("StackedLayersOperatorA"));
}
/**
*
* @param model
*/
private void initModelWithLayerOperatorOnly(LayersConfigModel model) {
// Create model
Folder layeropFolder = createFolder(model.getRootFolder(), "layerOpDesc");
// Create LayerOperators descriptor
LayerOperatorConfig layerOpA = createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorA", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
LayerOperatorConfig layerOpB = createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorB", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorC", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorD", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
}
/**
* Initialize the provided model with some defs for tests.
*
* @param model
*/
private void initLayersConfigModel(LayersConfigModel model) {
// Create model
Folder layeropFolder = createFolder(model.getRootFolder(), "layerOpDesc");
// Create LayerOperators descriptor
LayerOperatorConfig layerOpA = createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorA", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
LayerOperatorConfig layerOpB = createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorB", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorC", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorD", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
// Create Operators
Folder operatorFolder = createFolder(model.getRootFolder(), "operatorDesc");
OperatorConfig operatorBooleanAnd = createPropertyOperatorConfig(operatorFolder, "operatorBooleanAnd", BooleanAndOperator.class.getName());
OperatorConfig operatorBooleanOr = createPropertyOperatorConfig(operatorFolder, "operatorBooleanOr", BooleanOrOperator.class.getName());
// Create basic types
Folder typeFolder = createFolder(model.getRootFolder(), "types");
TypeConfig typeBoolean = createTypeConfig(typeFolder, "boolean");
TypeConfig typeInt = createTypeConfig(typeFolder, "int");
TypeConfig typeString = createTypeConfig(typeFolder, "String");
TypeConfig typeFont = createTypeConfig(typeFolder, "Font");
TypeConfig typeColor = createTypeConfig(typeFolder, "Color");
TypeConfig typeFill = createTypeConfig(typeFolder, "Fill");
TypeConfig typeLine = createTypeConfig(typeFolder, "Line");
// Create properties
Folder propertiesFolder = createFolder(model.getRootFolder(), "properties");
PropertyId propertyIsVisible = createPropertyId(propertiesFolder, "isVisible", typeBoolean);
PropertyId propertyIsAbstract = createPropertyId(propertiesFolder, "isAbstract", typeBoolean);
PropertyId propertyFill = createPropertyId(propertiesFolder, "fill", typeFill);
PropertyId propertyLine = createPropertyId(propertiesFolder, "line", typeLine);
PropertyId propertyFont = createPropertyId(propertiesFolder, "font", typeFont);
PropertyId propertyBgcolor = createPropertyId(propertiesFolder, "bgcolor", typeColor);
PropertyId propertyFgcolor = createPropertyId(propertiesFolder, "fgcolor", typeColor);
// Bind operators to layers
Folder opBindingFolder = createFolder(model.getRootFolder(), "opBindings");
LayerOperatorMultipleBinding layerOpBindingsA = createLayerOperatorsMultipleBinding(opBindingFolder, layerOpA);
createOperatorBinding(layerOpBindingsA, propertyIsVisible, operatorBooleanAnd);
createOperatorBinding(layerOpBindingsA, propertyIsAbstract, operatorBooleanAnd);
LayerOperatorMultipleBinding layerOpBindingsB = createLayerOperatorsMultipleBinding(opBindingFolder, layerOpB);
createOperatorBinding(layerOpBindingsB, propertyIsVisible, operatorBooleanOr);
createOperatorBinding(layerOpBindingsB, propertyIsAbstract, operatorBooleanOr);
}
}