Пример #1
0
  /**
   * 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());
  }
Пример #3
0
  /**
   * 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));
  }