Author: fdesbois Date: 2009-11-03 18:07:29 +0100 (Tue, 03 Nov 2009) New Revision: 690 Added: branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java Log: - Refactor test JavaBuilderTest to ObjectModelBuilderTest - Improve specific java tests in JavaBuilderTest - Add clearSuperclasses method for JavaBuilder Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java =================================================================== --- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2009-11-03 16:20:33 UTC (rev 689) +++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2009-11-03 17:07:29 UTC (rev 690) @@ -115,7 +115,7 @@ */ public void setSuperClass(ObjectModelClass classifier, String superclassQualifiedName) { ObjectModelClassImpl impl = (ObjectModelClassImpl) classifier; - impl.getSuperclasses().clear(); // suppress all existing superclass: only one can be set for java + impl.clearSuperclasses(); // suppress all existing superclass: only one can be set for java modelBuilder.addSuperclass(impl, superclassQualifiedName); this.addImport(classifier, superclassQualifiedName); } Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java =================================================================== --- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java 2009-11-03 16:20:33 UTC (rev 689) +++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java 2009-11-03 17:07:29 UTC (rev 690) @@ -59,6 +59,11 @@ super(); } + public void clearSuperclasses() { + superclasses = null; + superclassesRefs.clear(); + } + public void addSuperclass(ObjectModelImplRef ref) { superclassesRefs.add(ref); // superclassesRefs is modified, superclasses must be reset Modified: branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java =================================================================== --- branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java 2009-11-03 16:20:33 UTC (rev 689) +++ branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java 2009-11-03 17:07:29 UTC (rev 690) @@ -53,16 +53,16 @@ /** * Test of getModel. - * Prerequisite : instanciation of JavaBuilder. - * - ObjectModel created in JavaBuilder constructor. ObjectModel name will be set. + * No test needed : model created in modelBuilder instanciated in constructor (ObjectModelBuilder). + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testGetModel() */ @Test public void testGetModel() { System.out.println("getModel"); JavaBuilder builder = new JavaBuilder("TestModel"); - assertNotNull(builder.getModel()); - assertEquals(builder.getModel().getName(), "TestModel"); + + builder.getModel(); } /** @@ -89,13 +89,13 @@ String type = "java.util.List<org.chorem.cash.Category>"; // type add : 2 imports added builder.addImport(classifier, type); - assertEquals(importsExtension.getImports(classifier).size(), 3); + assertEquals(3, importsExtension.getImports(classifier).size()); } /** * Test of createClass method, of class JavaBuilder. - * Prerequisite : none. - * - Create a class with name and packageName. Qualified name of the class = name + packageName. + * No test needed : call of createClass in ObjectModelBuilder + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testCreateClass() */ @Test public void testCreateClass() { @@ -103,12 +103,7 @@ JavaBuilder builder = new JavaBuilder("TestModel"); - ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms"); - - assertNotNull(clazz); - assertEquals(clazz.getName(), "Person"); - assertEquals(clazz.getPackageName(), "org.chorem.bonzoms"); - assertEquals(clazz.getQualifiedName(), "org.chorem.bonzoms.Person"); + builder.createClass("Person", "org.chorem.bonzoms"); } /** @@ -127,6 +122,9 @@ /** * Test of setSuperClass method, of class JavaBuilder. + * Only one superclass can be set. + * Check imports on superclass qualified name + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddSuperclass() */ @Test public void testSetSuperClass() { @@ -136,17 +134,25 @@ ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms"); String superclassQualifiedName = "org.chorem.bonzoms.Party"; + builder.setSuperClass(clazz, superclassQualifiedName); + superclassQualifiedName = "org.chorem.bonzoms.NamedElement"; builder.setSuperClass(clazz, superclassQualifiedName); - assertNotNull(clazz.getSuperclasses()); - assertEquals(clazz.getSuperclasses().size(), 1); + + assertEquals(1, clazz.getSuperclasses().size()); + + // Check imports + ImportsManagerExtension ext = builder.getModel().getExtension( + ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + + List<String> imports = ext.getImports(clazz); + assertEquals(0, imports.size()); } /** * Test of addInterface method, of class JavaBuilder. - * Prerequisite : existing classifier in model. - * - Add an interface not included in the model to a classifier. - * - TODO : Add an existing interface in the model to a classfier. + * Check imports on adding interface : imports added on interfaceQualifiedName + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddInterface() */ @Test public void testAddInterface() { @@ -157,9 +163,14 @@ String interfaceQualifiedName = "java.io.Serializable"; builder.addInterface(classifier, interfaceQualifiedName); + + // Check imports + ImportsManagerExtension ext = builder.getModel().getExtension( + ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); - assertNotNull(classifier.getInterfaces()); - assertEquals(classifier.getInterfaces().size(), 1); + List<String> imports = ext.getImports(classifier); + assertEquals(1, imports.size()); + assertTrue(imports.contains("java.io.Serializable")); } /** @@ -183,9 +194,8 @@ /** * Test of addAttribute method, of class JavaBuilder. - * Prerequisite : existing classifier in model. - * - Add a public attribute without default value - * - Add a private static attribute with default value + * Check imports on adding attribute : imports added on type and value. + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddAttribute() */ @Test public void testAddAttribute() { @@ -194,23 +204,21 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - ObjectModelAttribute attribute = builder.addAttribute(classifier, "firstName", "java.lang.String", "", + builder.addAttribute(classifier, "firstName", "java.lang.String", "", ObjectModelModifier.PUBLIC); - assertNotNull(attribute); - assertEquals(attribute.getName(), "firstName"); - assertEquals(attribute.getType(), "java.lang.String"); - assertEquals(attribute.getVisibility(), "public"); - assertEquals(attribute.getDefaultValue(), ""); - assertFalse(attribute.isFinal()); - assertFalse(attribute.isStatic()); - - attribute = builder.addAttribute(classifier, "roles", "java.lang.List<org.chorem.bonzoms.Role>", - "new java.lang.ArrayList<org.chorem.bonzoms.Role>()", + builder.addAttribute(classifier, "roles", "java.util.List<org.chorem.bonzoms.Role>", + "new java.util.ArrayList<org.chorem.bonzoms.Role>()", ObjectModelModifier.PRIVATE, ObjectModelModifier.STATIC); - assertEquals(attribute.getDefaultValue(), "new java.lang.ArrayList<org.chorem.bonzoms.Role>()"); - assertTrue(attribute.isStatic()); + // Check imports + ImportsManagerExtension ext = builder.getModel().getExtension( + ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + + List<String> imports = ext.getImports(classifier); + assertEquals(2, imports.size()); // no imports for org.chorem.bonzoms.Role and java.lang.String + assertTrue(imports.contains("java.util.ArrayList")); + assertTrue(imports.contains("java.util.List")); } /** @@ -260,9 +268,8 @@ /** * Test of addOperation method, of class JavaBuilder. - * Prerequisite : existing classifier in model. - * - Add simple public method - * - Add abstract method + * Check imports on adding operation : returnType of the operation + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddOperation() */ @Test public void testAddOperation() { @@ -274,21 +281,23 @@ ObjectModelOperation result = builder.addOperation(classifier, "methodName", "java.util.List<java.lang.String>", ObjectModelModifier.PUBLIC); - assertNotNull(result); - assertEquals(result.getName(), "methodName"); - assertEquals(result.getReturnType(), "java.util.List<java.lang.String>"); - assertEquals(result.getVisibility(), "public"); - assertFalse(result.isAbstract()); - result = builder.addOperation(classifier, "addPropertyChangeListener", "void", + result = builder.addOperation(classifier, "addPropertyChangeListener", null, ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT); - assertTrue(result.isAbstract()); + + // Check imports + ImportsManagerExtension ext = builder.getModel().getExtension( + ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + + List<String> imports = ext.getImports(classifier); + assertEquals(1, imports.size()); + assertTrue(imports.contains("java.util.List")); } /** * Test of addParameter method, of class JavaBuilder. - * Prerequisite : existing classifier in model and operation associated to this classifier. - * - Add a parameter to an existing operation in a classifier + * Check imports on adding parameter : type of the parameter + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddParameter() */ @Test public void testAddParameter() { @@ -301,20 +310,21 @@ ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", ObjectModelModifier.PUBLIC); - ObjectModelParameter param = builder.addParameter(operation, "java.lang.String", "name"); - assertNotNull(param); - assertEquals(param.getName(), "name"); - assertEquals(param.getType(), "java.lang.String"); + builder.addParameter(operation, "java.lang.String", "name"); - List<ObjectModelParameter> listParams = (List<ObjectModelParameter>)operation.getParameters(); - ObjectModelParameter param1 = listParams.get(0); - assertEquals(param1, param); + // Check imports + ImportsManagerExtension ext = builder.getModel().getExtension( + ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + + List<String> imports = ext.getImports(classifier); + assertEquals(0, imports.size()); + } /** * Test of addException method, of class JavaBuilder. - * Prerequisite : existing classifier in model and operation associated to this classifier. - * - Add an exception to an existing operation in a classifier + * Check imports on adding exception : exception name + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddException() */ @Test public void testAddException() { @@ -328,19 +338,19 @@ ObjectModelModifier.PUBLIC); builder.addException(operation, "java.lang.IllegalArgumentException"); - Set<String> exceptions = operation.getExceptions(); - assertNotNull(exceptions); - assertEquals(exceptions.size(), 1); - Iterator<String> it = exceptions.iterator(); - assertNotNull(it.hasNext()); - assertEquals(it.next(), "java.lang.IllegalArgumentException"); + + // Check imports + ImportsManagerExtension ext = builder.getModel().getExtension( + ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + + List<String> imports = ext.getImports(classifier); + assertEquals(0, imports.size()); } /** * Test of setOperationBody method, of class JavaBuilder. - * Prerequisite : existing classifier in model and operation associated to this classifier. - * - Add a body to an existing operation in a classifier - * NOTE : No complex test for adding body to an operation (no use of processor) + * No body code for an abstract operation : throw an IllegalArgumentException + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testSetOperationBody() */ @Test public void testSetOperationBody() { @@ -351,11 +361,14 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", - ObjectModelModifier.PUBLIC); + ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT); - builder.setOperationBody(operation, "this.name = name"); - assertNotNull(operation.getBodyCode()); - assertEquals(operation.getBodyCode(), "this.name = name"); + try { + builder.setOperationBody(operation, "this.name = name"); + } catch (Exception eee) { + assertEquals(IllegalArgumentException.class, eee.getClass()); + System.out.println("expected exception : " + eee.getMessage()); + } } } \ No newline at end of file Added: branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java =================================================================== --- branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java (rev 0) +++ branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java 2009-11-03 17:07:29 UTC (rev 690) @@ -0,0 +1,287 @@ + +package org.nuiton.eugene.models.object.xml; + +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import static org.junit.Assert.*; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelModifier; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelParameter; + +/** + * ObjectModelBuilder + * + * Created: 3 nov. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class ObjectModelBuilderTest { + + public ObjectModelBuilderTest() { + } + + @BeforeClass + public static void setUpClass() throws Exception { + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of getModel method, of class ObjectModelBuilder. + * Prerequisite : instanciation of ObjectModelBuilder. + * - ObjectModel created in ObjectModelBuilder constructor. ObjectModel name will be set. + */ + @Test + public void testGetModel() { + System.out.println("getModel"); + + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + assertNotNull(builder.getModel()); + assertEquals("TestModel", builder.getModel().getName()); + } + + /** + * Test of createClass method, of class ObjectModelBuilder. + * Prerequisite : none. + * - Create a class with name and packageName. Qualified name of the class = name + packageName. + */ + @Test + public void testCreateClass() { + System.out.println("createClass"); + + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms"); + + assertNotNull(clazz); + assertEquals("Person", clazz.getName()); + assertEquals("org.chorem.bonzoms", clazz.getPackageName()); + assertEquals("org.chorem.bonzoms.Person", clazz.getQualifiedName()); + } + + /** + * Test of createInterface method, of class ObjectModelBuilder. + */ + //@Test + public void testCreateInterface() { + System.out.println("createInterface"); + } + + /** + * Test of addAttribute method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model. + * - Add an attribute with no default value + */ + @Test + public void testAddAttributeWithoutDefaultValue() { + System.out.println("addAttribute"); + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelAttribute attribute = builder.addAttribute(classifier, "firstName", "java.lang.String"); + assertEquals("", attribute.getDefaultValue()); + } + + /** + * Test of addAttribute method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model. + * - Add a public attribute without default value + * - Add a private static attribute with default value + */ + @Test + public void testAddAttribute() { + System.out.println("addAttribute"); + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelAttribute attribute = builder.addAttribute(classifier, "firstName", "java.lang.String", "", + ObjectModelModifier.PUBLIC); + + assertNotNull(attribute); + assertEquals("firstName", attribute.getName()); + assertEquals("java.lang.String", attribute.getType()); + assertEquals("public", attribute.getVisibility()); + assertEquals("", attribute.getDefaultValue()); + assertFalse(attribute.isFinal()); + assertFalse(attribute.isStatic()); + + attribute = builder.addAttribute(classifier, "roles", "java.lang.List<org.chorem.bonzoms.Role>", + "new java.lang.ArrayList<org.chorem.bonzoms.Role>()", + ObjectModelModifier.PRIVATE, ObjectModelModifier.STATIC); + + assertEquals("new java.lang.ArrayList<org.chorem.bonzoms.Role>()", attribute.getDefaultValue()); + assertTrue(attribute.isStatic()); + } + + /** + * Test of addOperation method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model. + * - Add simple public method + * - Add abstract method + */ + @Test + public void testAddOperation() { + System.out.println("addOperation"); + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelOperation result = builder.addOperation(classifier, + "methodName", "java.util.List<java.lang.String>", ObjectModelModifier.PUBLIC); + assertNotNull(result); + assertEquals(result.getName(), "methodName"); + assertEquals(result.getReturnType(), "java.util.List<java.lang.String>"); + assertEquals(result.getVisibility(), "public"); + assertFalse(result.isAbstract()); + + result = builder.addOperation(classifier, "addPropertyChangeListener", "void", + ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT); + assertTrue(result.isAbstract()); + } + + /** + * Test of setOperationBody method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model and operation associated to this classifier. + * - Add a body to an existing operation in a classifier + */ + @Test + public void testSetOperationBody() { + System.out.println("setOperationBody"); + + ObjectModelBuilder builder = new ObjectModelBuilder("modelName"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", + ObjectModelModifier.PUBLIC); + + builder.setOperationBody(operation, "this.name = name"); + assertNotNull(operation.getBodyCode()); + assertEquals(operation.getBodyCode(), "this.name = name"); + } + + /** + * Test of addInterface method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model. + * - Add an interface not included in the model to a classifier. + * - TODO : Add an existing interface in the model to a classfier. + */ + @Test + public void testAddInterface() { + System.out.println("addInterface"); + + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + String interfaceQualifiedName = "java.io.Serializable"; + builder.addInterface(classifier, interfaceQualifiedName); + + assertNotNull(classifier.getInterfaces()); + assertEquals(classifier.getInterfaces().size(), 1); + } + + /** + * Test of addSuperclass method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model. + * - Add a superclass not included in the model to a classifier. + * - TODO : Add an existing superclass in the model to a classfier. + */ + @Test + public void testAddSuperclass() { + System.out.println("addSuperclass"); + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms"); + + String superclassQualifiedName = "org.chorem.bonzoms.Party"; + + builder.addSuperclass(clazz, superclassQualifiedName); + assertEquals(1, clazz.getSuperclasses().size()); + } + + /** + * Test of addParameter method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model and operation associated to this classifier. + * - Add a parameter to an existing operation in a classifier + */ + @Test + public void testAddParameter() { + System.out.println("addParameter"); + + ObjectModelBuilder builder = new ObjectModelBuilder("modelName"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", + ObjectModelModifier.PUBLIC); + + ObjectModelParameter param = builder.addParameter(operation, "java.lang.String", "name"); + assertNotNull(param); + assertEquals(param.getName(), "name"); + assertEquals(param.getType(), "java.lang.String"); + + List<ObjectModelParameter> listParams = (List<ObjectModelParameter>)operation.getParameters(); + ObjectModelParameter param1 = listParams.get(0); + assertEquals(param1, param); + } + + /** + * Test of addException method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model and operation associated to this classifier. + * - Add an exception to an existing operation in a classifier + */ + @Test + public void testAddException() { + System.out.println("addException"); + + ObjectModelBuilder builder = new ObjectModelBuilder("modelName"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", + ObjectModelModifier.PUBLIC); + + builder.addException(operation, "java.lang.IllegalArgumentException"); + Set<String> exceptions = operation.getExceptions(); + assertNotNull(exceptions); + assertEquals(exceptions.size(), 1); + Iterator<String> it = exceptions.iterator(); + assertNotNull(it.hasNext()); + assertEquals(it.next(), "java.lang.IllegalArgumentException"); + } + + /** + * Test of setDocumentation method, of class ObjectModelBuilder. + */ + //@Test + public void testSetDocumentation() { + System.out.println("setDocumentation"); + } + +} \ No newline at end of file Property changes on: branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java ___________________________________________________________________ Added: svn:keywords + Author Date Revision
participants (1)
-
fdesbois@users.nuiton.org