| /******************************************************************************* |
| * Copyright (c) 2016 EclipseSource Muenchen GmbH and others. |
| * |
| * |
| * This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Alexandra Buzila - initial API and implementation |
| ******************************************************************************/ |
| |
| package org.eclipse.e4.ui.tests.workbench; |
| |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertTrue; |
| |
| import java.util.Arrays; |
| import java.util.HashSet; |
| import java.util.Iterator; |
| import java.util.List; |
| import java.util.Set; |
| import java.util.TreeSet; |
| import javax.annotation.PostConstruct; |
| import org.eclipse.e4.core.contexts.ContextInjectionFactory; |
| import org.eclipse.e4.core.contexts.IEclipseContext; |
| import org.eclipse.e4.ui.di.UISynchronize; |
| import org.eclipse.e4.ui.internal.workbench.E4XMIResource; |
| import org.eclipse.e4.ui.internal.workbench.E4XMIResourceFactory; |
| import org.eclipse.e4.ui.internal.workbench.ModelAssembler; |
| import org.eclipse.e4.ui.internal.workbench.ModelFragmentComparator; |
| import org.eclipse.e4.ui.internal.workbench.ModelFragmentWrapper; |
| import org.eclipse.e4.ui.internal.workbench.swt.E4Application; |
| import org.eclipse.e4.ui.model.application.MApplication; |
| import org.eclipse.e4.ui.model.application.MApplicationElement; |
| import org.eclipse.e4.ui.model.application.impl.ApplicationFactoryImpl; |
| import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory; |
| import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar; |
| import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow; |
| import org.eclipse.e4.ui.model.application.ui.basic.MWindow; |
| import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem; |
| import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem; |
| import org.eclipse.e4.ui.model.application.ui.menu.MMenu; |
| import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory; |
| import org.eclipse.e4.ui.model.application.ui.menu.MToolBar; |
| import org.eclipse.e4.ui.model.fragment.MFragmentFactory; |
| import org.eclipse.e4.ui.model.fragment.MModelFragments; |
| import org.eclipse.e4.ui.model.fragment.MStringModelFragment; |
| import org.eclipse.e4.ui.workbench.swt.DisplayUISynchronize; |
| import org.eclipse.emf.common.util.URI; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.ecore.resource.Resource; |
| import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; |
| import org.eclipse.swt.widgets.Display; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| /** |
| * Tests for the ordering of fragment contributions based on their declared |
| * position in list. |
| */ |
| public class ModelAssemblerFragmentOrderingTests { |
| |
| final private static String APPLICATION_ID = "org.eclipse.e4.ui.tests.modelassembler.fragmentordering.app"; |
| private IEclipseContext appContext; |
| private MApplication application; |
| private E4XMIResourceFactory factory; |
| private ResourceSetImpl resourceSet; |
| private E4XMIResource appResource; |
| private ModelAssembler assembler; |
| private MToolBar toolBar; |
| private static final String MAIN_TOOLBAR_ID = "org.eclipse.e4.ui.tests.modelassembler.fragmentordering.mainWindow.mainToolBar"; |
| private static final String MAIN_WINDOW_ID = "org.eclipse.e4.ui.tests.modelassembler.fragmentordering.mainWindow"; |
| |
| @Before |
| public void setup() { |
| appContext = E4Application.createDefaultContext(); |
| application = ApplicationFactoryImpl.eINSTANCE.createApplication(); |
| application.setElementId(APPLICATION_ID); |
| application.setContext(appContext); |
| |
| appContext.set(MApplication.class, application); |
| appContext.set(UISynchronize.class, new DisplayUISynchronize(Display.getDefault())); |
| |
| factory = new E4XMIResourceFactory(); |
| appResource = (E4XMIResource) factory.createResource(URI.createURI("virtualuri")); |
| resourceSet = new ResourceSetImpl(); |
| resourceSet.getResources().add(appResource); |
| appResource.getContents().add((EObject) application); |
| assembler = new ModelAssembler(); |
| ContextInjectionFactory.invoke(assembler, PostConstruct.class, appContext); |
| createWindowWithToolbar(); |
| } |
| |
| /** |
| * Adds a trimmed window with an empty toolbar to the application. |
| */ |
| private void createWindowWithToolbar() { |
| MTrimmedWindow window = MBasicFactory.INSTANCE.createTrimmedWindow(); |
| window.setElementId(MAIN_WINDOW_ID); |
| |
| MTrimBar trimBar = MBasicFactory.INSTANCE.createTrimBar(); |
| trimBar.setElementId(MAIN_WINDOW_ID+".trimBar"); |
| toolBar = MMenuFactory.INSTANCE.createToolBar(); |
| toolBar.setElementId(MAIN_TOOLBAR_ID); |
| |
| trimBar.getChildren().add(toolBar); |
| window.getTrimBars().add(trimBar); |
| application.getChildren().add(window); |
| } |
| |
| private ModelFragmentWrapper createFragmentWrapper(MModelFragments fragmentsContainer, String featureName, |
| String parentElementId, List<? extends MApplicationElement> contributedElements, String positionInList, |
| String contributorName, String contributorURI, boolean checkExists) { |
| MStringModelFragment fragment = MFragmentFactory.INSTANCE.createStringModelFragment(); |
| fragment.setFeaturename(featureName); |
| fragment.setParentElementId(parentElementId); |
| fragment.getElements().addAll(contributedElements); |
| fragment.setPositionInList(positionInList); |
| fragmentsContainer.getFragments().add(fragment); |
| return new ModelFragmentWrapper(fragmentsContainer, fragment, contributorName, |
| contributorURI, checkExists); |
| } |
| |
| /** |
| * Empty application. |
| * <p> |
| * Contributed fragments: |
| * <li>fragment1 - menu item a |
| * <li>fragment2 - menu item b |
| * <li>fragment3 - menu item c |
| * <p> |
| * Expected result: a, b, c. |
| */ |
| @Test |
| public void testInvalidPositionEmptyApplication() { |
| assertTrue(toolBar.getChildren().isEmpty()); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testNoPositionEmptyApplication"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| ModelFragmentWrapper fragmentWrapperA = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), null, contributorName, contributorURI, false); |
| |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| ModelFragmentWrapper fragmentWrapperB = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "", contributorName, contributorURI, false); |
| |
| MModelFragments fragmentsContainerC = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerC); |
| MHandledToolItem c = MMenuFactory.INSTANCE.createHandledToolItem(); |
| c.setElementId("c"); |
| ModelFragmentWrapper fragmentWrapperC = createFragmentWrapper(fragmentsContainerC, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(c), "qwerty", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapperA, fragmentWrapperB, fragmentWrapperC)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapperA, iterator.next()); |
| assertEquals(fragmentWrapperB, iterator.next()); |
| assertEquals(fragmentWrapperC, iterator.next()); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(a, toolBar.getChildren().get(0)); |
| assertEquals(b, toolBar.getChildren().get(1)); |
| assertEquals(c, toolBar.getChildren().get(2)); |
| } |
| |
| @Test |
| public void testInvalidPositionNotEmptyApplication() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testNoPositionNotEmptyApplication"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| ModelFragmentWrapper fragmentWrapperA = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "", contributorName, contributorURI, false); |
| |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| ModelFragmentWrapper fragmentWrapperB = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), null, contributorName, contributorURI, false); |
| |
| MModelFragments fragmentsContainerC = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerC); |
| MHandledToolItem c = MMenuFactory.INSTANCE.createHandledToolItem(); |
| c.setElementId("c"); |
| ModelFragmentWrapper fragmentWrapperC = createFragmentWrapper(fragmentsContainerC, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(c), "qwerty", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapperA, fragmentWrapperB, fragmentWrapperC)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapperA, iterator.next()); |
| assertEquals(fragmentWrapperB, iterator.next()); |
| assertEquals(fragmentWrapperC, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(6, toolBar.getChildren().size()); |
| assertEquals(a, toolBar.getChildren().get(3)); |
| assertEquals(b, toolBar.getChildren().get(4)); |
| assertEquals(c, toolBar.getChildren().get(5)); |
| } |
| |
| @Test |
| public void testIncorrectIndexEmptyApplication() { |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testIncorrectIndex1"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| ModelFragmentWrapper fragmentWrapperA = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "index:-70", contributorName, contributorURI, false); |
| |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| ModelFragmentWrapper fragmentWrapperB = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "index:70", contributorName, contributorURI, false); |
| |
| assertTrue(toolBar.getChildren().isEmpty()); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapperA, fragmentWrapperB)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapperA, iterator.next()); |
| assertEquals(fragmentWrapperB, iterator.next()); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(2, toolBar.getChildren().size()); |
| assertEquals(a, toolBar.getChildren().get(0)); |
| assertEquals(b, toolBar.getChildren().get(1)); |
| } |
| |
| @Test |
| public void testIncorrectIndexNotEmptyApplication() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testIncorrectIndex1"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| ModelFragmentWrapper fragmentWrapperA = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "index:-70", contributorName, contributorURI, false); |
| |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| ModelFragmentWrapper fragmentWrapperB = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "index:70", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapperA, fragmentWrapperB)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapperA, iterator.next()); |
| assertEquals(fragmentWrapperB, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(5, toolBar.getChildren().size()); |
| assertEquals(a, toolBar.getChildren().get(3)); |
| assertEquals(b, toolBar.getChildren().get(4)); |
| } |
| |
| /** |
| * Empty application. |
| * <p> |
| * Contributed fragments: |
| * <li>fragment1 - menu item a - index:1 |
| * <li>fragment2 - menu item b - index:2 |
| * <li>fragment3 - menu item c - index:3 |
| * <p> |
| * Expected result: a, b, c. |
| */ |
| @Test |
| public void testIndex1EmptyApplication() { |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testIndex1"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| MModelFragments fragmentsContainerC = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerC); |
| MHandledToolItem c = MMenuFactory.INSTANCE.createHandledToolItem(); |
| c.setElementId("c"); |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "index:1", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "index:2", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper3 = createFragmentWrapper(fragmentsContainerC, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(c), "index:3", contributorName, contributorURI, false); |
| |
| assertTrue(toolBar.getChildren().isEmpty()); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2, fragmentWrapper3)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| assertEquals(fragmentWrapper3, iterator.next()); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(a, toolBar.getChildren().get(0)); |
| assertEquals(b, toolBar.getChildren().get(1)); |
| assertEquals(c, toolBar.getChildren().get(2)); |
| } |
| |
| /** |
| * Empty application. |
| * <p> |
| * Contributed fragments: |
| * <li>fragment1 - menu item a - index:3 |
| * <li>fragment2 - menu item b - index:2 |
| * <li>fragment3 - menu item c - index:1 |
| * <p> |
| * Expected result: c, b, a. |
| */ |
| @Test |
| public void testIndex2EmptyApplication() { |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testIndex2"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| MModelFragments fragmentsContainerC = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerC); |
| MHandledToolItem c = MMenuFactory.INSTANCE.createHandledToolItem(); |
| c.setElementId("c"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "index:3", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "index:2", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper3 = createFragmentWrapper(fragmentsContainerC, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(c), "index:1", contributorName, contributorURI, false); |
| |
| assertTrue(toolBar.getChildren().isEmpty()); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2, fragmentWrapper3)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper3, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(c, toolBar.getChildren().get(0)); |
| assertEquals(b, toolBar.getChildren().get(1)); |
| assertEquals(a, toolBar.getChildren().get(2)); |
| } |
| |
| /** |
| * Empty application. |
| * <p> |
| * Contributed fragments: |
| * <li>fragment1 - menu item a - index:3 |
| * <li>fragment2 - menu item b - index:1 |
| * <li>fragment3 - menu item c - index:2 |
| * <p> |
| * Expected result: c, b, a. |
| */ |
| @Test |
| public void testIndex3EmptyApplication() { |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testIndex3"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| MModelFragments fragmentsContainerC = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerC); |
| MHandledToolItem c = MMenuFactory.INSTANCE.createHandledToolItem(); |
| c.setElementId("c"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "index:3", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "index:1", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper3 = createFragmentWrapper(fragmentsContainerC, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(c), "index:2", contributorName, contributorURI, false); |
| |
| assertTrue(toolBar.getChildren().isEmpty()); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2, fragmentWrapper3)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| assertEquals(fragmentWrapper3, iterator.next()); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(b, toolBar.getChildren().get(0)); |
| assertEquals(c, toolBar.getChildren().get(1)); |
| assertEquals(a, toolBar.getChildren().get(2)); |
| } |
| |
| /** |
| * Application with menu items x y z . |
| * <p> |
| * Contributed fragments: |
| * <li>fragment1 - menu item a - index:9 |
| * <li>fragment2 - menu item b - index:1 |
| * <li>fragment3 - menu item c - index:0 |
| * <li>fragment4 - menu item d - index:3 |
| * <p> |
| * Expected result: c, b, x, d, y, z, a |
| */ |
| @Test |
| public void testIndex4NotEmptyApplication() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testIndex4"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| MModelFragments fragmentsContainerC = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerC); |
| MHandledToolItem c = MMenuFactory.INSTANCE.createHandledToolItem(); |
| c.setElementId("c"); |
| MModelFragments fragmentsContainerD = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerD); |
| MHandledToolItem d = MMenuFactory.INSTANCE.createHandledToolItem(); |
| d.setElementId("d"); |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "index:9", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "index:1", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper3 = createFragmentWrapper(fragmentsContainerC, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(c), "index:0", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper4 = createFragmentWrapper(fragmentsContainerD, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(d), "index:3", contributorName, contributorURI, false); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2, fragmentWrapper3, fragmentWrapper4)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper3, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| assertEquals(fragmentWrapper4, iterator.next()); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(c, toolBar.getChildren().get(0)); |
| assertEquals(b, toolBar.getChildren().get(1)); |
| assertEquals(x, toolBar.getChildren().get(2)); |
| assertEquals(d, toolBar.getChildren().get(3)); |
| assertEquals(y, toolBar.getChildren().get(4)); |
| assertEquals(z, toolBar.getChildren().get(5)); |
| assertEquals(a, toolBar.getChildren().get(6)); |
| } |
| |
| @Test |
| public void testFirstEmptyApplication() { |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testFirstEmptyApplication"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "first", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper)); |
| |
| assertEquals(0, toolBar.getChildren().size()); |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(1, toolBar.getChildren().size()); |
| assertEquals(a, toolBar.getChildren().get(0)); |
| } |
| |
| @Test |
| public void testFirstNotEmptyApplication() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testFirstNotEmptyApplication"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "first", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper)); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(a, toolBar.getChildren().get(0)); |
| assertEquals(x, toolBar.getChildren().get(1)); |
| assertEquals(y, toolBar.getChildren().get(2)); |
| assertEquals(z, toolBar.getChildren().get(3)); |
| } |
| |
| @Test |
| public void testFirstMultipleElements() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testFirstMultipleElements"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| MModelFragments fragmentsContainerC = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerC); |
| MHandledToolItem c = MMenuFactory.INSTANCE.createHandledToolItem(); |
| c.setElementId("c"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "first", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "first", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper3 = createFragmentWrapper(fragmentsContainerC, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(c), "first", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2, fragmentWrapper3)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| assertEquals(fragmentWrapper3, iterator.next()); |
| |
| assertEquals(1, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(4, toolBar.getChildren().size()); |
| assertEquals(c, toolBar.getChildren().get(0)); |
| assertEquals(b, toolBar.getChildren().get(1)); |
| assertEquals(a, toolBar.getChildren().get(2)); |
| assertEquals(x, toolBar.getChildren().get(3)); |
| } |
| |
| @Test |
| public void testLastEmptyApplication() { |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testLastEmptyApplication"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "last", contributorName, contributorURI, false); |
| |
| assertEquals(0, toolBar.getChildren().size()); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(1, toolBar.getChildren().size()); |
| assertEquals(a, toolBar.getChildren().get(0)); |
| } |
| |
| @Test |
| public void testLastNotEmptyApplication() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testLastNotEmptyApplication"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "last", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper)); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| assertEquals(a, toolBar.getChildren().get(3)); |
| } |
| |
| |
| @Test |
| public void testLastMultipleElements() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testLastMultipleElements"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "last", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "last", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(5, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| assertEquals(a, toolBar.getChildren().get(3)); |
| assertEquals(b, toolBar.getChildren().get(4)); |
| } |
| |
| @Test |
| public void testBeforeApplicationReferences() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testBefore"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| MHandledToolItem c = MMenuFactory.INSTANCE.createHandledToolItem(); |
| c.setElementId("c"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainer, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "before:x", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainer, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "before:y", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper3 = createFragmentWrapper(fragmentsContainer, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(c), "before:z", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2, fragmentWrapper3)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper3, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(a, toolBar.getChildren().get(0)); |
| assertEquals(x, toolBar.getChildren().get(1)); |
| assertEquals(b, toolBar.getChildren().get(2)); |
| assertEquals(y, toolBar.getChildren().get(3)); |
| assertEquals(c, toolBar.getChildren().get(4)); |
| assertEquals(z, toolBar.getChildren().get(5)); |
| } |
| |
| @Test |
| public void testBeforeNoReference() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testBeforeEmptyTag"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainer, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "before:", contributorName, contributorURI, false); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1)); |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(4, toolBar.getChildren().size()); |
| assertEquals(a, toolBar.getChildren().get(3)); |
| } |
| @Test |
| public void testBeforeIncorrectRefElement() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testBeforeIncorrectRefElement"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainer, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "before:w", contributorName, contributorURI, false); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1)); |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(4, toolBar.getChildren().size()); |
| assertEquals(a, toolBar.getChildren().get(3)); |
| } |
| |
| @Test |
| public void testBeforeFragmentReference1() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testBeforeFragmentReference"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "before:y", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "before:a", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(5, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(b, toolBar.getChildren().get(1)); |
| assertEquals(a, toolBar.getChildren().get(2)); |
| assertEquals(y, toolBar.getChildren().get(3)); |
| assertEquals(z, toolBar.getChildren().get(4)); |
| } |
| |
| /** |
| * Same test as testBeforeFragmentReference, but the fragments are |
| * contributed in a different order. |
| */ |
| @Test |
| public void testBeforeFragmentReference2() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testBeforeFragmentReference2"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "before:a", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "before:y", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(5, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(b, toolBar.getChildren().get(1)); |
| assertEquals(a, toolBar.getChildren().get(2)); |
| assertEquals(y, toolBar.getChildren().get(3)); |
| assertEquals(z, toolBar.getChildren().get(4)); |
| } |
| |
| @Test |
| public void testBeforeFragmentReference3() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testBeforeFragmentReference3"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| MModelFragments fragmentsContainerC = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerC); |
| MHandledToolItem c = MMenuFactory.INSTANCE.createHandledToolItem(); |
| c.setElementId("c"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "before:b", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "before:c", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper3 = createFragmentWrapper(fragmentsContainerC, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(c), "before:y", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2, fragmentWrapper3)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper3, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(6, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(a, toolBar.getChildren().get(1)); |
| assertEquals(b, toolBar.getChildren().get(2)); |
| assertEquals(c, toolBar.getChildren().get(3)); |
| assertEquals(y, toolBar.getChildren().get(4)); |
| assertEquals(z, toolBar.getChildren().get(5)); |
| } |
| |
| @Test |
| public void testBeforeCrossReference() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testBeforeCrossReference"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "before:b", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "before:a", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(5, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| assertEquals(b, toolBar.getChildren().get(3)); |
| assertEquals(a, toolBar.getChildren().get(4)); |
| |
| } |
| |
| /** |
| * Tests merging of a fragment declared to be before a fragment with no |
| * position. |
| */ |
| @Test |
| public void testBeforeFragmentNoPosition() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testBeforeFragmentNoPosition"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| MModelFragments fragmentsContainerC = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerC); |
| MHandledToolItem c = MMenuFactory.INSTANCE.createHandledToolItem(); |
| c.setElementId("c"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "before:b", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), null, contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper3 = createFragmentWrapper(fragmentsContainerC, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(c), "last", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2, fragmentWrapper3)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| assertEquals(fragmentWrapper3, iterator.next()); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(6, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| assertEquals(a, toolBar.getChildren().get(3)); |
| assertEquals(b, toolBar.getChildren().get(4)); |
| assertEquals(c, toolBar.getChildren().get(5)); |
| } |
| |
| @Test |
| public void testAfterApplicationReferences() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testAfter"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| MModelFragments fragmentsContainerC = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerC); |
| MHandledToolItem c = MMenuFactory.INSTANCE.createHandledToolItem(); |
| c.setElementId("c"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "after:x", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "after:y", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper3 = createFragmentWrapper(fragmentsContainerC, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(c), "after:z", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2, fragmentWrapper3)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper3, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(a, toolBar.getChildren().get(1)); |
| assertEquals(y, toolBar.getChildren().get(2)); |
| assertEquals(b, toolBar.getChildren().get(3)); |
| assertEquals(z, toolBar.getChildren().get(4)); |
| assertEquals(c, toolBar.getChildren().get(5)); |
| } |
| |
| @Test |
| public void testAfterNoReference() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testAfterEmptyTag"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "after:", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper)); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(4, toolBar.getChildren().size()); |
| assertEquals(a, toolBar.getChildren().get(3)); |
| } |
| |
| @Test |
| public void testAfterIncorrectRefElement() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testAfterIncorrectRefElement"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainer, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "after:w", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1)); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(4, toolBar.getChildren().size()); |
| assertEquals(a, toolBar.getChildren().get(3)); |
| } |
| |
| @Test |
| public void testAfterFragmentReference1() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testAfterFragmentReference"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "after:y", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "after:a", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(5, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(a, toolBar.getChildren().get(2)); |
| assertEquals(b, toolBar.getChildren().get(3)); |
| assertEquals(z, toolBar.getChildren().get(4)); |
| } |
| |
| /** |
| * Same test as testAfterFragmentReference1, but the fragments are |
| * contributed in a different order. |
| */ |
| @Test |
| public void testAfterFragmentReference2() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the contributed elements |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| |
| // the fragments |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| |
| final String contributorName = "testAfterFragmentReference1"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainer, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "after:a", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainer, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "after:y", contributorName, contributorURI, false); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(5, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(a, toolBar.getChildren().get(2)); |
| assertEquals(b, toolBar.getChildren().get(3)); |
| assertEquals(z, toolBar.getChildren().get(4)); |
| } |
| |
| @Test |
| public void testAfterFragmentReference3() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testAfterFragmentReference3"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| MModelFragments fragmentsContainerC = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerC); |
| MHandledToolItem c = MMenuFactory.INSTANCE.createHandledToolItem(); |
| c.setElementId("c"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "after:b", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "after:c", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper3 = createFragmentWrapper(fragmentsContainerC, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(c), "after:y", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2, fragmentWrapper3)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper3, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(6, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(c, toolBar.getChildren().get(2)); |
| assertEquals(b, toolBar.getChildren().get(3)); |
| assertEquals(a, toolBar.getChildren().get(4)); |
| assertEquals(z, toolBar.getChildren().get(5)); |
| } |
| |
| /** |
| * Tests merging of a fragment declared to be after a fragment with no |
| * position. |
| */ |
| @Test |
| public void testAfterFragmentNoPosition() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testAfterFragmentNoPosition"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| MModelFragments fragmentsContainerC = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerC); |
| MHandledToolItem c = MMenuFactory.INSTANCE.createHandledToolItem(); |
| c.setElementId("c"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "after:b", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper3 = createFragmentWrapper(fragmentsContainerC, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(c), "last", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper3, fragmentWrapper1, fragmentWrapper2)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| assertEquals(fragmentWrapper3, iterator.next()); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(6, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| assertEquals(b, toolBar.getChildren().get(3)); |
| assertEquals(a, toolBar.getChildren().get(4)); |
| assertEquals(c, toolBar.getChildren().get(5)); |
| } |
| |
| @Test |
| public void testAfterCrossReference() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testAfterCrossReference"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "after:b", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "after:a", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(5, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| assertEquals(a, toolBar.getChildren().get(3)); |
| assertEquals(b, toolBar.getChildren().get(4)); |
| } |
| |
| @Test |
| public void testAfterBeforeCrossReference() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testAfterBeforeCrossReference"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "after:b", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "before:a", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(5, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| assertEquals(b, toolBar.getChildren().get(3)); |
| assertEquals(a, toolBar.getChildren().get(4)); |
| } |
| |
| @Test |
| public void testFirstBefore() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testFirstBefore"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "first", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "before:a", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(5, toolBar.getChildren().size()); |
| assertEquals(b, toolBar.getChildren().get(0)); |
| assertEquals(a, toolBar.getChildren().get(1)); |
| assertEquals(x, toolBar.getChildren().get(2)); |
| assertEquals(y, toolBar.getChildren().get(3)); |
| assertEquals(z, toolBar.getChildren().get(4)); |
| } |
| |
| @Test |
| public void testLastAfter() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testLastAfter"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "last", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "after:a", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(5, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| assertEquals(a, toolBar.getChildren().get(3)); |
| assertEquals(b, toolBar.getChildren().get(4)); |
| } |
| |
| @Test |
| public void testOrderAndMerge() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testFirstNotEmptyApplication"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| MModelFragments fragmentsContainerC = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerC); |
| MHandledToolItem c = MMenuFactory.INSTANCE.createHandledToolItem(); |
| c.setElementId("c"); |
| MModelFragments fragmentsContainerD = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerD); |
| MHandledToolItem d = MMenuFactory.INSTANCE.createHandledToolItem(); |
| d.setElementId("d"); |
| MModelFragments fragmentsContainerE = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerE); |
| MHandledToolItem e = MMenuFactory.INSTANCE.createHandledToolItem(); |
| e.setElementId("e"); |
| MModelFragments fragmentsContainerF = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerF); |
| MHandledToolItem f = MMenuFactory.INSTANCE.createHandledToolItem(); |
| f.setElementId("f"); |
| MModelFragments fragmentsContainerG = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerG); |
| MHandledToolItem g = MMenuFactory.INSTANCE.createHandledToolItem(); |
| g.setElementId("g"); |
| MModelFragments fragmentsContainerH = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerH); |
| MHandledToolItem h = MMenuFactory.INSTANCE.createHandledToolItem(); |
| h.setElementId("h"); |
| MModelFragments fragmentsContainerI = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerI); |
| MHandledToolItem i = MMenuFactory.INSTANCE.createHandledToolItem(); |
| i.setElementId("i"); |
| MModelFragments fragmentsContainerJ = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerJ); |
| MHandledToolItem j = MMenuFactory.INSTANCE.createHandledToolItem(); |
| j.setElementId("j"); |
| MModelFragments fragmentsContainerK = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerK); |
| MHandledToolItem k = MMenuFactory.INSTANCE.createHandledToolItem(); |
| k.setElementId("k"); |
| ModelFragmentWrapper fragmentWrapperA = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "first", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapperB = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "last", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapperC = createFragmentWrapper(fragmentsContainerC, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(c), null, contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapperD = createFragmentWrapper(fragmentsContainerD, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(d), "", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapperE = createFragmentWrapper(fragmentsContainerE, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(e), "qwert", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapperF = createFragmentWrapper(fragmentsContainerF, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(f), "index:1", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapperG = createFragmentWrapper(fragmentsContainerG, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(g), "index:-1", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapperH = createFragmentWrapper(fragmentsContainerH, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(h), "before:x", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapperI = createFragmentWrapper(fragmentsContainerI, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(i), "before:a", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapperJ = createFragmentWrapper(fragmentsContainerJ, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(j), "after:z", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapperK = createFragmentWrapper(fragmentsContainerK, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(k), "after:b", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapperA, fragmentWrapperB, fragmentWrapperC, fragmentWrapperD, |
| fragmentWrapperE, fragmentWrapperF, fragmentWrapperG, fragmentWrapperH, fragmentWrapperI, |
| fragmentWrapperJ, fragmentWrapperK)); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapperG, iterator.next()); |
| assertEquals(fragmentWrapperF, iterator.next()); |
| assertEquals(fragmentWrapperC, iterator.next()); |
| assertEquals(fragmentWrapperD, iterator.next()); |
| assertEquals(fragmentWrapperE, iterator.next()); |
| assertEquals(fragmentWrapperA, iterator.next()); |
| assertEquals(fragmentWrapperB, iterator.next()); |
| assertEquals(fragmentWrapperJ, iterator.next()); |
| assertEquals(fragmentWrapperH, iterator.next()); |
| assertEquals(fragmentWrapperI, iterator.next()); |
| assertEquals(fragmentWrapperK, iterator.next()); |
| |
| assertEquals(3, toolBar.getChildren().size()); |
| assertEquals(x, toolBar.getChildren().get(0)); |
| assertEquals(y, toolBar.getChildren().get(1)); |
| assertEquals(z, toolBar.getChildren().get(2)); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(i, toolBar.getChildren().get(0)); |
| assertEquals(a, toolBar.getChildren().get(1)); |
| assertEquals(h, toolBar.getChildren().get(2)); |
| assertEquals(x, toolBar.getChildren().get(3)); |
| assertEquals(f, toolBar.getChildren().get(4)); |
| assertEquals(y, toolBar.getChildren().get(5)); |
| assertEquals(z, toolBar.getChildren().get(6)); |
| assertEquals(j, toolBar.getChildren().get(7)); |
| assertEquals(g, toolBar.getChildren().get(8)); |
| assertEquals(c, toolBar.getChildren().get(9)); |
| assertEquals(d, toolBar.getChildren().get(10)); |
| assertEquals(e, toolBar.getChildren().get(11)); |
| assertEquals(b, toolBar.getChildren().get(12)); |
| assertEquals(k, toolBar.getChildren().get(13)); |
| } |
| |
| /** |
| * Test Model: |
| * |
| * <pre> |
| * Menu 0 |
| * Menu 0.0 index:1 |
| * MenuItem 0.0.0 index:0 |
| * MenuItem 0.0.1 index:10 |
| * Menu 0.1 index:10 |
| * Menu 0.2 index:20 |
| * </pre> |
| */ |
| @Test |
| public void testMenuAndItemsInFragments() { |
| // initial application elements |
| MWindow window = application.getChildren().get(0); |
| MMenu menu0 = MMenuFactory.INSTANCE.createMenu(); |
| window.setMainMenu(menu0); |
| menu0.setElementId("menu0"); |
| |
| Set<ModelFragmentWrapper> fragmentList = new HashSet<>(); |
| // fragment preparations |
| MMenu menu00 = MMenuFactory.INSTANCE.createMenu(); |
| menu00.setElementId("menu00"); |
| MMenu menu01 = MMenuFactory.INSTANCE.createMenu(); |
| menu01.setElementId("menu01"); |
| MMenu menu02 = MMenuFactory.INSTANCE.createMenu(); |
| menu02.setElementId("menu02"); |
| MHandledMenuItem menuitem000 = MMenuFactory.INSTANCE.createHandledMenuItem(); |
| menuitem000.setElementId("menuitem000"); |
| MHandledMenuItem menuitem001 = MMenuFactory.INSTANCE.createHandledMenuItem(); |
| menuitem001.setElementId("menuitem001"); |
| // the fragments |
| { |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri1")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "menu00"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", "menu0", |
| Arrays.asList(menu00), "index:1", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapper); |
| } |
| { |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri2")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "menu01"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", "menu0", |
| Arrays.asList(menu01), "index:10", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapper); |
| } |
| { |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri3")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "menu02"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", "menu0", |
| Arrays.asList(menu02), "index:20", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapper); |
| } |
| { |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri4")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "menuitem000"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", "menu00", |
| Arrays.asList(menuitem000), "index:0", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapper); |
| } |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri5")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "menuitem001"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", "menu00", |
| Arrays.asList(menuitem001), "index:10", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapper); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(3, menu0.getChildren().size()); |
| assertEquals(menu00, menu0.getChildren().get(0)); |
| assertEquals(menu01, menu0.getChildren().get(1)); |
| assertEquals(menu02, menu0.getChildren().get(2)); |
| assertEquals(2, menu00.getChildren().size()); |
| assertEquals(menuitem000, menu00.getChildren().get(0)); |
| assertEquals(menuitem001, menu00.getChildren().get(1)); |
| } |
| |
| /** |
| * Test Model: |
| * |
| * <pre> |
| * Menu 0 |
| * Menu 0.0 index:1 |
| * MenuItem 0.0.0 index:0 |
| * MenuItem 0.0.1 index:3 |
| * MenuItem 0.0.2 index:20 |
| * Menu 0.1 index:10 |
| * Menu 0.2 index:20 |
| * </pre> |
| * |
| * <p> |
| * Menu0 is contained in the application model |
| * <p> |
| * fragment1 contributes MenuItem 0.0.0, MenuItem 0.0.2, Menu 0.1 and |
| * imports Menu 0.0 from fragment2 |
| * <p> |
| * fragment2 contributes Menu0.0, Menu 0.2 and MenuItem 0.0.1 |
| * |
| * |
| */ |
| @Test |
| public void testMenuAndItemsInFragmentsWithImports() { |
| // initial application elements |
| MWindow window = application.getChildren().get(0); |
| MMenu menu0 = MMenuFactory.INSTANCE.createMenu(); |
| window.setMainMenu(menu0); |
| menu0.setElementId("menu0"); |
| |
| Set<ModelFragmentWrapper> fragmentList = new HashSet<>(); |
| // fragment preparations |
| MMenu menu00 = MMenuFactory.INSTANCE.createMenu(); |
| menu00.setElementId("menu00"); |
| MMenu menu01 = MMenuFactory.INSTANCE.createMenu(); |
| menu01.setElementId("menu01"); |
| MMenu menu02 = MMenuFactory.INSTANCE.createMenu(); |
| menu02.setElementId("menu02"); |
| MHandledMenuItem menuitem000 = MMenuFactory.INSTANCE.createHandledMenuItem(); |
| menuitem000.setElementId("menuitem000"); |
| MHandledMenuItem menuitem001 = MMenuFactory.INSTANCE.createHandledMenuItem(); |
| menuitem001.setElementId("menuitem001"); |
| MHandledMenuItem menuitem002 = MMenuFactory.INSTANCE.createHandledMenuItem(); |
| menuitem002.setElementId("menuitem002"); |
| // the fragments |
| { |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri1")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "fragment1"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| |
| ModelFragmentWrapper fragmentWrapperMenuItem000 = createFragmentWrapper(fragmentsContainer, "children", |
| "menu00", Arrays.asList(menuitem000), "index:0", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapperMenuItem000); |
| ModelFragmentWrapper fragmentWrapperMenuItem002 = createFragmentWrapper(fragmentsContainer, "children", |
| "menu00", Arrays.asList(menuitem002), "index:20", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapperMenuItem002); |
| ModelFragmentWrapper fragmentWrapperMenu01 = createFragmentWrapper(fragmentsContainer, "children", "menu0", |
| Arrays.asList(menu01), "index:10", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapperMenu01); |
| |
| fragmentsContainer.getImports().add(menu00); |
| } |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri2")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "fragment2"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| |
| ModelFragmentWrapper fragmentWrapperMenu00 = createFragmentWrapper(fragmentsContainer, "children", "menu0", |
| Arrays.asList(menu00), "index:1", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapperMenu00); |
| ModelFragmentWrapper fragmentWrapperMenu02 = createFragmentWrapper(fragmentsContainer, "children", "menu0", |
| Arrays.asList(menu02), "index:20", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapperMenu02); |
| ModelFragmentWrapper fragmentWrapperMenuItem001 = createFragmentWrapper(fragmentsContainer, "children", |
| "menu00", Arrays.asList(menuitem001), "index:3", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapperMenuItem001); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(3, menu0.getChildren().size()); |
| assertEquals(menu00, menu0.getChildren().get(0)); |
| assertEquals(menu01, menu0.getChildren().get(1)); |
| assertEquals(menu02, menu0.getChildren().get(2)); |
| assertEquals(3, menu00.getChildren().size()); |
| assertEquals(menuitem000, menu00.getChildren().get(0)); |
| assertEquals(menuitem001, menu00.getChildren().get(1)); |
| assertEquals(menuitem002, menu00.getChildren().get(2)); |
| } |
| |
| /** |
| * Test Model: |
| * |
| * <pre> |
| * Menu |
| * Menu 1 index:10 |
| * Menu 2 index:20 |
| * Menu 3 index:0 |
| * </pre> |
| * |
| * merge Menu 3 -> Menu 1 -> Menu 2 |
| */ |
| @Test |
| public void testMenuAndItemsInFragments2() { |
| // initial application elements |
| MWindow window = application.getChildren().get(0); |
| MMenu menu = MMenuFactory.INSTANCE.createMenu(); |
| window.setMainMenu(menu); |
| menu.setElementId("menu"); |
| |
| Set<ModelFragmentWrapper> fragmentList = new HashSet<>(); |
| // fragment preparations |
| MMenu menu1 = MMenuFactory.INSTANCE.createMenu(); |
| menu1.setElementId("menu1"); |
| MMenu menu2 = MMenuFactory.INSTANCE.createMenu(); |
| menu2.setElementId("menu2"); |
| MMenu menu3 = MMenuFactory.INSTANCE.createMenu(); |
| menu3.setElementId("menu3"); |
| // the fragments |
| { |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri3")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "menu3"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", "menu2", |
| Arrays.asList(menu3), "index:0", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapper); |
| } |
| { |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri1")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "menu1"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", "menu", |
| Arrays.asList(menu1), "index:10", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapper); |
| } |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri2")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "menu2"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", "menu1", |
| Arrays.asList(menu2), "index:20", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapper); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(1, menu.getChildren().size()); |
| assertEquals(menu1, menu.getChildren().get(0)); |
| assertEquals(menu2, menu1.getChildren().get(0)); |
| assertEquals(menu3, menu2.getChildren().get(0)); |
| } |
| |
| /** |
| * Test Model: |
| * |
| * <pre> |
| * Menu |
| * Menu 1 index:10 |
| * Menu 2 index:20 |
| * Menu 3 index:0 |
| * </pre> |
| * |
| * merge Menu 1 -> Menu 3 -> Menu 2 |
| */ |
| @Test |
| public void testMenuAndItemsInFragments3() { |
| // initial application elements |
| MWindow window = application.getChildren().get(0); |
| MMenu menu = MMenuFactory.INSTANCE.createMenu(); |
| window.setMainMenu(menu); |
| menu.setElementId("menu"); |
| |
| Set<ModelFragmentWrapper> fragmentList = new HashSet<>(); |
| // fragment preparations |
| MMenu menu1 = MMenuFactory.INSTANCE.createMenu(); |
| menu1.setElementId("menu1"); |
| MMenu menu2 = MMenuFactory.INSTANCE.createMenu(); |
| menu2.setElementId("menu2"); |
| MMenu menu3 = MMenuFactory.INSTANCE.createMenu(); |
| menu3.setElementId("menu3"); |
| // the fragments |
| { |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri1")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "menu1"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", "menu", |
| Arrays.asList(menu1), "index:10", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapper); |
| } |
| { |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri3")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "menu3"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", "menu2", |
| Arrays.asList(menu3), "index:0", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapper); |
| } |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri2")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "menu2"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainer = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainer); |
| |
| ModelFragmentWrapper fragmentWrapper = createFragmentWrapper(fragmentsContainer, "children", "menu1", |
| Arrays.asList(menu2), "index:20", contributorName, contributorURI, false); |
| fragmentList.add(fragmentWrapper); |
| |
| assembler.processFragmentWrappers(fragmentList); |
| |
| assertEquals(1, menu.getChildren().size()); |
| assertEquals(menu1, menu.getChildren().get(0)); |
| assertEquals(menu2, menu1.getChildren().get(0)); |
| assertEquals(menu3, menu2.getChildren().get(0)); |
| } |
| |
| @Test |
| public void testModelFragmentComparatorWithCorrectlySortedList() { |
| // initial application elements |
| MHandledToolItem x = MMenuFactory.INSTANCE.createHandledToolItem(); |
| x.setElementId("x"); |
| toolBar.getChildren().add(x); |
| MHandledToolItem y = MMenuFactory.INSTANCE.createHandledToolItem(); |
| y.setElementId("y"); |
| toolBar.getChildren().add(y); |
| MHandledToolItem z = MMenuFactory.INSTANCE.createHandledToolItem(); |
| z.setElementId("z"); |
| toolBar.getChildren().add(z); |
| |
| // the fragments |
| Resource fragmentResource = factory.createResource(URI.createURI("fragmentvirtualuri")); |
| resourceSet.getResources().add(fragmentResource); |
| final String contributorName = "testAfterFragmentReference3"; |
| final String contributorURI = fragmentResource.getURI().toString(); |
| |
| // the contributed elements |
| MModelFragments fragmentsContainerA = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerA); |
| MHandledToolItem a = MMenuFactory.INSTANCE.createHandledToolItem(); |
| a.setElementId("a"); |
| MModelFragments fragmentsContainerB = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerB); |
| MHandledToolItem b = MMenuFactory.INSTANCE.createHandledToolItem(); |
| b.setElementId("b"); |
| MModelFragments fragmentsContainerC = MFragmentFactory.INSTANCE.createModelFragments(); |
| fragmentResource.getContents().add((EObject) fragmentsContainerC); |
| MHandledToolItem c = MMenuFactory.INSTANCE.createHandledToolItem(); |
| c.setElementId("c"); |
| |
| ModelFragmentWrapper fragmentWrapper1 = createFragmentWrapper(fragmentsContainerA, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(a), "after:b", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper2 = createFragmentWrapper(fragmentsContainerB, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(b), "after:c", contributorName, contributorURI, false); |
| ModelFragmentWrapper fragmentWrapper3 = createFragmentWrapper(fragmentsContainerC, "children", MAIN_TOOLBAR_ID, |
| Arrays.asList(c), "after:y", contributorName, contributorURI, false); |
| |
| Set<ModelFragmentWrapper> fragmentList = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList.addAll(Arrays.asList(fragmentWrapper1, fragmentWrapper2, fragmentWrapper3)); |
| |
| { |
| Iterator<ModelFragmentWrapper> iterator = fragmentList.iterator(); |
| assertEquals(fragmentWrapper3, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| } |
| |
| // adding the elements to the second list will sort them again |
| Set<ModelFragmentWrapper> fragmentList2 = new TreeSet<>(new ModelFragmentComparator(application)); |
| fragmentList2.addAll(fragmentList); |
| |
| Iterator<ModelFragmentWrapper> iterator = fragmentList2.iterator(); |
| assertEquals(fragmentWrapper3, iterator.next()); |
| assertEquals(fragmentWrapper2, iterator.next()); |
| assertEquals(fragmentWrapper1, iterator.next()); |
| |
| } |
| } |