svn commit: r16424 - trunk/src/argouml-app/tests/org/argouml/model/CheckUMLModelHelper.java

Tom Morris <[email protected]>
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: tfmorris
Date: 2008-12-22 14:51:27-0800
New Revision: 16424

Modified:
   trunk/src/argouml-app/tests/org/argouml/model/CheckUMLModelHelper.java

Log:
Add test of MetaTypes class and metatypes methods in Facade

Modified: trunk/src/argouml-app/tests/org/argouml/model/CheckUMLModelHelper.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/tests/org/argouml/model/CheckUMLModelHelper.java?view=diff&pathrev=16424&r1=16423&r2=16424
==============================================================================
--- trunk/src/argouml-app/tests/org/argouml/model/CheckUMLModelHelper.java	(original)
+++ trunk/src/argouml-app/tests/org/argouml/model/CheckUMLModelHelper.java	2008-12-22 14:51:27-0800
@@ -27,6 +27,8 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
 
 import junit.framework.TestCase;
 
@@ -175,6 +177,22 @@
                 return;
             }
 
+            Method getMethod;
+            String getMethodName = "get" + name;
+            if ("Class".equals(name)) {
+                getMethodName = "getUMLClass";
+            }
+            Object metatypes = Model.getMetaTypes();
+            try {
+                getMethod =
+                    MetaTypes.class.getDeclaredMethod(
+                            getMethodName,
+                            new Class[] {});
+            } catch (NoSuchMethodException e) {
+                TestCase.fail("Method " + getMethodName
+                        + " does not exist in MetaTypes");
+                return;
+            }
 	    try {
 		// Extra careful now, not to keep any references to the
 		// second argument.
@@ -185,9 +203,12 @@
                             isAMethod, facade, new Object[] {
                                 element
                             }));
-                
-                    deleteAndRelease(
-                            createMethod.invoke(factory, args), name);
+		    TestCase.assertTrue(Model.getFacade().isA(name, element));
+                    Object metaElement = invoke(getMethod, metatypes,
+                            new Object[0]);
+                    TestCase.assertTrue(((Class) metaElement)
+                            .isAssignableFrom(element.getClass()));
+                    deleteAndRelease(createMethod.invoke(factory, args), name);
 		} catch (ClassCastException e) {
 		    // Here it is another object sent to the test.
 		    deleteAndRelease(createMethod.invoke(factory, args));
@@ -322,21 +343,50 @@
      */
     public static void metaModelNameCorrect(Object factory, 
             Iterable<String> names) {
+        Set<String> metaNames = new HashSet<String>();
+        metaNames.addAll(Arrays.asList(Model.getFacade().getMetatypeNames()));
         try {
             for (String name : names) {
-                Method m = findMethod(factory.getClass(), Factory.class,
+                Method createMethod = findMethod(factory.getClass(), Factory.class,
                         "create" + name, new Class[] {});
                 TestCase.assertNotNull("Failed to find method create"
-                        + name, m);
-                Object element = m.invoke(factory, new Object[] {});
+                        + name, createMethod);
+                Object element = createMethod.invoke(factory, new Object[] {});
                 TestCase.assertTrue("Not a UML Element", 
                         Model.getFacade().isAUMLElement(element));
-                String metaName =
-                        Model.getExtensionMechanismsHelper().getMetaModelName(
-                                element);
+                String metaName = Model.getMetaTypes().getName(element);
                 TestCase.assertEquals(
                         "not a valid metaModelName " + name, 
                         metaName, name);
+                TestCase.assertTrue(metaNames.contains(metaName));
+                TestCase.assertTrue(Model.getFacade().isA(metaName, element));
+                
+                Method m2 = findMethod(MetaTypes.class, MetaTypes.class,
+                        "get" + name, new Class[] {});
+                
+                
+                Method getMethod;
+                String getMethodName = "get" + name;
+                if ("Class".equals(name)) {
+                    getMethodName = "getUMLClass";
+                }
+                Object metatypes = Model.getMetaTypes();
+                try {
+                    getMethod =
+                        MetaTypes.class.getDeclaredMethod(
+                                getMethodName,
+                                new Class[] {});
+                } catch (NoSuchMethodException e) {
+                    TestCase.fail("Method " + getMethodName
+                            + " does not exist in MetaTypes");
+                    return;
+                }
+                TestCase.assertNotNull("Failed to find method get"
+                        + getMethodName, getMethod);
+                Object metaElement = createMethod.invoke(factory, 
+                        new Object[] {});
+                TestCase.assertTrue(metaElement.getClass().isAssignableFrom(
+                        element.getClass()));
             }
         } catch (Exception ex) {
             ex.printStackTrace();

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=990136

To unsubscribe from this discussion, e-mail: [[email protected]].
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.