/** * Try creating a stereotype for every modelelement type. * * @param f the factory containing the creation function for all the given metamodel element names * @param names the metamodel element names */ public static void isValidStereoType(Object f, Iterable<String> names) { try { Object ns = Model.getModelManagementFactory().createPackage(); Object clazz = Model.getCoreFactory().buildClass(ns); Object stereo1 = Model.getExtensionMechanismsFactory().buildStereotype(clazz, "test1", ns); for (String name : names) { Method m = findMethod(f.getClass(), Factory.class, "create" + name, new Class[] {}); if (m == null) { TestCase.fail("Failed to find method create" + name); } Object base = m.invoke(f, new Object[] {}); if (Model.getFacade().isAModelElement(base)) { Object stereo2 = Model.getExtensionMechanismsFactory().buildStereotype(base, "test2", ns); TestCase.assertTrue( "Unexpected invalid stereotype", Model.getExtensionMechanismsHelper().isValidStereotype(base, stereo2)); if (!(Model.getFacade().isAClass(base))) { TestCase.assertTrue( "Stereotype with base class of Class" + " incorrectly allowed for this metaclass", !Model.getExtensionMechanismsHelper().isValidStereotype(base, stereo1)); } else { Object inter = Model.getCoreFactory().createInterface(); Object stereo3 = Model.getExtensionMechanismsFactory().buildStereotype(inter, "test3", ns); TestCase.assertTrue( "Unexpected invalid stereotype", !Model.getExtensionMechanismsHelper().isValidStereotype(base, stereo3)); } } } } catch (Exception ex) { ex.printStackTrace(); TestCase.fail("Exception during test metaModelnameCorrect. Message: " + ex.getMessage()); } }
/** Test cascading delete to make sure dependent elements disappear. */ public void testDelete() { ExtensionMechanismsFactory emFactory = Model.getExtensionMechanismsFactory(); ExtensionMechanismsHelper emHelper = Model.getExtensionMechanismsHelper(); Object model = Model.getModelManagementFactory().createModel(); Model.getModelManagementFactory().setRootModel(model); Object stereo = emFactory.buildStereotype("mystereo", model); Object td = emFactory.buildTagDefinition("myTD", stereo, null); Object tv = emFactory.buildTaggedValue(td, new String[] {"the tag value"}); Object clazz = Model.getCoreFactory().buildClass("MyClass", model); emHelper.addTaggedValue(clazz, tv); Collection tvs = Model.getFacade().getTaggedValuesCollection(clazz); assertEquals("Wrong number of TaggedValues returned", 1, tvs.size()); assertTrue("TaggedValue not found", tvs.contains(tv)); Collection tds = Model.getModelManagementHelper() .getAllModelElementsOfKind(model, Model.getMetaTypes().getTagDefinition()); assertEquals("TagDefinition not found", 1, tds.size()); // Deleting the stereotype should cascade to the TagDefinition, // then the TaggedValue Model.getUmlFactory().delete(stereo); Model.getPump().flushModelEvents(); tvs = Model.getFacade().getTaggedValuesCollection(clazz); assertEquals("TaggedValue not deleted", 0, tvs.size()); tds = Model.getModelManagementHelper() .getAllModelElementsOfKind(model, Model.getMetaTypes().getTagDefinition()); assertEquals("TagDefinition not deleted", 0, tds.size()); }
/** Test creation. */ public void testCreates() { CheckUMLModelHelper.createAndRelease( Model.getExtensionMechanismsFactory(), getTestableModelElements()); ExtensionMechanismsFactory emFactory = Model.getExtensionMechanismsFactory(); Object model = Model.getModelManagementFactory().createModel(); Object stereo = emFactory.buildStereotype("mystereo1", model); try { emFactory.buildTagDefinition("myTDx", stereo, model); fail("Illegal buildTagDefinition with both sterotype" + " and model didn't throw exception."); } catch (IllegalArgumentException e) { // Expected } emFactory.buildTagDefinition("myTD1", stereo, null); emFactory.buildTagDefinition("myTD2", stereo, null, "Boolean"); Collection tds = Model.getModelManagementHelper() .getAllModelElementsOfKind(model, Model.getMetaTypes().getTagDefinition()); assertEquals("TagDefinition not deleted", 2, tds.size()); }
/** Test if the ExtensionMechanismsFactory is really a singleton. */ public void testSingleton() { Object o1 = Model.getExtensionMechanismsFactory(); Object o2 = Model.getExtensionMechanismsFactory(); assertTrue("Different singletons", o1 == o2); }