Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplGetComputePropertyCommandTest.java')
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplGetComputePropertyCommandTest.java397
1 files changed, 397 insertions, 0 deletions
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplGetComputePropertyCommandTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplGetComputePropertyCommandTest.java
new file mode 100644
index 00000000000..d0fbb6eddae
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplGetComputePropertyCommandTest.java
@@ -0,0 +1,397 @@
+/*******************************************************************************
+ * 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.impl;
+
+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.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.View;
+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.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+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.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.impl.FakeOperator.FakeCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class StackedLayerOperatorImplGetComputePropertyCommandTest {
+
+ private static final String FAKE_STACKED_LAYERS_OPERATOR_NAME = "FakeStackedLayersOperator";
+
+ /**
+ * @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.impl.StackedLayerOperatorImpl#StackedLayerOperatorImpl()}.
+ * @throws LayersException
+ */
+ @Test
+ public void testStackedLayerOperatorImpl() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = application.getLayerOperatorDescriptorRegistry();
+
+ // populate the StackedLayerOperator with appropriate descriptor.
+ LayersConfigModel model = new LayersConfigModel();
+ initLayersConfigWithTestStackedOperator(model, propertyRegistry);
+ RegistriesLoader loader = new RegistriesLoader(model);
+ loader.loadLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry, propertyRegistry);
+
+ // Know, create a LayerOperator
+ // Create a StackedLayerOperator
+ StackedLayerOperator layer = (StackedLayerOperator)layerOperatorDescriptorRegistry.getLayerOperatorDescriptor(FAKE_STACKED_LAYERS_OPERATOR_NAME).createLayerOperator();
+ layer.setApplication(application);
+
+ // Check object creation
+ assertNotNull( "object created", layer);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetComputePropertyValueCommand() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = application.getLayerOperatorDescriptorRegistry();
+
+ // populate the StackedLayerOperator with appropriate descriptor.
+ LayersConfigModel model = new LayersConfigModel();
+ initLayersConfigWithTestStackedOperator(model, propertyRegistry);
+ RegistriesLoader loader = new RegistriesLoader(model);
+ loader.loadLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry, propertyRegistry);
+
+ // Know, create a LayerOperator
+ // Create a StackedLayerOperator
+ StackedLayerOperator layer = (StackedLayerOperator)layerOperatorDescriptorRegistry.getLayerOperatorDescriptor(FAKE_STACKED_LAYERS_OPERATOR_NAME).createLayerOperator();
+ layer.setApplication(application);
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+ Property property3 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, Arrays.asList(view1), Arrays.asList(property1));
+
+ // Create layer2: views ={} propInstances={}
+ Layer layer2 = createLayer( layer, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+ // Create layer3: views ={} propInstances={}
+ Layer layer3 = createLayer( layer, Arrays.asList(view3), Arrays.asList(property2, property3));
+
+ // Checks
+ ComputePropertyValueCommand cmd = layer.getComputePropertyValueCommand(view2, property1);
+ assertNotNull("cmd created", cmd);
+ assertTrue("cmd is of Fake type", cmd instanceof FakeCommand );
+ assertSame("cmd has 1 sub command", 1, ((FakeCommand)cmd).nestedCommand.size());
+
+ cmd = layer.getComputePropertyValueCommand(view1, property1);
+ assertNotNull("cmd created", cmd);
+ assertTrue("cmd is of Fake type", cmd instanceof FakeCommand );
+ assertSame("cmd has 1 sub command", 2, ((FakeCommand)cmd).nestedCommand.size());
+
+ // Check not existing
+ cmd = layer.getComputePropertyValueCommand(view3, property1);
+ assertNull("cmd is null", cmd);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#getViewsComputePropertyValueCommand(java.util.List, org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetViewsComputePropertyValueCommandListOfViewProperty() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = application.getLayerOperatorDescriptorRegistry();
+
+ // populate the StackedLayerOperator with appropriate descriptor.
+ LayersConfigModel model = new LayersConfigModel();
+ initLayersConfigWithTestStackedOperator(model, propertyRegistry);
+ RegistriesLoader loader = new RegistriesLoader(model);
+ loader.loadLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry, propertyRegistry);
+
+ // Know, create a LayerOperator
+ // Create a StackedLayerOperator
+ StackedLayerOperator layer = (StackedLayerOperator)layerOperatorDescriptorRegistry.getLayerOperatorDescriptor(FAKE_STACKED_LAYERS_OPERATOR_NAME).createLayerOperator();
+ layer.setApplication(application);
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+ View view4 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+ Property property3 = propertyRegistry.getProperties().get(index++);
+ Property property4 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, Arrays.asList(view1), Arrays.asList(property1));
+
+ // Create layer2: views ={} propInstances={}
+ Layer layer2 = createLayer( layer, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+ // Create layer3: views ={} propInstances={}
+ Layer layer3 = createLayer( layer, Arrays.asList(view2, view3), Arrays.asList(property2, property3));
+
+ // Checks
+ List<ComputePropertyValueCommand> cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view2), property1);
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 2, cmds.size());
+ int i=0;
+ assertTrue("cmd is of Fake type", cmds.get(i) instanceof FakeCommand );
+ assertSame("cmd has 1 sub command", 2, ((FakeCommand)cmds.get(i)).nestedCommand.size());
+ i++;
+ assertTrue("cmd is of Fake type", cmds.get(i) instanceof FakeCommand );
+ assertSame("cmd has 1 sub command", 1, ((FakeCommand)cmds.get(i)).nestedCommand.size());
+
+ // Check wrong property2
+ cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view3), property3);
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 2, cmds.size());
+ i=0;
+ assertSame("cmd is null", null, cmds.get(i++));
+ assertTrue("cmd is of Fake type", cmds.get(i) instanceof FakeCommand );
+ assertSame("cmd has 1 sub command", 1, ((FakeCommand)cmds.get(i)).nestedCommand.size());
+
+ // Check wrong view
+ cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view4), property3);
+ assertNull("cmd created", cmds);
+
+ // Check wrong property
+ cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view2), property4);
+ assertNull("cmd created", cmds);
+
+ // Check list with null
+ cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, null, view3), property1);
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 3, cmds.size());
+ i=0;
+ assertTrue("cmd is of Fake type", cmds.get(i++) instanceof FakeCommand );
+ assertSame("cmd is null", null, cmds.get(i++));
+ assertSame("cmd is null", null, cmds.get(i++));
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, java.util.List)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetPropertiesComputePropertyValueCommandViewListOfProperty() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = application.getLayerOperatorDescriptorRegistry();
+
+ // populate the StackedLayerOperator with appropriate descriptor.
+ LayersConfigModel model = new LayersConfigModel();
+ initLayersConfigWithTestStackedOperator(model, propertyRegistry);
+ RegistriesLoader loader = new RegistriesLoader(model);
+ loader.loadLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry, propertyRegistry);
+
+ // Know, create a LayerOperator
+ // Create a StackedLayerOperator
+ StackedLayerOperator layer = (StackedLayerOperator)layerOperatorDescriptorRegistry.getLayerOperatorDescriptor(FAKE_STACKED_LAYERS_OPERATOR_NAME).createLayerOperator();
+ layer.setApplication(application);
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+ View view4 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+ Property property3 = propertyRegistry.getProperties().get(index++);
+ Property property4 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, Arrays.asList(view1), Arrays.asList(property1));
+
+ // Create layer2: views ={} propInstances={}
+ Layer layer2 = createLayer( layer, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+ // Create layer3: views ={} propInstances={}
+ Layer layer3 = createLayer( layer, Arrays.asList(view2,view3), Arrays.asList(property3));
+
+ // Check view
+ List<ComputePropertyValueCommand> cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property1, property2));
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 2, cmds.size());
+ int i=0;
+ assertTrue("cmd is of Fake type", cmds.get(i) instanceof FakeCommand );
+ assertSame("cmd has 1 sub command", 2, ((FakeCommand)cmds.get(i)).nestedCommand.size());
+ i++;
+ assertTrue("cmd is of Fake type", cmds.get(i) instanceof FakeCommand );
+ assertSame("cmd has 1 sub command", 1, ((FakeCommand)cmds.get(i)).nestedCommand.size());
+
+ // Check wrong property4
+ cmds = layer.getPropertiesComputePropertyValueCommand(view2, Arrays.asList(property1, property4));
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 2, cmds.size());
+ i=0;
+ assertTrue("cmd is of Fake type", cmds.get(i++) instanceof FakeCommand );
+ assertSame("cmd is the property instance", null, cmds.get(i++));
+
+ // Check wrong view
+ cmds = layer.getPropertiesComputePropertyValueCommand(view4, Arrays.asList(property3));
+ assertNull("cmd created", cmds);
+
+ // Check wrong view
+ cmds = layer.getPropertiesComputePropertyValueCommand(view3, Arrays.asList(property1, property2));
+ assertNull("cmd created", cmds);
+
+ // Check list with null
+ cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property1, null, property2));
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 3, cmds.size());
+ i=0;
+ assertTrue("cmd is of Fake type", cmds.get(i++) instanceof FakeCommand );
+ assertSame("cmd is null", null, cmds.get(i++));
+ assertTrue("cmd is of Fake type", cmds.get(i++) instanceof FakeCommand );
+
+ }
+
+ /**
+ * Create a layer with the specified view and property set
+ *
+ * @param asList
+ * @param asList2
+ * @return
+ * @throws LayersException
+ */
+ protected Layer createLayer(LayerOperator parent, List<View> views, List<Property> properties) throws LayersException {
+
+ // Create the layer
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+ // Set the application (needed ?)
+ layer.setApplication(parent.getApplication());
+ // Attach it to its parent
+ parent.getLayers().add(layer);
+
+
+ // Add views
+ for( View view : views) {
+ layer.getViews().add(view);
+ }
+
+ // Add property instances
+ for(Property property : properties) {
+ layer.addPropertyInstance(property);
+ }
+ return layer;
+ }
+
+ /**
+ * Create a config model ready to initialize the {@link LayerOperatorDescriptorRegistry} with
+ * a StackedLayerOperator containing FakeLayerOperator.
+ *
+ * @param model
+ */
+ private void initLayersConfigWithTestStackedOperator(LayersConfigModel model, PropertyRegistry propertyRegistry) {
+ // Create model
+ Folder layeropFolder = createFolder(model.getRootFolder(), "layerOpDesc");
+
+ // Create LayerOperators descriptor
+ LayerOperatorConfig fakeLayerOp = createLayerOperatorConfig(layeropFolder, FAKE_STACKED_LAYERS_OPERATOR_NAME, LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+
+ // Create Operators
+ Folder operatorFolder = createFolder(model.getRootFolder(), "operatorDesc");
+ OperatorConfig operator = createPropertyOperatorConfig(operatorFolder, "FakeOperator", FakeOperator.class.getName());
+
+
+ // Create basic types
+ Folder typeFolder = createFolder(model.getRootFolder(), "types");
+ TypeConfig typeBoolean = createTypeConfig(typeFolder, "boolean");
+
+ // Create properties
+ // Use the names of the first properties in registry
+ // Specify a type, but it is not used by framework
+ Folder propertiesFolder = createFolder(model.getRootFolder(), "properties");
+ int index = 0;
+ PropertyId property1 = createPropertyId(propertiesFolder, propertyRegistry.getProperties().get(index++).getName(), typeBoolean);
+ PropertyId property2 = createPropertyId(propertiesFolder, propertyRegistry.getProperties().get(index++).getName(), typeBoolean);
+ PropertyId property3 = createPropertyId(propertiesFolder, propertyRegistry.getProperties().get(index++).getName(), typeBoolean);
+
+ // Bind operators to layers
+ Folder opBindingFolder = createFolder(model.getRootFolder(), "opBindings");
+
+ LayerOperatorMultipleBinding layerOpBindingsA = createLayerOperatorsMultipleBinding(opBindingFolder, fakeLayerOp);
+ createOperatorBinding(layerOpBindingsA, property1, operator);
+ createOperatorBinding(layerOpBindingsA, property2, operator);
+ createOperatorBinding(layerOpBindingsA, property3, operator);
+ }
+
+}

Back to the top