| /* |
| * Copyright (c) 2005, 2007 Borland Software Corporation |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Artem Tikhomirov (Borland) - initial API and implementation |
| */ |
| package org.eclipse.gmf.tests.gen; |
| |
| import java.util.Arrays; |
| import java.util.Collection; |
| import java.util.HashSet; |
| import java.util.Iterator; |
| import java.util.LinkedList; |
| import java.util.List; |
| import java.util.NoSuchElementException; |
| import java.util.Random; |
| import java.util.Set; |
| |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.emf.codegen.ecore.genmodel.GenClass; |
| import org.eclipse.emf.codegen.ecore.genmodel.GenFeature; |
| import org.eclipse.emf.codegen.ecore.genmodel.GenModel; |
| import org.eclipse.emf.codegen.ecore.genmodel.GenModelFactory; |
| import org.eclipse.emf.codegen.ecore.genmodel.GenPackage; |
| import org.eclipse.emf.codegen.util.CodeGenUtil; |
| import org.eclipse.emf.common.notify.Adapter; |
| import org.eclipse.emf.common.notify.Notification; |
| import org.eclipse.emf.common.util.EList; |
| import org.eclipse.emf.common.util.TreeIterator; |
| import org.eclipse.emf.common.util.BasicEList.UnmodifiableEList; |
| import org.eclipse.emf.ecore.EAttribute; |
| import org.eclipse.emf.ecore.EClass; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.ecore.EOperation; |
| import org.eclipse.emf.ecore.EPackage; |
| import org.eclipse.emf.ecore.EReference; |
| import org.eclipse.emf.ecore.EStructuralFeature; |
| import org.eclipse.emf.ecore.EcoreFactory; |
| import org.eclipse.emf.ecore.impl.EObjectImpl; |
| import org.eclipse.emf.ecore.resource.Resource; |
| import org.eclipse.gmf.codegen.gmfgen.Behaviour; |
| import org.eclipse.gmf.codegen.gmfgen.ElementType; |
| import org.eclipse.gmf.codegen.gmfgen.FeatureLabelModelFacet; |
| import org.eclipse.gmf.codegen.gmfgen.FeatureLinkModelFacet; |
| import org.eclipse.gmf.codegen.gmfgen.GMFGenFactory; |
| import org.eclipse.gmf.codegen.gmfgen.GMFGenPackage; |
| import org.eclipse.gmf.codegen.gmfgen.GenApplication; |
| import org.eclipse.gmf.codegen.gmfgen.GenAuditContainer; |
| import org.eclipse.gmf.codegen.gmfgen.GenAuditContext; |
| import org.eclipse.gmf.codegen.gmfgen.GenAuditRoot; |
| import org.eclipse.gmf.codegen.gmfgen.GenAuditRule; |
| import org.eclipse.gmf.codegen.gmfgen.GenChildContainer; |
| import org.eclipse.gmf.codegen.gmfgen.GenChildLabelNode; |
| import org.eclipse.gmf.codegen.gmfgen.GenChildNode; |
| import org.eclipse.gmf.codegen.gmfgen.GenCommonBase; |
| import org.eclipse.gmf.codegen.gmfgen.GenCompartment; |
| import org.eclipse.gmf.codegen.gmfgen.GenContainerBase; |
| import org.eclipse.gmf.codegen.gmfgen.GenCustomPreferencePage; |
| import org.eclipse.gmf.codegen.gmfgen.GenDiagram; |
| import org.eclipse.gmf.codegen.gmfgen.GenDiagramUpdater; |
| import org.eclipse.gmf.codegen.gmfgen.GenEditorGenerator; |
| import org.eclipse.gmf.codegen.gmfgen.GenEditorView; |
| import org.eclipse.gmf.codegen.gmfgen.GenExpressionInterpreter; |
| import org.eclipse.gmf.codegen.gmfgen.GenExpressionProviderContainer; |
| import org.eclipse.gmf.codegen.gmfgen.GenExternalNodeLabel; |
| import org.eclipse.gmf.codegen.gmfgen.GenLabel; |
| import org.eclipse.gmf.codegen.gmfgen.GenLink; |
| import org.eclipse.gmf.codegen.gmfgen.GenLinkLabel; |
| import org.eclipse.gmf.codegen.gmfgen.GenNavigator; |
| import org.eclipse.gmf.codegen.gmfgen.GenNode; |
| import org.eclipse.gmf.codegen.gmfgen.GenNodeLabel; |
| import org.eclipse.gmf.codegen.gmfgen.GenParsers; |
| import org.eclipse.gmf.codegen.gmfgen.GenPlugin; |
| import org.eclipse.gmf.codegen.gmfgen.GenPropertySheet; |
| import org.eclipse.gmf.codegen.gmfgen.GenStandardPreferencePage; |
| import org.eclipse.gmf.codegen.gmfgen.GenTopLevelNode; |
| import org.eclipse.gmf.codegen.gmfgen.LinkModelFacet; |
| import org.eclipse.gmf.codegen.gmfgen.MetamodelType; |
| import org.eclipse.gmf.codegen.gmfgen.Palette; |
| import org.eclipse.gmf.codegen.gmfgen.ProviderPriority; |
| import org.eclipse.gmf.codegen.gmfgen.SpecializationType; |
| import org.eclipse.gmf.codegen.gmfgen.StandardPreferencePages; |
| import org.eclipse.gmf.codegen.gmfgen.TypeLinkModelFacet; |
| import org.eclipse.gmf.codegen.gmfgen.TypeModelFacet; |
| import org.eclipse.gmf.codegen.gmfgen.Viewmap; |
| import org.eclipse.gmf.codegen.gmfgen.ViewmapLayoutType; |
| import org.eclipse.gmf.tests.ConfiguredTestCase; |
| import org.eclipse.gmf.tests.setup.SessionSetup; |
| import org.eclipse.jdt.core.JavaConventions; |
| import org.eclipse.jdt.core.JavaCore; |
| |
| /** |
| * Tests for handcoded method implementations in GMFGen model |
| * @author artem |
| */ |
| public class HandcodedImplTest extends ConfiguredTestCase { |
| |
| private static final String INVALID_JAVA_CHARS = "<>?#!. =\"'\n\t\\"; |
| |
| private static final Random RANDOM_GENERATOR = new Random(); |
| |
| private GenDiagram myGenModel; |
| |
| private final String javaLevel = JavaCore.VERSION_1_4; |
| |
| public HandcodedImplTest(String name) { |
| super(name); |
| myDefaultSetup = SessionSetup.newInstance(); |
| } |
| |
| protected void setUp() throws Exception { |
| super.setUp(); |
| // FIXME need complex genmodel with a lot of nodes and links to make tests effective |
| myGenModel = getSetup().getGenModel().getGenDiagram(); |
| // additional elements to check (XXX perhaps, move to SessionSetup.mapping? |
| if (myGenModel.getEditorGen().getAudits() == null) { |
| GenAuditRoot root; |
| myGenModel.getEditorGen().setAudits(root = GMFGenFactory.eINSTANCE.createGenAuditRoot()); |
| GenAuditContainer cat; |
| root.getCategories().add(cat = GMFGenFactory.eINSTANCE.createGenAuditContainer()); |
| GenAuditRule rule; |
| root.getRules().add(rule = GMFGenFactory.eINSTANCE.createGenAuditRule()); |
| rule.setCategory(cat); |
| rule.setTarget(GMFGenFactory.eINSTANCE.createGenDomainElementTarget()); |
| } |
| } |
| |
| public void testUniqueIdentifier_IsUnique() { |
| HashSet<String> allIds = new HashSet<String>(1<<7); |
| for (GenCommonBaseIterator it = new GenCommonBaseIterator(myGenModel); it.hasNext();) { |
| GenCommonBase next = it.next(); |
| assertFalse("There should be no two same 'unique' identifiers in GMFGen", allIds.contains(next.getUniqueIdentifier())); |
| allIds.add(next.getUniqueIdentifier()); |
| } |
| assertTrue("Test is not valid unless few elements were checked", allIds.size() > 1); |
| allIds.clear(); |
| } |
| |
| public void testUniqueIdentifier_IsConstant() { |
| LinkedList<String> allIdsOrdered = new LinkedList<String>(); |
| for (GenCommonBaseIterator it = new GenCommonBaseIterator(myGenModel); it.hasNext();) { |
| GenCommonBase next = it.next(); |
| allIdsOrdered.add(next.getUniqueIdentifier()); |
| } |
| assertTrue("Test is not valid unless there are few elements to check", allIdsOrdered.size() > 1); |
| Iterator<String> itSaved = allIdsOrdered.iterator(); |
| GenCommonBaseIterator it = new GenCommonBaseIterator(myGenModel); |
| for (; it.hasNext() && itSaved.hasNext();) { |
| GenCommonBase next = it.next(); |
| String savedID = itSaved.next().toString(); |
| assertEquals("Subsequent invocations of getUniqueIdentifier produce different results", savedID, next.getUniqueIdentifier()); |
| } |
| assertEquals("Lists are not equal in size", itSaved.hasNext(), it.hasNext()); |
| allIdsOrdered.clear(); |
| } |
| |
| public void testGenEditorGenerator_DomainFileExtension(){ |
| GenEditorGenerator generator = GMFGenFactory.eINSTANCE.createGenEditorGenerator(); |
| generator.setDomainFileExtension("AAA"); |
| assertEquals("AAA", generator.getDomainFileExtension()); |
| |
| generator.setDomainFileExtension(null); |
| assertNotNull(generator.getDomainFileExtension()); |
| |
| GenModel genModel = GenModelFactory.eINSTANCE.createGenModel(); |
| GenPackage genPackage = GenModelFactory.eINSTANCE.createGenPackage(); |
| genPackage.setPrefix("CBA"); |
| genModel.getGenPackages().add(genPackage); |
| generator.setDomainGenModel(genModel); |
| assertNotNull(generator.getDomainFileExtension()); |
| assertEquals("cba", generator.getDomainFileExtension()); |
| |
| generator.setDomainFileExtension(""); |
| assertNotNull(generator.getDomainFileExtension()); |
| assertEquals("cba", generator.getDomainFileExtension()); |
| |
| generator.setDomainFileExtension(" "); |
| assertNotNull(generator.getDomainFileExtension()); |
| assertEquals("cba", generator.getDomainFileExtension()); |
| } |
| |
| public void testGenEditorGenerator_DiagramFileExtension(){ |
| GenEditorGenerator generator = GMFGenFactory.eINSTANCE.createGenEditorGenerator(); |
| generator.setDomainFileExtension("AAA"); |
| checkStringPropertyWithDefault(generator, GMFGenPackage.eINSTANCE.getGenEditorGenerator_DiagramFileExtension()); |
| } |
| |
| public void testGenEditorGenerator_ModelId(){ |
| GenEditorGenerator generator = GMFGenFactory.eINSTANCE.createGenEditorGenerator(); |
| checkStringPropertyWithDefault(generator, GMFGenPackage.eINSTANCE.getGenEditorGenerator_ModelID()); |
| |
| generator = GMFGenFactory.eINSTANCE.createGenEditorGenerator(); |
| GenModel mockGenModel = GenModelFactory.eINSTANCE.createGenModel(); |
| mockGenModel.setModelName("CBA"); |
| generator.setDomainGenModel(mockGenModel); |
| assertEquals("CBA", generator.getModelID()); |
| } |
| |
| public void testGenEditorGenerator_PackageNamePrefix() { |
| GenEditorGenerator generator = GMFGenFactory.eINSTANCE.createGenEditorGenerator(); |
| generator.setPackageNamePrefix(null); |
| assertNotNull(generator.getPackageNamePrefix()); |
| |
| generator.setPackageNamePrefix("ABC"); |
| assertEquals("ABC", generator.getPackageNamePrefix()); |
| |
| GenModel genModel = GenModelFactory.eINSTANCE.createGenModel(); |
| GenPackage genPackage = GenModelFactory.eINSTANCE.createGenPackage(); |
| genPackage.setBasePackage("CBA"); |
| genModel.getGenPackages().add(genPackage); |
| EPackage ePackage = EcoreFactory.eINSTANCE.createEPackage(); |
| ePackage.setName("DEF"); |
| genPackage.setEcorePackage(ePackage); |
| generator.setDomainGenModel(genModel); |
| assertEquals("ABC", generator.getPackageNamePrefix()); |
| |
| checkStringPropertyWithDefault(generator, GMFGenPackage.eINSTANCE.getGenEditorGenerator_PackageNamePrefix()); |
| } |
| |
| public void testGenEditorGenerator_getAllDomainGenPackages() { |
| GenModel genModel = GenModelFactory.eINSTANCE.createGenModel(); |
| genModel.setModelPluginID("plugin1"); |
| genModel.setModelDirectory("modelDir1"); |
| genModel.setEditDirectory("dir1"); |
| genModel.setEditPluginClass("EditPluginClassName"); |
| GenPackage genPackage1 = GenModelFactory.eINSTANCE.createGenPackage(); |
| GenClass genClass = GenModelFactory.eINSTANCE.createGenClass(); |
| genPackage1.getGenClasses().add(genClass); |
| genModel.getGenPackages().add(genPackage1); |
| GenPackage genPackage2 = GenModelFactory.eINSTANCE.createGenPackage(); |
| genModel.getGenPackages().add(genPackage2); |
| |
| GenEditorGenerator generator = GMFGenFactory.eINSTANCE.createGenEditorGenerator(); |
| generator.setDomainGenModel(genModel); |
| |
| assertTrue(generator.getAllDomainGenPackages(false).size() == 1); |
| assertEquals(genPackage1, generator.getAllDomainGenPackages(false).get(0)); |
| |
| GenModel genModel2 = GenModelFactory.eINSTANCE.createGenModel(); |
| genModel2.setModelPluginID("plugin2"); |
| genModel2.setModelDirectory("modelDir2"); |
| genModel2.setEditDirectory("dir2"); |
| genModel2.setEditPluginClass("EditPluginClassName2"); |
| GenPackage genPackage3 = GenModelFactory.eINSTANCE.createGenPackage(); |
| genClass = GenModelFactory.eINSTANCE.createGenClass(); |
| genPackage3.getGenClasses().add(genClass); |
| genModel2.getGenPackages().add(genPackage3); |
| GenPackage genPackage4 = GenModelFactory.eINSTANCE.createGenPackage(); |
| genModel2.getGenPackages().add(genPackage4); |
| genModel.getUsedGenPackages().add(genPackage3); |
| genModel.getUsedGenPackages().add(genPackage4); |
| |
| assertTrue(generator.getAllDomainGenPackages(false).size() == 1); |
| assertEquals(genPackage1, generator.getAllDomainGenPackages(false).get(0)); |
| |
| assertTrue(generator.getAllDomainGenPackages(true).size() == 2); |
| assertTrue(generator.getAllDomainGenPackages(true).contains(genPackage1)); |
| assertTrue(generator.getAllDomainGenPackages(true).contains(genPackage3)); |
| } |
| |
| public void testGenPlugin_RequiredPluginIds(){ |
| final String BUNDLE_EXPRESSIONS = "com.mycompany.expressions"; |
| final String[] BUNDLE_VIEWMAPS_MANY = {"com.mycompany.viewmapsA", "com.mycompany.viewmapsB"}; |
| final String BUNDLE_VIEWMAPS_ONE = "com.mycompany.viewmapsC"; |
| |
| GenEditorGenerator mockGenerator = GMFGenFactory.eINSTANCE.createGenEditorGenerator(); |
| |
| GenExpressionProviderContainer expressionProviderContainer = GMFGenFactory.eINSTANCE.createGenExpressionProviderContainer(); |
| mockGenerator.setExpressionProviders(expressionProviderContainer); |
| GenExpressionInterpreter expressionProvider = GMFGenFactory.eINSTANCE.createGenExpressionInterpreter(); |
| expressionProviderContainer.getProviders().add(expressionProvider); |
| |
| GenPlugin mockPlugin = GMFGenFactory.eINSTANCE.createGenPlugin(); |
| mockPlugin.getRequiredPlugins().add(BUNDLE_EXPRESSIONS); |
| mockGenerator.setPlugin(mockPlugin); |
| |
| GenDiagram mockDiagram = GMFGenFactory.eINSTANCE.createGenDiagram(); |
| mockGenerator.setDiagram(mockDiagram); |
| |
| GenTopLevelNode mockNodeA = GMFGenFactory.eINSTANCE.createGenTopLevelNode(); |
| mockDiagram.getTopLevelNodes().add(mockNodeA); |
| Viewmap mockViewmapA = GMFGenFactory.eINSTANCE.createFigureViewmap(); |
| mockViewmapA.getRequiredPluginIDs().add(BUNDLE_VIEWMAPS_ONE); |
| mockNodeA.setViewmap(mockViewmapA); |
| |
| GenTopLevelNode mockNodeB = GMFGenFactory.eINSTANCE.createGenTopLevelNode(); |
| mockDiagram.getTopLevelNodes().add(mockNodeB); |
| Viewmap mockViewmapB = GMFGenFactory.eINSTANCE.createFigureViewmap(); |
| mockViewmapB.getRequiredPluginIDs().addAll(Arrays.asList(BUNDLE_VIEWMAPS_MANY)); |
| mockNodeB.setViewmap(mockViewmapB); |
| |
| List<String> allRequired = mockPlugin.getAllRequiredPlugins(); |
| assertTrue(allRequired.contains(BUNDLE_EXPRESSIONS)); |
| assertTrue(allRequired.contains(BUNDLE_VIEWMAPS_ONE)); |
| assertTrue(allRequired.containsAll(Arrays.asList(BUNDLE_VIEWMAPS_MANY))); |
| } |
| |
| public void testGenPlugin_ID() { |
| GenPlugin genPlugin = GMFGenFactory.eINSTANCE.createGenPlugin(); |
| GenEditorGenerator editorGen = GMFGenFactory.eINSTANCE.createGenEditorGenerator(); |
| editorGen.setPlugin(genPlugin); |
| checkStringPropertyWithDefault(genPlugin, GMFGenPackage.eINSTANCE.getGenPlugin_ID()); |
| } |
| |
| public void testGenPlugin_Name() { |
| GenEditorGenerator genEditorGenerator = GMFGenFactory.eINSTANCE.createGenEditorGenerator(); |
| GenPlugin genPlugin = GMFGenFactory.eINSTANCE.createGenPlugin(); |
| genEditorGenerator.setPlugin(genPlugin); |
| checkStringPropertyWithDefault(genPlugin, GMFGenPackage.eINSTANCE.getGenPlugin_Name()); |
| } |
| |
| public void testGenDiagram_EditingDomainID() { |
| GenDiagram genDiagram = GMFGenFactory.eINSTANCE.createGenDiagram(); |
| GenEditorGenerator editorGen = GMFGenFactory.eINSTANCE.createGenEditorGenerator(); |
| editorGen.setDiagram(genDiagram); |
| editorGen.setPlugin(GMFGenFactory.eINSTANCE.createGenPlugin()); |
| checkStringPropertyWithDefault(genDiagram, GMFGenPackage.eINSTANCE.getEditorCandies_EditingDomainID()); |
| } |
| |
| public void testGenDiagram_generateCreateShortcutAction() { |
| GenDiagram genDiagram = GMFGenFactory.eINSTANCE.createGenDiagram(); |
| genDiagram.getContainsShortcutsTo().clear(); |
| assertFalse(genDiagram.generateCreateShortcutAction()); |
| |
| genDiagram.getContainsShortcutsTo().add("ecore"); |
| assertTrue(genDiagram.generateCreateShortcutAction()); |
| } |
| |
| public void testGenDiagram_generateShortcutIcon() { |
| GenDiagram genDiagram = GMFGenFactory.eINSTANCE.createGenDiagram(); |
| genDiagram.getShortcutsProvidedFor().clear(); |
| assertFalse(genDiagram.generateShortcutIcon()); |
| |
| genDiagram.getShortcutsProvidedFor().add("Ecore"); |
| assertTrue(genDiagram.generateShortcutIcon()); |
| } |
| |
| public void testGenDiagram_generateInitDiagramAction() { |
| GenDiagram genDiagram = GMFGenFactory.eINSTANCE.createGenDiagram(); |
| assertFalse(genDiagram.generateInitDiagramAction()); |
| |
| genDiagram.setDomainDiagramElement(GenModelFactory.eINSTANCE.createGenClass()); |
| assertTrue(genDiagram.generateInitDiagramAction()); |
| } |
| |
| public void testGenDiagram_hasLinkCreationConstraints() { |
| GenDiagram genDiagram = GMFGenFactory.eINSTANCE.createGenDiagram(); |
| GenLink link = GMFGenFactory.eINSTANCE.createGenLink(); |
| genDiagram.getLinks().add(link); |
| assertFalse(genDiagram.hasLinkCreationConstraints()); |
| |
| link = GMFGenFactory.eINSTANCE.createGenLink(); |
| genDiagram.getLinks().add(link); |
| link.setCreationConstraints(GMFGenFactory.eINSTANCE.createGenLinkConstraints()); |
| assertTrue(genDiagram.hasLinkCreationConstraints()); |
| } |
| |
| public void testGenDiagram_getAllNodes() { |
| GenDiagram genDiagram = GMFGenFactory.eINSTANCE.createGenDiagram(); |
| GenTopLevelNode topLevelNode = GMFGenFactory.eINSTANCE.createGenTopLevelNode(); |
| genDiagram.getTopLevelNodes().add(topLevelNode); |
| GenChildNode childNode = GMFGenFactory.eINSTANCE.createGenChildNode(); |
| genDiagram.getChildNodes().add(childNode); |
| GenCompartment genCompartment = GMFGenFactory.eINSTANCE.createGenCompartment(); |
| genDiagram.getCompartments().add(genCompartment); |
| |
| Collection<GenNode> nodes = genDiagram.getAllNodes(); |
| assertTrue(nodes.contains(topLevelNode)); |
| assertTrue(nodes.contains(childNode)); |
| assertFalse(nodes.contains(genCompartment)); |
| assertFalse(nodes.contains(genDiagram)); |
| } |
| |
| public void testGenDiagram_getAllChildContainers() { |
| GenDiagram genDiagram = GMFGenFactory.eINSTANCE.createGenDiagram(); |
| GenTopLevelNode topLevelNode = GMFGenFactory.eINSTANCE.createGenTopLevelNode(); |
| genDiagram.getTopLevelNodes().add(topLevelNode); |
| GenChildNode childNode = GMFGenFactory.eINSTANCE.createGenChildNode(); |
| genDiagram.getChildNodes().add(childNode); |
| GenCompartment genCompartment = GMFGenFactory.eINSTANCE.createGenCompartment(); |
| genDiagram.getCompartments().add(genCompartment); |
| |
| Collection<GenChildContainer> nodes = genDiagram.getAllChildContainers(); |
| assertTrue(nodes.contains(topLevelNode)); |
| assertTrue(nodes.contains(childNode)); |
| assertTrue(nodes.contains(genCompartment)); |
| assertFalse(nodes.contains(genDiagram)); |
| } |
| |
| public void testGenDiagram_getAllContainers() { |
| GenDiagram genDiagram = GMFGenFactory.eINSTANCE.createGenDiagram(); |
| GenTopLevelNode topLevelNode = GMFGenFactory.eINSTANCE.createGenTopLevelNode(); |
| genDiagram.getTopLevelNodes().add(topLevelNode); |
| GenChildNode childNode = GMFGenFactory.eINSTANCE.createGenChildNode(); |
| genDiagram.getChildNodes().add(childNode); |
| GenCompartment genCompartment = GMFGenFactory.eINSTANCE.createGenCompartment(); |
| genDiagram.getCompartments().add(genCompartment); |
| |
| Collection<GenContainerBase> nodes = genDiagram.getAllContainers(); |
| assertTrue(nodes.contains(topLevelNode)); |
| assertTrue(nodes.contains(childNode)); |
| assertTrue(nodes.contains(genCompartment)); |
| assertTrue(nodes.contains(genDiagram)); |
| } |
| |
| public void testGenDiagram_getCreationWizardIconPathX() { |
| GenDiagram genDiagram = GMFGenFactory.eINSTANCE.createGenDiagram(); |
| genDiagram.setCreationWizardIconPath(null); |
| assertNotNull(genDiagram.getCreationWizardIconPathX()); |
| assertTrue(genDiagram.getCreationWizardIconPathX().length() > 0); |
| |
| genDiagram.setCreationWizardIconPath(""); |
| assertNotNull(genDiagram.getCreationWizardIconPathX()); |
| assertTrue(genDiagram.getCreationWizardIconPathX().length() > 0); |
| |
| genDiagram.setCreationWizardIconPath("myPath"); |
| assertNotNull(genDiagram.getCreationWizardIconPathX()); |
| assertEquals("myPath", genDiagram.getCreationWizardIconPathX()); |
| |
| genDiagram.setCreationWizardIconPath("{reuseEMFIcon}"); |
| assertNotNull(genDiagram.getCreationWizardIconPathX()); |
| assertFalse("{reuseEMFIcon}".equals(genDiagram.getCreationWizardIconPathX())); |
| assertTrue(genDiagram.getCreationWizardIconPathX().length() > 0); |
| } |
| |
| public void testGenEditorView_ID() { |
| GenEditorView editorView = GMFGenFactory.eINSTANCE.createGenEditorView(); |
| editorView.setPackageName("myPackage"); |
| editorView.setClassName("MyClass"); |
| checkStringPropertyWithDefault(editorView, GMFGenPackage.eINSTANCE.getGenEditorView_ID()); |
| } |
| |
| private void checkStringPropertyWithDefault(EObject propertyHolder, EAttribute property) { |
| propertyHolder.eSet(property, null); |
| assertNotNull(propertyHolder.eGet(property)); |
| assertTrue(((String) propertyHolder.eGet(property)).trim().length() > 0); |
| |
| propertyHolder.eSet(property, ""); |
| assertNotNull(propertyHolder.eGet(property)); |
| assertTrue(((String) propertyHolder.eGet(property)).trim().length() > 0); |
| |
| propertyHolder.eSet(property, " "); |
| assertNotNull(propertyHolder.eGet(property)); |
| assertTrue(((String) propertyHolder.eGet(property)).trim().length() > 0); |
| |
| String value = "Value_" + String.valueOf(RANDOM_GENERATOR.nextInt()); |
| propertyHolder.eSet(property, value); |
| assertNotNull(propertyHolder.eGet(property)); |
| assertEquals(value, propertyHolder.eGet(property)); |
| } |
| |
| public void testGenEditorView_getIconPathX() { |
| GenEditorView editorView = GMFGenFactory.eINSTANCE.createGenEditorView(); |
| GenEditorGenerator genEditorGenerator = GMFGenFactory.eINSTANCE.createGenEditorGenerator(); |
| genEditorGenerator.setEditor(editorView); |
| editorView.setIconPath(null); |
| assertNotNull(editorView.getIconPathX()); |
| assertTrue(editorView.getIconPathX().length() > 0); |
| |
| editorView.setIconPath(""); |
| assertNotNull(editorView.getIconPathX()); |
| assertTrue(editorView.getIconPathX().length() > 0); |
| |
| editorView.setIconPath("myPath"); |
| assertNotNull(editorView.getIconPathX()); |
| assertEquals("myPath", editorView.getIconPathX()); |
| |
| editorView.setIconPath("{reuseEMFIcon}"); |
| assertNotNull(editorView.getIconPathX()); |
| assertFalse("{reuseEMFIcon}".equals(editorView.getIconPathX())); |
| assertTrue(editorView.getIconPathX().length() > 0); |
| } |
| |
| public void testGenCommonBase_ClassNameSuffux() { |
| assertClassNameSuffix(GMFGenFactory.eINSTANCE.createGenDiagram()); |
| assertClassNameSuffix(GMFGenFactory.eINSTANCE.createGenChildNode()); |
| assertClassNameSuffix(GMFGenFactory.eINSTANCE.createGenChildLabelNode()); |
| assertClassNameSuffix(GMFGenFactory.eINSTANCE.createGenTopLevelNode()); |
| assertClassNameSuffix(GMFGenFactory.eINSTANCE.createGenCompartment()); |
| assertClassNameSuffix(GMFGenFactory.eINSTANCE.createGenLinkLabel()); |
| assertClassNameSuffix(GMFGenFactory.eINSTANCE.createGenNodeLabel()); |
| assertClassNameSuffix(GMFGenFactory.eINSTANCE.createGenExternalNodeLabel()); |
| assertClassNameSuffix(GMFGenFactory.eINSTANCE.createGenLink()); |
| } |
| |
| private void assertClassNameSuffix(GenCommonBase commonBase) { |
| assertNotNull(commonBase.getClassNameSuffux()); |
| assertTrue(commonBase.getClassNameSuffux().length() == 0); |
| } |
| |
| public void testGenCommonBase_ClassNamePrefix() { |
| GenModel genModel = GenModelFactory.eINSTANCE.createGenModel(); |
| genModel.safeName("genModel"); |
| GenPackage genPackage = GenModelFactory.eINSTANCE.createGenPackage(); |
| EPackage ePackage = EcoreFactory.eINSTANCE.createEPackage(); |
| ePackage.setName("container"); |
| genPackage.setEcorePackage(ePackage); |
| genModel.getGenPackages().add(genPackage); |
| |
| GenClass domainElement = GenModelFactory.eINSTANCE.createGenClass(); |
| EClass eClass = EcoreFactory.eINSTANCE.createEClass(); |
| eClass.setName("DomainModelClassName" + INVALID_JAVA_CHARS); |
| ePackage.getEClassifiers().add(eClass); |
| domainElement.setEcoreClass(eClass); |
| genPackage.getGenClasses().add(domainElement); |
| TypeModelFacet typeModelFacet = GMFGenFactory.eINSTANCE.createTypeModelFacet(); |
| typeModelFacet.setMetaClass(domainElement); |
| TypeLinkModelFacet typeLinkModelFacet = GMFGenFactory.eINSTANCE.createTypeLinkModelFacet(); |
| typeLinkModelFacet.setMetaClass(domainElement); |
| EReference reference = EcoreFactory.eINSTANCE.createEReference(); |
| reference.setName("Reference" + INVALID_JAVA_CHARS); |
| eClass.getEStructuralFeatures().add(reference); |
| GenFeature genFeature = GenModelFactory.eINSTANCE.createGenFeature(); |
| genFeature.setEcoreFeature(reference); |
| domainElement.getGenFeatures().add(genFeature); |
| FeatureLinkModelFacet featureLinkModelFacet = GMFGenFactory.eINSTANCE.createFeatureLinkModelFacet(); |
| featureLinkModelFacet.setMetaFeature(genFeature); |
| |
| GenDiagram diagram = GMFGenFactory.eINSTANCE.createGenDiagram(); |
| assertClassNamePrefix(diagram); |
| |
| diagram.setDomainDiagramElement(domainElement); |
| assertClassNamePrefix(diagram); |
| |
| GenChildNode genChildNode = GMFGenFactory.eINSTANCE.createGenChildNode(); |
| assertClassNamePrefix(genChildNode); |
| |
| genChildNode.setModelFacet(typeModelFacet); |
| assertClassNamePrefix(genChildNode); |
| |
| GenChildLabelNode genChildLabelNode = GMFGenFactory.eINSTANCE.createGenChildLabelNode(); |
| assertClassNamePrefix(genChildLabelNode); |
| |
| genChildLabelNode.setModelFacet(typeModelFacet); |
| assertClassNamePrefix(genChildLabelNode); |
| |
| GenTopLevelNode genTopLevelNode = GMFGenFactory.eINSTANCE.createGenTopLevelNode(); |
| assertClassNamePrefix(genTopLevelNode); |
| |
| genTopLevelNode.setModelFacet(typeModelFacet); |
| assertClassNamePrefix(genTopLevelNode); |
| |
| GenCompartment compartment = GMFGenFactory.eINSTANCE.createGenCompartment(); |
| genTopLevelNode.getCompartments().add(compartment); |
| assertClassNamePrefix(compartment); |
| |
| compartment.setTitle("Title:" + INVALID_JAVA_CHARS); |
| assertClassNamePrefix(compartment); |
| |
| GenLink genLink = GMFGenFactory.eINSTANCE.createGenLink(); |
| assertClassNamePrefix(genLink); |
| |
| genLink.setModelFacet(typeLinkModelFacet); |
| assertClassNamePrefix(genLink); |
| |
| genLink.setModelFacet(featureLinkModelFacet); |
| assertClassNamePrefix(genLink); |
| |
| GenLinkLabel genLinkLabel = GMFGenFactory.eINSTANCE.createGenLinkLabel(); |
| genLink.getLabels().add(genLinkLabel); |
| assertClassNamePrefix(genLinkLabel); |
| |
| genLinkLabel.getMetaFeatures().add(genFeature); |
| assertClassNamePrefix(genLinkLabel); |
| |
| GenNodeLabel genNodeLabel = GMFGenFactory.eINSTANCE.createGenNodeLabel(); |
| genTopLevelNode.getLabels().add(genNodeLabel); |
| assertClassNamePrefix(genNodeLabel); |
| |
| genNodeLabel.getMetaFeatures().add(genFeature); |
| assertClassNamePrefix(genNodeLabel); |
| |
| GenExternalNodeLabel genExternalNodeLabel = GMFGenFactory.eINSTANCE.createGenExternalNodeLabel(); |
| genTopLevelNode.getLabels().add(genExternalNodeLabel); |
| assertClassNamePrefix(genExternalNodeLabel); |
| |
| genExternalNodeLabel.getMetaFeatures().add(genFeature); |
| assertClassNamePrefix(genExternalNodeLabel); |
| } |
| |
| private void assertClassNamePrefix(GenCommonBase commonBase) { |
| assertNotNull(commonBase.getClassNamePrefix()); |
| assertTrue(commonBase.getClassNamePrefix().length() > 0); |
| IStatus s = JavaConventions.validateJavaTypeName(commonBase.getClassNamePrefix(), JavaCore.VERSION_1_4, JavaCore.VERSION_1_4); |
| assertTrue("Default prefix: " + s.getMessage(), s.getSeverity() != IStatus.ERROR); |
| } |
| |
| public void testGenCommonBase_getLayoutType() { |
| checkLayoutType(GMFGenFactory.eINSTANCE.createGenDiagram()); |
| checkLayoutType(GMFGenFactory.eINSTANCE.createGenChildNode()); |
| checkLayoutType(GMFGenFactory.eINSTANCE.createGenChildLabelNode()); |
| checkLayoutType(GMFGenFactory.eINSTANCE.createGenTopLevelNode()); |
| checkLayoutType(GMFGenFactory.eINSTANCE.createGenCompartment()); |
| checkLayoutType(GMFGenFactory.eINSTANCE.createGenLinkLabel()); |
| checkLayoutType(GMFGenFactory.eINSTANCE.createGenNodeLabel()); |
| checkLayoutType(GMFGenFactory.eINSTANCE.createGenExternalNodeLabel()); |
| checkLayoutType(GMFGenFactory.eINSTANCE.createGenLink()); |
| } |
| |
| private void checkLayoutType(GenCommonBase commonBase) { |
| assertEquals(ViewmapLayoutType.UNKNOWN_LITERAL, commonBase.getLayoutType()); |
| |
| Viewmap viewmap = GMFGenFactory.eINSTANCE.createFigureViewmap(); |
| ViewmapLayoutType layoutType = ViewmapLayoutType.get(RANDOM_GENERATOR.nextInt(3)); |
| viewmap.setLayoutType(layoutType); |
| commonBase.setViewmap(viewmap); |
| assertEquals(layoutType, commonBase.getLayoutType()); |
| } |
| |
| public void testGenCommonBase_getDiagram() { |
| GenDiagram diagram = GMFGenFactory.eINSTANCE.createGenDiagram(); |
| assertEquals(diagram, diagram.getDiagram()); |
| |
| assertEquals(GMFGenPackage.eINSTANCE.getGenChildNode().getEStructuralFeature("diagram"), GMFGenPackage.eINSTANCE.getGenDiagram_ChildNodes().getEOpposite()); |
| assertEquals(GMFGenPackage.eINSTANCE.getGenChildLabelNode().getEStructuralFeature("diagram"), GMFGenPackage.eINSTANCE.getGenDiagram_ChildNodes().getEOpposite()); |
| assertEquals(GMFGenPackage.eINSTANCE.getGenTopLevelNode().getEStructuralFeature("diagram"), GMFGenPackage.eINSTANCE.getGenDiagram_TopLevelNodes().getEOpposite()); |
| assertEquals(GMFGenPackage.eINSTANCE.getGenCompartment().getEStructuralFeature("diagram"), GMFGenPackage.eINSTANCE.getGenDiagram_Compartments().getEOpposite()); |
| |
| GenLinkLabel genLinkLabel = GMFGenFactory.eINSTANCE.createGenLinkLabel(); |
| GenLink genLink = GMFGenFactory.eINSTANCE.createGenLink(); |
| diagram.getLinks().add(genLink); |
| genLink.getLabels().add(genLinkLabel); |
| assertEquals(diagram, genLinkLabel.getDiagram()); |
| |
| GenNodeLabel genNodeLabel = GMFGenFactory.eINSTANCE.createGenNodeLabel(); |
| GenTopLevelNode genNode = GMFGenFactory.eINSTANCE.createGenTopLevelNode(); |
| diagram.getTopLevelNodes().add(genNode); |
| genNode.getLabels().add(genNodeLabel); |
| assertEquals(diagram, genNodeLabel.getDiagram()); |
| |
| GenExternalNodeLabel genExternalNodeLabel = GMFGenFactory.eINSTANCE.createGenExternalNodeLabel(); |
| genNode.getLabels().add(genExternalNodeLabel); |
| assertEquals(diagram, genExternalNodeLabel.getDiagram()); |
| |
| assertEquals(GMFGenPackage.eINSTANCE.getGenLink().getEStructuralFeature("diagram"), GMFGenPackage.eINSTANCE.getGenDiagram_Links().getEOpposite()); |
| } |
| |
| public void testGenContainerBase_getContainedNodes() { |
| GenDiagram diagram = GMFGenFactory.eINSTANCE.createGenDiagram(); |
| assertTrue(diagram.getContainedNodes().isEmpty()); |
| GenTopLevelNode genTopLevelNode = GMFGenFactory.eINSTANCE.createGenTopLevelNode(); |
| diagram.getTopLevelNodes().add(genTopLevelNode); |
| GenChildNode genChildNode = GMFGenFactory.eINSTANCE.createGenChildNode(); |
| diagram.getChildNodes().add(genChildNode); |
| GenChildLabelNode genChildLabelNode = GMFGenFactory.eINSTANCE.createGenChildLabelNode(); |
| diagram.getChildNodes().add(genChildLabelNode); |
| GenCompartment genCompartment = GMFGenFactory.eINSTANCE.createGenCompartment(); |
| diagram.getCompartments().add(genCompartment); |
| GenChildNode commonChild = GMFGenFactory.eINSTANCE.createGenChildNode(); |
| diagram.getChildNodes().add(commonChild); |
| |
| assertTrue(diagram.getContainedNodes().size() == 1); |
| assertEquals(genTopLevelNode, diagram.getContainedNodes().get(0)); |
| |
| assertTrue(genTopLevelNode.getContainedNodes().size() == 0); |
| assertTrue(genChildNode.getContainedNodes().size() == 0); |
| assertTrue(genChildLabelNode.getContainedNodes().size() == 0); |
| assertTrue(genCompartment.getContainedNodes().size() == 0); |
| |
| genTopLevelNode.getChildNodes().add(commonChild); |
| assertTrue(genTopLevelNode.getContainedNodes().size() == 1); |
| assertEquals(commonChild, genTopLevelNode.getContainedNodes().get(0)); |
| |
| genChildNode.getChildNodes().add(commonChild); |
| assertTrue(genChildNode.getContainedNodes().size() == 1); |
| assertEquals(commonChild, genChildNode.getContainedNodes().get(0)); |
| |
| genChildLabelNode.getChildNodes().add(commonChild); |
| assertTrue(genChildLabelNode.getContainedNodes().size() == 1); |
| assertEquals(commonChild, genChildLabelNode.getContainedNodes().get(0)); |
| |
| genCompartment.getChildNodes().add(commonChild); |
| assertTrue(genCompartment.getContainedNodes().size() == 1); |
| assertEquals(commonChild, genCompartment.getContainedNodes().get(0)); |
| } |
| |
| public void testGenNode_getDomainMetaClass() { |
| TypeModelFacet modelFacet = GMFGenFactory.eINSTANCE.createTypeModelFacet(); |
| GenClass genClass = GenModelFactory.eINSTANCE.createGenClass(); |
| modelFacet.setMetaClass(genClass); |
| |
| GenTopLevelNode topLevelNode = GMFGenFactory.eINSTANCE.createGenTopLevelNode(); |
| assertNull(topLevelNode.getDomainMetaClass()); |
| |
| topLevelNode.setModelFacet(modelFacet); |
| assertEquals(genClass, topLevelNode.getDomainMetaClass()); |
| |
| GenChildNode childNode = GMFGenFactory.eINSTANCE.createGenChildNode(); |
| assertNull(childNode.getDomainMetaClass()); |
| |
| childNode.setModelFacet(modelFacet); |
| assertEquals(genClass, childNode.getDomainMetaClass()); |
| |
| GenChildLabelNode childLabelNode = GMFGenFactory.eINSTANCE.createGenChildLabelNode(); |
| assertNull(childLabelNode.getDomainMetaClass()); |
| |
| childLabelNode.setModelFacet(modelFacet); |
| assertEquals(genClass, childLabelNode.getDomainMetaClass()); |
| } |
| |
| public void testGenChildLabelNode_getLabelMetaFeatures() { |
| GenChildLabelNode childLabelNode = GMFGenFactory.eINSTANCE.createGenChildLabelNode(); |
| assertTrue(childLabelNode.getLabelMetaFeatures().size() == 0); |
| |
| GenFeature genFeature = GenModelFactory.eINSTANCE.createGenFeature(); |
| |
| FeatureLabelModelFacet compositeModelFacet = GMFGenFactory.eINSTANCE.createFeatureLabelModelFacet(); |
| childLabelNode.setLabelModelFacet(compositeModelFacet); |
| assertTrue(childLabelNode.getLabelMetaFeatures().size() == 0); |
| |
| compositeModelFacet.getMetaFeatures().add(genFeature); |
| assertTrue(childLabelNode.getLabelMetaFeatures().size() == 1); |
| assertEquals(genFeature, childLabelNode.getLabelMetaFeatures().get(0)); |
| |
| GenFeature nextGenFeature = GenModelFactory.eINSTANCE.createGenFeature(); |
| compositeModelFacet.getMetaFeatures().add(nextGenFeature); |
| assertTrue(childLabelNode.getLabelMetaFeatures().size() == 2); |
| assertTrue(childLabelNode.getLabelMetaFeatures().contains(genFeature)); |
| assertTrue(childLabelNode.getLabelMetaFeatures().contains(nextGenFeature)); |
| } |
| |
| public void testGenLink_getSources_getTargets() { |
| GenDiagram genDiagram = GMFGenFactory.eINSTANCE.createGenDiagram(); |
| GenLink genLink = GMFGenFactory.eINSTANCE.createGenLink(); |
| genDiagram.getLinks().add(genLink); |
| GenTopLevelNode topLevelNode = GMFGenFactory.eINSTANCE.createGenTopLevelNode(); |
| genDiagram.getTopLevelNodes().add(topLevelNode); |
| TypeModelFacet typeModelFacet = GMFGenFactory.eINSTANCE.createTypeModelFacet(); |
| topLevelNode.setModelFacet(typeModelFacet); |
| GenClass genClass1 = GenModelFactory.eINSTANCE.createGenClass(); |
| genClass1.setEcoreClass(EcoreFactory.eINSTANCE.createEClass()); |
| typeModelFacet.setMetaClass(genClass1); |
| GenChildNode childNode = GMFGenFactory.eINSTANCE.createGenChildNode(); |
| genDiagram.getChildNodes().add(childNode); |
| typeModelFacet = GMFGenFactory.eINSTANCE.createTypeModelFacet(); |
| childNode.setModelFacet(typeModelFacet); |
| GenClass genClass2 = GenModelFactory.eINSTANCE.createGenClass(); |
| genClass2.setEcoreClass(EcoreFactory.eINSTANCE.createEClass()); |
| typeModelFacet.setMetaClass(genClass2); |
| |
| assertTrue(genLink.getAssistantSources().size() == 0); |
| assertTrue(genLink.getAssistantTargets().size() == 0); |
| |
| genLink.setModelFacet(new CustomLinkModelFacet(new GenClass[] {genClass1, genClass2, GenModelFactory.eINSTANCE.createGenClass()})); |
| assertTrue(genLink.getAssistantSources().size() == 2); |
| assertTrue(genLink.getAssistantSources().contains(topLevelNode)); |
| assertTrue(genLink.getAssistantSources().contains(childNode)); |
| |
| assertTrue(genLink.getAssistantTargets().size() == 2); |
| assertTrue(genLink.getAssistantTargets().contains(topLevelNode)); |
| assertTrue(genLink.getAssistantTargets().contains(childNode)); |
| } |
| |
| public void testGenLabel_getMetaFeatures() { |
| checkMetaFeatures(GMFGenFactory.eINSTANCE.createGenLinkLabel()); |
| checkMetaFeatures(GMFGenFactory.eINSTANCE.createGenNodeLabel()); |
| checkMetaFeatures(GMFGenFactory.eINSTANCE.createGenExternalNodeLabel()); |
| } |
| |
| private void checkMetaFeatures(GenLabel genLabel) { |
| assertTrue(genLabel.getMetaFeatures().size() == 0); |
| |
| GenFeature genFeature = GenModelFactory.eINSTANCE.createGenFeature(); |
| |
| FeatureLabelModelFacet compositeModelFacet = GMFGenFactory.eINSTANCE.createFeatureLabelModelFacet(); |
| genLabel.setModelFacet(compositeModelFacet); |
| assertTrue(genLabel.getMetaFeatures().size() == 0); |
| |
| compositeModelFacet.getMetaFeatures().add(genFeature); |
| assertTrue(genLabel.getMetaFeatures().size() == 1); |
| assertEquals(genFeature, genLabel.getMetaFeatures().get(0)); |
| |
| GenFeature nextGenFeature = GenModelFactory.eINSTANCE.createGenFeature(); |
| compositeModelFacet.getMetaFeatures().add(nextGenFeature); |
| assertTrue(genLabel.getMetaFeatures().size() == 2); |
| assertTrue(genLabel.getMetaFeatures().contains(genFeature)); |
| assertTrue(genLabel.getMetaFeatures().contains(nextGenFeature)); |
| } |
| |
| public void testMetamodelType_getMetaClass() { |
| MetamodelType metamodelType = GMFGenFactory.eINSTANCE.createMetamodelType(); |
| assertNull(metamodelType.getMetaClass()); |
| |
| GenNode genNode = GMFGenFactory.eINSTANCE.createGenTopLevelNode(); |
| TypeModelFacet typeModelFacet = GMFGenFactory.eINSTANCE.createTypeModelFacet(); |
| genNode.setModelFacet(typeModelFacet); |
| GenClass genClass = GenModelFactory.eINSTANCE.createGenClass(); |
| typeModelFacet.setMetaClass(genClass); |
| metamodelType.setDiagramElement(genNode); |
| assertEquals(genClass, metamodelType.getMetaClass()); |
| |
| GenLink genLink = GMFGenFactory.eINSTANCE.createGenLink(); |
| TypeLinkModelFacet typeLinkModelFacet = GMFGenFactory.eINSTANCE.createTypeLinkModelFacet(); |
| genLink.setModelFacet(typeLinkModelFacet); |
| typeLinkModelFacet.setMetaClass(genClass); |
| metamodelType.setDiagramElement(genLink); |
| assertEquals(genClass, metamodelType.getMetaClass()); |
| |
| GenDiagram genDiagram = GMFGenFactory.eINSTANCE.createGenDiagram(); |
| genDiagram.setDomainDiagramElement(genClass); |
| metamodelType.setDiagramElement(genDiagram); |
| assertEquals(genClass, metamodelType.getMetaClass()); |
| } |
| |
| public void testLinkModelFacet_getSourceType_getTargetType() { |
| GenModel genModel = GenModelFactory.eINSTANCE.createGenModel(); |
| GenPackage genPackage = GenModelFactory.eINSTANCE.createGenPackage(); |
| EPackage ePackage = EcoreFactory.eINSTANCE.createEPackage(); |
| genPackage.setEcorePackage(ePackage); |
| genModel.getGenPackages().add(genPackage); |
| |
| TypeLinkModelFacet typeLinkModelFacet = GMFGenFactory.eINSTANCE.createTypeLinkModelFacet(); |
| assertTrue(typeLinkModelFacet.getSourceType() == null); |
| |
| GenClass genClass1 = GenModelFactory.eINSTANCE.createGenClass(); |
| EClass eClass1 = EcoreFactory.eINSTANCE.createEClass(); |
| genClass1.setEcoreClass(eClass1); |
| genPackage.getGenClasses().add(genClass1); |
| GenFeature genFeature1 = GenModelFactory.eINSTANCE.createGenFeature(); |
| genClass1.getGenFeatures().add(genFeature1); |
| typeLinkModelFacet.setContainmentMetaFeature(genFeature1); |
| assertEquals(genClass1, typeLinkModelFacet.getSourceType()); |
| |
| GenFeature genFeature2 = GenModelFactory.eINSTANCE.createGenFeature(); |
| genClass1.getGenFeatures().add(genFeature2); |
| GenClass genClass2 = GenModelFactory.eINSTANCE.createGenClass(); |
| EClass eClass2 = EcoreFactory.eINSTANCE.createEClass(); |
| eClass2.setName("ClassName"); |
| genClass2.setEcoreClass(eClass2); |
| genPackage.getGenClasses().add(genClass2); |
| ePackage.getEClassifiers().add(eClass2); |
| EReference eReference = EcoreFactory.eINSTANCE.createEReference(); |
| eReference.setEType(eClass2); |
| genFeature2.setEcoreFeature(eReference); |
| typeLinkModelFacet.setSourceMetaFeature(genFeature2); |
| assertEquals(genClass2, typeLinkModelFacet.getSourceType()); |
| |
| assertTrue(typeLinkModelFacet.getTargetType() == null); |
| |
| typeLinkModelFacet.setTargetMetaFeature(genFeature2); |
| assertEquals(genClass2, typeLinkModelFacet.getTargetType()); |
| |
| FeatureLinkModelFacet featureLinkModelFacet = GMFGenFactory.eINSTANCE.createFeatureLinkModelFacet(); |
| assertTrue(featureLinkModelFacet.getSourceType() == null); |
| assertTrue(featureLinkModelFacet.getTargetType() == null); |
| |
| featureLinkModelFacet.setMetaFeature(genFeature2); |
| assertEquals(genClass1, featureLinkModelFacet.getSourceType()); |
| |
| assertEquals(genClass2, featureLinkModelFacet.getTargetType()); |
| } |
| |
| public void testTypeModelFacet_isPhantomElement() { |
| GenTopLevelNode topLevelNode = GMFGenFactory.eINSTANCE.createGenTopLevelNode(); |
| GenChildNode childNode = GMFGenFactory.eINSTANCE.createGenChildNode(); |
| TypeModelFacet typeModelFacet = GMFGenFactory.eINSTANCE.createTypeModelFacet(); |
| childNode.setModelFacet(typeModelFacet); |
| assertFalse(typeModelFacet.isPhantomElement()); |
| |
| topLevelNode.setModelFacet(typeModelFacet); |
| assertTrue(typeModelFacet.isPhantomElement()); |
| typeModelFacet.setContainmentMetaFeature(GenModelFactory.eINSTANCE.createGenFeature()); |
| assertFalse(typeModelFacet.isPhantomElement()); |
| |
| GenLink genLink = GMFGenFactory.eINSTANCE.createGenLink(); |
| TypeLinkModelFacet typeLinkModelFacet = GMFGenFactory.eINSTANCE.createTypeLinkModelFacet(); |
| genLink.setModelFacet(typeLinkModelFacet); |
| assertFalse(typeLinkModelFacet.isPhantomElement()); |
| typeLinkModelFacet.setContainmentMetaFeature(GenModelFactory.eINSTANCE.createGenFeature()); |
| assertFalse(typeModelFacet.isPhantomElement()); |
| } |
| |
| public void testPackageNames() { |
| GenDiagram genDiagram = myGenModel; |
| Set<String> state = new HashSet<String>(); |
| |
| // package names check |
| checkPackageName(state, "PackageNames:editCommands", genDiagram.getEditCommandsPackageName()); |
| checkPackageName(state, "PackageNames:editHelpers", genDiagram.getEditHelpersPackageName()); |
| checkPackageName(state, "PackageNames:editParts", genDiagram.getEditPartsPackageName()); |
| checkPackageName(state, "PackageNames:editPolicies", genDiagram.getEditPoliciesPackageName()); |
| checkPackageName(state, "GenEditorView:packageName", genDiagram.getEditorGen().getEditor().getPackageName()); |
| checkPackageName(state, "PackageNames:providers", genDiagram.getProvidersPackageName()); |
| checkPackageName(state, "PackageNames:parsers", genDiagram.getParsersPackageName()); |
| checkPackageName(state, "PackageNames:preferences", genDiagram.getPreferencesPackageName()); |
| checkPackageName(state, "PackageNames:notationViewFactories", genDiagram.getNotationViewFactoriesPackageName()); |
| if (genDiagram.getEditorGen().getLabelParsers() != null) { |
| checkPackageName(state, "GenParsers:impl", genDiagram.getEditorGen().getLabelParsers().getImplPackageName()); |
| } |
| GenApplication application = genDiagram.getEditorGen().getApplication(); |
| if (application != null) { |
| checkPackageName(state, "GenApplication:application", application.getPackageName()); |
| } else { |
| state.add("GenApplication:application"); |
| } |
| if (genDiagram.getEditorGen().getExpressionProviders() != null) { |
| GenExpressionProviderContainer providers = genDiagram.getEditorGen().getExpressionProviders(); |
| checkPackageName(state, "GenExpressionProviderContainer:expressions", providers.getExpressionsPackageName()); |
| } else { |
| state.add("GenExpressionProviderContainer:expressions"); |
| } |
| |
| // coverage check |
| for (Object next : GMFGenPackage.eINSTANCE.getEClassifiers()) { |
| if (next instanceof EClass) { |
| checkPackageNamesCoverage(state, (EClass) next); |
| } |
| } |
| } |
| |
| // temp test until old attributes are removed - check we use old values |
| // XXX NOTE: ONCE attributes gone, use this test to check migration code |
| public void testGenParsers_delegatesToOld() { |
| GenParsers gp = GMFGenFactory.eINSTANCE.createGenParsers(); |
| // replace, if any, with blank |
| myGenModel.getEditorGen().setLabelParsers(gp); |
| assertNotNull(gp.getClassName()); |
| assertNotNull(gp.getPackageName()); |
| assertNotNull(gp.getQualifiedClassName()); |
| assertEquals(myGenModel.getParserProviderQualifiedClassName(), gp.getQualifiedClassName()); |
| myGenModel.setParserProviderPriority(ProviderPriority.HIGH_LITERAL); |
| assertEquals(myGenModel.getParserProviderPriority(), gp.getProviderPriority()); |
| gp.setProviderPriority(ProviderPriority.MEDIUM_LITERAL); |
| assertNotSame(myGenModel.getParserProviderPriority(), gp.getProviderPriority()); |
| assertEquals(ProviderPriority.MEDIUM_LITERAL, gp.getProviderPriority()); |
| } |
| |
| public void testGenParsers_qualifiedName() { |
| GenParsers gp = GMFGenFactory.eINSTANCE.createGenParsers(); |
| gp.setClassName("GenParsersClassName"); |
| gp.setPackageName("org.sample.test"); |
| assertEquals("org.sample.test.GenParsersClassName", gp.getQualifiedClassName()); |
| } |
| |
| public void testGenCustomPreferencePage() { |
| GenCustomPreferencePage cp = GMFGenFactory.eINSTANCE.createGenCustomPreferencePage(); |
| assertNull("ClassName shouldn't fail if qualifiedClassName is not set", cp.getClassName()); |
| cp.setQualifiedClassName("org.sample.CustomPrefPage"); |
| assertEquals("org.sample.CustomPrefPage", cp.getQualifiedClassName()); |
| assertEquals("CustomPrefPage", cp.getClassName()); |
| } |
| |
| public void testGenStandardPreferencePage() { |
| GenStandardPreferencePage sp = GMFGenFactory.eINSTANCE.createGenStandardPreferencePage(); |
| assertNotNull(sp.getClassName()); |
| HashSet<String> cn = new HashSet<String>(); |
| sp.setKind(StandardPreferencePages.APPEARANCE_LITERAL); |
| assertNotNull(sp.getClassName()); |
| assertTrue(cn.add(sp.getClassName())); |
| sp.setKind(StandardPreferencePages.GENERAL_LITERAL); |
| assertNotNull(sp.getClassName()); |
| assertTrue(cn.add(sp.getClassName())); |
| sp.setKind(StandardPreferencePages.PRINTING_LITERAL); |
| assertNotNull(sp.getClassName()); |
| assertTrue(cn.add(sp.getClassName())); |
| sp.setKind(StandardPreferencePages.PATHMAPS_LITERAL); |
| assertNotNull(sp.getClassName()); |
| assertTrue(cn.add(sp.getClassName())); |
| sp.setKind(StandardPreferencePages.RULERS_AND_GRID_LITERAL); |
| assertNotNull(sp.getClassName()); |
| assertTrue(cn.add(sp.getClassName())); |
| sp.setKind(StandardPreferencePages.CONNECTIONS_LITERAL); |
| assertNotNull(sp.getClassName()); |
| assertTrue(cn.add(sp.getClassName())); |
| assertEquals(StandardPreferencePages.values().length, cn.size()); |
| |
| sp.setClassName("TestAnotherClassName"); |
| sp.setKind(StandardPreferencePages.GENERAL_LITERAL); |
| assertEquals("TestAnotherClassName", sp.getClassName()); |
| assertEquals(sp.getClassName(), sp.getQualifiedClassName()); |
| |
| myGenModel.getPreferencePages().add(sp); |
| assertNotNull("sanity", myGenModel.getPreferencesPackageName()); |
| assertEquals(myGenModel.getPreferencesPackageName() + '.' + sp.getClassName(), sp.getQualifiedClassName()); |
| } |
| |
| public void testClassNames() { |
| GenDiagram genDiagram = myGenModel; |
| Set<String> state = new HashSet<String>(); |
| GenEditorView genEditor = myGenModel.getEditorGen().getEditor(); |
| |
| // class names check |
| checkClassName(state, "EditPartCandies:ReorientConnectionViewCommand", genDiagram.getReorientConnectionViewCommandClassName(), genDiagram.getReorientConnectionViewCommandQualifiedClassName()); |
| checkClassName(state, "EditPartCandies:BaseEditHelper", genDiagram.getBaseEditHelperClassName(), genDiagram.getBaseEditHelperQualifiedClassName()); |
| checkClassName(state, "EditPartCandies:EditPartFactory", genDiagram.getEditPartFactoryClassName(), genDiagram.getEditPartFactoryQualifiedClassName()); |
| checkClassName(state, "EditPartCandies:BaseExternalNodeLabelEditPart", genDiagram.getBaseExternalNodeLabelEditPartClassName(), genDiagram.getBaseExternalNodeLabelEditPartQualifiedClassName()); |
| checkClassName(state, "EditPartCandies:BaseItemSemanticEditPolicy", genDiagram.getBaseItemSemanticEditPolicyClassName(), genDiagram.getBaseItemSemanticEditPolicyQualifiedClassName()); |
| checkClassName(state, "EditPartCandies:BaseGraphicalNodeEditPolicy", genDiagram.getBaseGraphicalNodeEditPolicyClassName(), genDiagram.getBaseGraphicalNodeEditPolicyQualifiedClassName()); |
| checkClassName(state, "GenContainerBase:CanonicalEditPolicy", genDiagram.getCanonicalEditPolicyClassName(), genDiagram.getCanonicalEditPolicyQualifiedClassName()); |
| checkClassName(state, "EditPartCandies:TextSelectionEditPolicy", genDiagram.getTextSelectionEditPolicyClassName(), genDiagram.getTextSelectionEditPolicyQualifiedClassName()); |
| checkClassName(state, "EditPartCandies:TextNonResizableEditPolicy", genDiagram.getTextNonResizableEditPolicyClassName(), genDiagram.getTextNonResizableEditPolicyQualifiedClassName()); |
| checkClassName(state, "ProviderClassNames:ElementTypes", genDiagram.getElementTypesClassName(), genDiagram.getElementTypesQualifiedClassName()); |
| checkClassName(state, "ProviderClassNames:NotationViewProvider", genDiagram.getNotationViewProviderClassName(), genDiagram.getNotationViewProviderQualifiedClassName()); |
| checkClassName(state, "ProviderClassNames:EditPartProvider", genDiagram.getEditPartProviderClassName(), genDiagram.getEditPartProviderQualifiedClassName()); |
| checkClassName(state, "ProviderClassNames:ModelingAssistantProvider", genDiagram.getModelingAssistantProviderClassName(), genDiagram.getModelingAssistantProviderQualifiedClassName()); |
| checkClassName(state, "ProviderClassNames:IconProvider", genDiagram.getIconProviderClassName(), genDiagram.getIconProviderQualifiedClassName()); |
| checkClassName(state, "ProviderClassNames:ParserProvider", genDiagram.getParserProviderClassName(), genDiagram.getParserProviderQualifiedClassName()); |
| checkClassName(state, "ProviderClassNames:ContributionItemProvider", genDiagram.getContributionItemProviderClassName(), genDiagram.getContributionItemProviderQualifiedClassName()); |
| checkClassName(state, "GenEditorView:ActionBarContributor", genEditor.getActionBarContributorClassName(), genEditor.getActionBarContributorQualifiedClassName()); |
| checkClassName(state, "EditorCandies:CreationWizard", genDiagram.getCreationWizardClassName(), genDiagram.getCreationWizardQualifiedClassName()); |
| checkClassName(state, "EditorCandies:CreationWizardPage", genDiagram.getCreationWizardPageClassName(), genDiagram.getCreationWizardPageQualifiedClassName()); |
| checkClassName(state, "EditorCandies:DiagramEditorUtil", genDiagram.getDiagramEditorUtilClassName(), genDiagram.getDiagramEditorUtilQualifiedClassName()); |
| checkClassName(state, "EditorCandies:DocumentProvider", genDiagram.getDocumentProviderClassName(), genDiagram.getDocumentProviderQualifiedClassName()); |
| checkClassName(state, "GenEditorView:className", genEditor.getClassName(), genEditor.getQualifiedClassName()); |
| checkClassName(state, "EditorCandies:InitDiagramFileAction", genDiagram.getInitDiagramFileActionClassName(), genDiagram.getInitDiagramFileActionQualifiedClassName()); |
| checkClassName(state, "EditorCandies:NewDiagramFileWizard", genDiagram.getNewDiagramFileWizardClassName(), genDiagram.getNewDiagramFileWizardQualifiedClassName()); |
| checkClassName(state, "EditorCandies:DiagramContentInitializer", genDiagram.getDiagramContentInitializerClassName(), genDiagram.getDiagramContentInitializerQualifiedClassName()); |
| checkClassName(state, "EditorCandies:MatchingStrategy", genDiagram.getMatchingStrategyClassName(), genDiagram.getMatchingStrategyQualifiedClassName()); |
| checkClassName(state, "EditorCandies:VisualIDRegistry", genDiagram.getVisualIDRegistryClassName(), genDiagram.getVisualIDRegistryQualifiedClassName()); |
| checkClassName(state, "EditorCandies:LoadResourceAction", genDiagram.getLoadResourceActionClassName(), genDiagram.getLoadResourceActionQualifiedClassName()); |
| checkClassName(state, "LinkConstraints:LinkCreationConstraints", genDiagram.getLinkCreationConstraintsClassName(), genDiagram.getLinkCreationConstraintsQualifiedClassName()); |
| checkClassName(state, "Shortcuts:CreateShortcutAction", genDiagram.getCreateShortcutActionClassName(), genDiagram.getCreateShortcutActionQualifiedClassName()); |
| checkClassName(state, "Shortcuts:ShortcutsDecoratorProvider", genDiagram.getShortcutsDecoratorProviderClassName(), genDiagram.getShortcutsDecoratorProviderQualifiedClassName()); |
| checkClassName(state, "Shortcuts:CreateShortcutDecorationsCommand", genDiagram.getCreateShortcutDecorationsCommandClassName(), genDiagram.getCreateShortcutDecorationsCommandQualifiedClassName()); |
| checkClassName(state, "Shortcuts:ShortcutPropertyTester", genDiagram.getShortcutPropertyTesterClassName(), genDiagram.getShortcutPropertyTesterQualifiedClassName()); |
| checkClassName(state, "EditorCandies:ElementChooser", genDiagram.getElementChooserClassName(), genDiagram.getElementChooserQualifiedClassName()); |
| checkClassName(state, "BatchValidation:ValidationProvider", genDiagram.getValidationProviderClassName(), genDiagram.getValidationProviderQualifiedClassName()); |
| checkClassName(state, "BatchValidation:ValidationDecoratorProvider", genDiagram.getValidationDecoratorProviderClassName(), genDiagram.getValidationDecoratorProviderQualifiedClassName()); |
| checkClassName(state, "BatchValidation:MarkerNavigationProvider", genDiagram.getMarkerNavigationProviderClassName(), genDiagram.getMarkerNavigationProviderQualifiedClassName()); |
| checkClassName(state, "BatchValidation:MetricProvider", genDiagram.getMetricProviderClassName(), genDiagram.getMetricProviderQualifiedClassName()); |
| GenApplication application = genDiagram.getEditorGen().getApplication(); |
| if (application != null) { |
| checkClassName(state, "GenApplication:Application", application.getClassName(), application.getQualifiedClassName()); |
| checkClassName(state, "GenApplication:WorkbenchAdvisor", application.getWorkbenchAdvisorClassName(), application.getWorkbenchAdvisorQualifiedClassName()); |
| checkClassName(state, "GenApplication:WorkbenchWindowAdvisor", application.getWorkbenchWindowAdvisorClassName(), application.getWorkbenchWindowAdvisorQualifiedClassName()); |
| checkClassName(state, "GenApplication:ActionBarAdvisor", application.getActionBarAdvisorClassName(), application.getActionBarAdvisorQualifiedClassName()); |
| checkClassName(state, "GenApplication:Perspective", application.getPerspectiveClassName(), application.getPerspectiveQualifiedClassName()); |
| } else { |
| state.add("GenApplication:Application"); |
| state.add("GenApplication:WorkbenchAdvisor"); |
| state.add("GenApplication:WorkbenchWindowAdvisor"); |
| state.add("GenApplication:ActionBarAdvisor"); |
| state.add("GenApplication:Perspective"); |
| } |
| if (genDiagram.getEditorGen().getExpressionProviders() != null) { |
| GenExpressionProviderContainer providers = genDiagram.getEditorGen().getExpressionProviders(); |
| checkClassName(state, "GenExpressionProviderContainer:AbstractExpression", providers.getAbstractExpressionClassName(), providers.getAbstractExpressionQualifiedClassName()); |
| } else { |
| state.add("GenExpressionProviderContainer:AbstractExpression"); |
| } |
| Palette palette = genDiagram.getPalette(); |
| if (palette != null) { |
| checkClassName(state, "Palette:Factory", palette.getFactoryClassName(), palette.getFactoryQualifiedClassName()); |
| } else { |
| state.add("Palette:Factory"); |
| } |
| GenNavigator navigator = genDiagram.getEditorGen().getNavigator(); |
| if (navigator != null) { |
| checkClassName(state, "GenNavigator:ContentProvider", navigator.getContentProviderClassName(), navigator.getContentProviderQualifiedClassName()); |
| checkClassName(state, "GenNavigator:LabelProvider", navigator.getLabelProviderClassName(), navigator.getLabelProviderQualifiedClassName()); |
| checkClassName(state, "GenNavigator:Sorter", navigator.getSorterClassName(), navigator.getSorterQualifiedClassName()); |
| checkClassName(state, "GenNavigator:ActionProvider", navigator.getActionProviderClassName(), navigator.getActionProviderQualifiedClassName()); |
| checkClassName(state, "GenNavigator:LinkHelper", navigator.getLinkHelperClassName(), navigator.getLinkHelperQualifiedClassName()); |
| checkClassName(state, "GenNavigator:AbstractNavigatorItem", navigator.getAbstractNavigatorItemClassName(), navigator.getAbstractNavigatorItemQualifiedClassName()); |
| checkClassName(state, "GenNavigator:NavigatorGroup", navigator.getNavigatorGroupClassName(), navigator.getNavigatorGroupQualifiedClassName()); |
| checkClassName(state, "GenNavigator:NavigatorItem", navigator.getNavigatorItemClassName(), navigator.getNavigatorItemQualifiedClassName()); |
| checkClassName(state, "GenNavigator:UriInputTester", navigator.getUriInputTesterClassName(), navigator.getUriInputTesterQualifiedClassName()); |
| checkClassName(state, "GenDomainModelNavigator:DomainContentProvider", navigator.getDomainContentProviderClassName(), navigator.getDomainContentProviderQualifiedClassName()); |
| checkClassName(state, "GenDomainModelNavigator:DomainLabelProvider", navigator.getDomainLabelProviderClassName(), navigator.getDomainLabelProviderQualifiedClassName()); |
| checkClassName(state, "GenDomainModelNavigator:DomainModelElementTester", navigator.getDomainModelElementTesterClassName(), navigator.getDomainModelElementTesterQualifiedClassName()); |
| checkClassName(state, "GenDomainModelNavigator:DomainNavigatorItem", navigator.getDomainNavigatorItemClassName(), navigator.getDomainNavigatorItemQualifiedClassName()); |
| } else { |
| state.add("GenNavigator:ContentProvider"); |
| state.add("GenNavigator:LabelProvider"); |
| state.add("GenNavigator:GroupWrapper"); |
| } |
| GenDiagramUpdater updater = genDiagram.getEditorGen().getDiagramUpdater(); |
| if (updater != null) { |
| checkClassName(state, "GenDiagramUpdater:DiagramUpdater", updater.getDiagramUpdaterClassName(), updater.getDiagramUpdaterQualifiedClassName()); |
| checkClassName(state, "GenDiagramUpdater:NodeDescriptor", updater.getNodeDescriptorClassName(), updater.getNodeDescriptorQualifiedClassName()); |
| checkClassName(state, "GenDiagramUpdater:LinkDescriptor", updater.getLinkDescriptorClassName(), updater.getLinkDescriptorQualifiedClassName()); |
| checkClassName(state, "GenDiagramUpdater:UpdateCommand", updater.getUpdateCommandClassName(), updater.getUpdateCommandQualifiedClassName()); |
| } else { |
| state.add("GenDiagramUpdater:DiagramUpdater"); |
| state.add("GenDiagramUpdater:NodeDescriptor"); |
| state.add("GenDiagramUpdater:LinkDescriptor"); |
| state.add("GenDiagramUpdater:UpdateCommand"); |
| } |
| |
| GenPropertySheet propSheet = genDiagram.getEditorGen().getPropertySheet(); |
| if (propSheet != null) { |
| checkPackageName(state, "GenPropertySheet:packageName", propSheet.getPackageName()); |
| checkClassName(state, "GenPropertySheet:LabelProvider", propSheet.getLabelProviderClassName(), propSheet.getLabelProviderQualifiedClassName()); |
| } else { |
| state.add("GenPropertySheet:LabelProvider"); |
| } |
| GenPlugin genPlugin = genDiagram.getEditorGen().getPlugin(); |
| checkClassName(state, "GenPlugin:Activator", genPlugin.getActivatorClassName(), genPlugin.getActivatorQualifiedClassName()); |
| for (GenCommonBaseIterator entities = new GenCommonBaseIterator(genDiagram); entities.hasNext();) { |
| GenCommonBase nextEntity = entities.next(); |
| checkClassName(state, "GenCommonBase:EditPart", nextEntity.getEditPartClassName(), nextEntity.getEditPartQualifiedClassName()); |
| checkClassName(state, "GenCommonBase:ItemSemanticEditPolicy", nextEntity.getItemSemanticEditPolicyClassName(), nextEntity.getItemSemanticEditPolicyQualifiedClassName()); |
| checkClassName(state, "GenCommonBase:NotationViewFactory", nextEntity.getNotationViewFactoryClassName(), nextEntity.getNotationViewFactoryQualifiedClassName()); |
| checkEditSupport(state, nextEntity); |
| if (nextEntity instanceof GenChildContainer) { |
| GenChildContainer genContainer = (GenChildContainer) nextEntity; |
| checkClassName(state, "GenContainerBase:CanonicalEditPolicy", genContainer.getCanonicalEditPolicyClassName(), genContainer.getCanonicalEditPolicyQualifiedClassName()); |
| } |
| if (nextEntity instanceof GenNode) { |
| GenNode genNode = (GenNode) nextEntity; |
| checkClassName(state, "GenNode:GraphicalNodeEditPolicy", genNode.getGraphicalNodeEditPolicyClassName(), genNode.getGraphicalNodeEditPolicyQualifiedClassName()); |
| checkClassName(state, "GenNode:CreateCommand", genNode.getCreateCommandClassName(), genNode.getCreateCommandQualifiedClassName()); |
| } |
| if (nextEntity instanceof GenLink) { |
| GenLink genLink = (GenLink) nextEntity; |
| checkClassName(state, "GenLink:CreateCommand", genLink.getCreateCommandClassName(), genLink.getCreateCommandQualifiedClassName()); |
| checkClassName(state, "GenLink:ReorientCommand", genLink.getReorientCommandClassName(), genLink.getReorientCommandQualifiedClassName()); |
| } |
| for (Behaviour nextB : nextEntity.getBehaviour()) { |
| String epClassName = CodeGenUtil.getSimpleClassName(nextB.getEditPolicyQualifiedClassName()); // just for checkClassName to be happy |
| checkClassName(state, "Behaviour:EditPolicy", epClassName, nextB.getEditPolicyQualifiedClassName()); |
| } |
| } |
| GenAuditRoot audits = genDiagram.getEditorGen().getAudits(); |
| assertTrue("Need AuditRoot instance with rules to check handcoded methods", audits != null && audits.getRules().size() > 0); |
| Set<String> checkedContexts = new HashSet<String>(); |
| for (GenAuditContext nextCtx : audits.getClientContexts()) { |
| if (!checkedContexts.contains(nextCtx.getQualifiedClassName())) { |
| checkClassName(state, "GenAuditContext:className", nextCtx.getClassName(), nextCtx.getQualifiedClassName()); |
| checkedContexts.add(nextCtx.getQualifiedClassName()); |
| } |
| } |
| for (GenAuditRule nextAudit : audits.getRules()) { |
| checkClassName(state, "GenAuditRule:ConstraintAdapter", nextAudit.getConstraintAdapterClassName(), nextAudit.getConstraintAdapterQualifiedClassName()); |
| } |
| |
| // test model may not contain them |
| state.add("GenCommonBase:EditPart"); |
| state.add("GenCommonBase:ItemSemanticEditPolicy"); |
| state.add("GenCommonBase:NotationViewFactory"); |
| state.add("GenContainer:CanonicalEditPolicy"); |
| state.add("GenNode:GraphicalNodeEditPolicy"); |
| state.add("GenNode:CreateCommand"); |
| state.add("TypeLinkModelFacet:CreateCommand"); |
| state.add("MetamodelType:EditHelper"); |
| state.add("SpecializationType:EditHelperAdvice"); |
| state.add("Behaviour:EditPolicy"); |
| state.add("OpenDiagramBehaviour:EditPolicy"); |
| |
| // disable explicitly |
| state.add("ElementType:EditHelper"); |
| state.add("ElementType:EditHelper"); |
| state.add("FigureViewmap:Figure"); |
| state.add("ExternalLabel:TextEditPart"); |
| state.add("ExternalLabel:TextNotationViewFactory"); |
| state.add("GenCustomPreferencePage:Qualified"); |
| state.add("GenCustomAction:Qualified"); |
| state.add("GenAction:Qualified"); |
| |
| // coverage check |
| for (Object next : GMFGenPackage.eINSTANCE.getEClassifiers()) { |
| if (next instanceof EClass) { |
| checkClassNamesCoverage(state, (EClass) next); |
| } |
| } |
| } |
| |
| protected void checkEditSupport(Set<String> state, GenCommonBase diagramElement) { |
| ElementType genType = diagramElement.getElementType(); |
| if (genType instanceof MetamodelType) { |
| MetamodelType metamodelType = (MetamodelType) genType; |
| checkClassName(state, "MetamodelType:EditHelper", metamodelType.getEditHelperClassName(), metamodelType.getEditHelperQualifiedClassName()); |
| } else if (genType instanceof SpecializationType) { |
| SpecializationType specializationType = (SpecializationType) genType; |
| checkClassName(state, "SpecializationType:EditHelperAdvice", specializationType.getEditHelperAdviceClassName(), specializationType.getEditHelperAdviceQualifiedClassName()); |
| } |
| } |
| |
| protected void checkPackageName(Set<String> state, String id, String packageName) { |
| IStatus s = JavaConventions.validatePackageName(packageName, javaLevel, javaLevel); |
| assertTrue(id + " package name is not valid : " + s.getMessage(), s.getSeverity() != IStatus.ERROR); |
| state.add(packageName); // for unique package name check |
| state.add(id); // for coverage check |
| } |
| |
| protected void checkClassName(Set<String> state, String id, String simpleClassName, String qualifiedClassName) { |
| IStatus s = JavaConventions.validateJavaTypeName(simpleClassName, javaLevel, javaLevel); |
| assertTrue(id + " simple class name is not valid : " + s.getMessage(), s.getSeverity() != IStatus.ERROR); |
| s = JavaConventions.validateJavaTypeName(qualifiedClassName, javaLevel, javaLevel); |
| assertTrue(id + " qualified class name is not valid : " + s.getMessage(), s.getSeverity() != IStatus.ERROR); |
| assertTrue(id + " simple class name does not match the qualified one : '" + simpleClassName + "', '" + qualifiedClassName + "'", qualifiedClassName.endsWith('.' + simpleClassName) || qualifiedClassName.endsWith('$' + simpleClassName)); |
| assertFalse(qualifiedClassName + " is not unique", state.contains(qualifiedClassName)); |
| state.add(qualifiedClassName); // for unique class name check |
| state.add(id); // for coverage check |
| } |
| |
| protected void checkPackageNamesCoverage(Set<String> state, EClass eClass) { |
| final String PN = "PackageName"; |
| for (EAttribute attribute : eClass.getEAttributes()) { |
| if (attribute.getName().endsWith(PN) && attribute.getName().length() > PN.length()) { |
| String packageName = attribute.getName(); |
| packageName = packageName.substring(0, packageName.length() - PN.length()); |
| String id = eClass.getName() + ':' + packageName; |
| //System.err.println("check " + id); |
| assertTrue(id + " package name is not checked", state.contains(id)); |
| } |
| } |
| } |
| |
| protected void checkClassNamesCoverage(Set<String> state, EClass eClass) { |
| final String CN = "ClassName"; |
| final String QCN = "QualifiedClassName"; |
| final String GET = "get"; |
| for (EAttribute attribute : eClass.getEAttributes()) { |
| if (attribute.getName().endsWith(QCN) && attribute.getName().length() > QCN.length()) { |
| // TODO : attribute with fqn; ignore for now |
| } else if (attribute.getName().endsWith(CN) && attribute.getName().length() > CN.length()) { |
| String className = attribute.getName(); |
| className = className.substring(0, className.length() - CN.length()); |
| className = Character.toUpperCase(className.charAt(0)) + className.substring(1); |
| String id = eClass.getName() + ':' + className; |
| //System.err.println("check simple " + id); |
| assertTrue(id + " simple class name is not checked", state.contains(id)); |
| } |
| } |
| for (EOperation operation : eClass.getEOperations()) { |
| if (operation.getName().startsWith(GET) && operation.getName().endsWith(QCN) |
| && operation.getName().length() > GET.length() + QCN.length()) { |
| String className = operation.getName(); |
| className = className.substring(GET.length(), className.length() - QCN.length()); |
| String id = eClass.getName() + ':' + className; |
| //System.err.println("check qualified " + id); |
| assertTrue(id + " qualified class name is not checked", state.contains(id)); |
| } |
| } |
| } |
| |
| private static class GenCommonBaseIterator implements Iterator<GenCommonBase> { |
| private GenCommonBase nextBase; |
| private Iterator<?> wrappedIterator; |
| |
| public GenCommonBaseIterator(GenDiagram genDiagram) { |
| assert genDiagram != null; |
| nextBase = genDiagram; |
| wrappedIterator = genDiagram.eAllContents(); |
| } |
| public boolean hasNext() { |
| return nextBase != null; |
| } |
| |
| public GenCommonBase next() { |
| if (nextBase == null) { |
| throw new NoSuchElementException(); |
| } |
| GenCommonBase rv = nextBase; |
| advance(); |
| return rv; |
| } |
| |
| private void advance() { |
| nextBase = null; |
| while (wrappedIterator.hasNext()) { |
| Object next = wrappedIterator.next(); |
| if (next instanceof GenCommonBase) { |
| nextBase = (GenCommonBase) next; |
| break; |
| } |
| } |
| } |
| public void remove() { |
| throw new UnsupportedOperationException(); |
| } |
| } |
| |
| private class CustomLinkModelFacet extends EObjectImpl implements LinkModelFacet { |
| private EList<GenClass> myTypes; |
| protected CustomLinkModelFacet(GenClass[] types) { |
| myTypes = new UnmodifiableEList<GenClass>(types.length, types); |
| } |
| public EList<GenClass> getAssistantSourceTypes() { |
| return myTypes; |
| } |
| public EList<GenClass> getAssistantTargetTypes() { |
| return myTypes; |
| } |
| public GenClass getSourceType() { |
| return null; |
| } |
| public GenClass getTargetType() { |
| return null; |
| } |
| public TreeIterator<EObject> eAllContents() { |
| return null; |
| } |
| public EClass eClass() { |
| return null; |
| } |
| public EObject eContainer() { |
| return null; |
| } |
| public EStructuralFeature eContainingFeature() { |
| return null; |
| } |
| public EReference eContainmentFeature() { |
| return null; |
| } |
| public EList<EObject> eContents() { |
| return null; |
| } |
| public EList<EObject> eCrossReferences() { |
| return null; |
| } |
| public Object eGet(EStructuralFeature feature) { |
| return null; |
| } |
| public Object eGet(EStructuralFeature feature, boolean resolve) { |
| return null; |
| } |
| public boolean eIsProxy() { |
| return false; |
| } |
| public boolean eIsSet(EStructuralFeature feature) { |
| return false; |
| } |
| public Resource eResource() { |
| return null; |
| } |
| public void eSet(EStructuralFeature feature, Object newValue) {} |
| public void eUnset(EStructuralFeature feature) {} |
| public EList<Adapter> eAdapters() { |
| return null; |
| } |
| public boolean eDeliver() { |
| return false; |
| } |
| public void eNotify(Notification notification) {} |
| public void eSetDeliver(boolean deliver) {} |
| } |
| } |