/** * Delete a model object, frees the reference and then checks that the object is reclaimed. * * <p>This must be called with just one reference to the object or else it will fail. * * @param mo the model object that we try to delete, release and reclaim. */ public static void deleteAndRelease(Object mo) { Class c = mo.getClass(); // Call methods that exists for all objects and that always return // something meaningful TestCase.assertNotNull("toString() corrupt in " + c, mo.toString()); Model.getUmlFactory().delete(mo); Model.getPump().flushModelEvents(); TestCase.assertTrue("Could not delete " + c, Model.getUmlFactory().isRemoved(mo)); }
/** 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()); }
/** * Delete a model object, frees the reference and then checks that the object is reclaimed. * * <p>This must be called with just one reference to the object or else it will fail. * * @param mo the model object that we try to delete, release and reclaim. * @param name the class name of the uml object */ private static void deleteAndRelease(Object mo, String name) { Class c = mo.getClass(); // Call methods that exists for all objects and that always return // something meaningful TestCase.assertNotNull("toString() corrupt in " + c, mo.toString()); TestCase.assertNotNull( "getUMLClassName() corrupt in " + c, Model.getFacade().getUMLClassName(mo)); TestCase.assertEquals( "getUMLClassName() different from expected in " + c, name, Model.getFacade().getUMLClassName(mo)); Model.getUmlFactory().delete(mo); Model.getPump().flushModelEvents(); TestCase.assertTrue("Could not delete " + c, Model.getUmlFactory().isRemoved(mo)); }