Author: apetrelli
Date: Wed Nov  4 18:44:25 2009
New Revision: 832840

URL: http://svn.apache.org/viewvc?rev=832840&view=rev
Log:
TILESSB-11
Added tests for Expression, Definition.

TILESSB-10
Modified ListAttribute to be more significant in its API.

Modified:
    
tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/Definition.java
    
tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/ListAttribute.java
    
tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/BasicAttributeContextTest.java
    
tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/ExpressionTest.java
    
tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/TestDefinition.java

Modified: 
tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/Definition.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/Definition.java?rev=832840&r1=832839&r2=832840&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/Definition.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/Definition.java
 Wed Nov  4 18:44:25 2009
@@ -47,7 +47,6 @@
      * Constructor.
      */
     public Definition() {
-        super();
     }
 
     /**

Modified: 
tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/ListAttribute.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/ListAttribute.java?rev=832840&r1=832839&r2=832840&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/ListAttribute.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/ListAttribute.java
 Wed Nov  4 18:44:25 2009
@@ -59,8 +59,8 @@
      * @param value List.
      * @since 2.1.0
      */
-    public ListAttribute(List<? extends Object> value) {
-        super(value);
+    public ListAttribute(List<Attribute> value) {
+        setValue(value);
     }
 
     /**
@@ -75,44 +75,36 @@
     }
 
     /**
-     * Add an element in list.
-     * We use a property to avoid rewriting a new class.
+     * Sets the list of the attributes that are elements of this attribute.
      *
-     * @param element XmlAttribute to add.
-     * @since 2.1.0
+     * @param attributes The attributes.
+     * @since 3.0.0
      */
-    @SuppressWarnings("unchecked")
-    public void add(Attribute element) {
-        ((List<Object>) value).add(element);
+    public void setValue(List<Attribute> attributes) {
+        super.setValue(attributes);
     }
 
     /**
-     * Add an element in list.
+     * Returns the list of the attributes that are elements of this attribute.
      *
-     * @param value Object to add.
-     * @since 2.1.0
+     * @return The attributes.
+     * @since 3.0.0
      */
     @SuppressWarnings("unchecked")
-    public void add(Object value) {
-        //list.add( value );
-        // To correct a bug in digester, we need to check the object type
-        // Digester doesn't call correct method according to object type ;-(
-        if (value instanceof Attribute) {
-            add((Attribute) value);
-        } else {
-            ((List<Object>) this.value).add(value);
-        }
+    @Override
+    public List<Attribute> getValue() {
+        return (List<Attribute>) super.getValue();
     }
 
     /**
      * Add an element in list.
+     * We use a property to avoid rewriting a new class.
      *
-     * @param value Object to add.
+     * @param element XmlAttribute to add.
      * @since 2.1.0
      */
-    @SuppressWarnings("unchecked")
-    public void addObject(Object value) {
-        ((List<Object>) this.value).add(value);
+    public void add(Attribute element) {
+        getValue().add(element);
     }
 
     /**
@@ -148,9 +140,9 @@
      */
     @SuppressWarnings("unchecked")
     public void inherit(ListAttribute parent) {
-        List<Object> tempList = new ArrayList<Object>();
-        tempList.addAll((List<Object>) parent.value);
-        tempList.addAll((List<Object>) value);
+        List<Attribute> tempList = new ArrayList<Attribute>();
+        tempList.addAll((List<Attribute>) parent.value);
+        tempList.addAll((List<Attribute>) value);
         setValue(tempList);
     }
 

Modified: 
tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/BasicAttributeContextTest.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/BasicAttributeContextTest.java?rev=832840&r1=832839&r2=832840&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/BasicAttributeContextTest.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/BasicAttributeContextTest.java
 Wed Nov  4 18:44:25 2009
@@ -193,39 +193,40 @@
      * Tests {...@link BasicAttributeContext#inherit(BasicAttributeContext)}
      * testing inheritance between {...@link ListAttribute} instances.
      */
-    @SuppressWarnings("unchecked")
     @Test
     public void testInheritListAttribute() {
         AttributeContext toCopy = new BasicAttributeContext();
         ListAttribute parentListAttribute = new ListAttribute();
-        parentListAttribute.add("first");
+        Attribute first = new Attribute("first");
+        Attribute second = new Attribute("second");
+        parentListAttribute.add(first);
         toCopy.putAttribute("list", parentListAttribute);
         AttributeContext context = new BasicAttributeContext();
         ListAttribute listAttribute = new ListAttribute();
         listAttribute.setInherit(true);
-        listAttribute.add("second");
+        listAttribute.add(second);
         context.putAttribute("list", listAttribute);
         context.inherit(toCopy);
         ListAttribute result = (ListAttribute) context.getAttribute("list");
         assertNotNull("The attribute must exist", result);
-        List<Object> value = (List<Object>) result.getValue();
+        List<Attribute> value = result.getValue();
         assertNotNull("The list must exist", value);
         assertEquals("The size is not correct", 2, value.size());
-        assertEquals("The first element is not correct", "first", 
value.get(0));
-        assertEquals("The second element is not correct", "second", value
+        assertEquals("The first element is not correct", first, value.get(0));
+        assertEquals("The second element is not correct", second, value
                 .get(1));
 
         context = new BasicAttributeContext();
         listAttribute = new ListAttribute();
-        listAttribute.add("second");
+        listAttribute.add(second);
         context.putAttribute("list", listAttribute);
         context.inherit(toCopy);
         result = (ListAttribute) context.getAttribute("list");
         assertNotNull("The attribute must exist", result);
-        value = (List<Object>) result.getValue();
+        value = result.getValue();
         assertNotNull("The list must exist", value);
         assertEquals("The size is not correct", 1, value.size());
-        assertEquals("The second element is not correct", "second", value
+        assertEquals("The second element is not correct", second, value
                 .get(0));
     }
 
@@ -351,7 +352,6 @@
      * Tests {...@link BasicAttributeContext#inherit(AttributeContext)}
      * testing inheritance between {...@link ListAttribute} instances.
      */
-    @SuppressWarnings("unchecked")
     @Test
     public void testInheritAttributeContextListAttribute() {
         AttributeContext toCopy = createMock(AttributeContext.class);
@@ -359,9 +359,13 @@
         
expect(toCopy.getTemplateAttribute()).andReturn(templateAttribute).times(2);
         expect(toCopy.getPreparer()).andReturn("my.preparer").times(2);
         ListAttribute parentListAttribute = new ListAttribute();
-        parentListAttribute.add("first");
+        Attribute first = new Attribute("first");
+        Attribute second = new Attribute("second");
+        Attribute third = new Attribute("third");
+        Attribute fourth = new Attribute("fourth");
+        parentListAttribute.add(first);
         ListAttribute parentListAttribute2 = new ListAttribute();
-        parentListAttribute2.add("third");
+        parentListAttribute2.add(third);
         Set<String> names = new HashSet<String>();
         names.add("list");
         Set<String> cascadedNames = new HashSet<String>();
@@ -375,41 +379,41 @@
         AttributeContext context = new BasicAttributeContext();
         ListAttribute listAttribute = new ListAttribute();
         listAttribute.setInherit(true);
-        listAttribute.add("second");
+        listAttribute.add(second);
         context.putAttribute("list", listAttribute, false);
         ListAttribute listAttribute2 = new ListAttribute();
         listAttribute2.setInherit(true);
-        listAttribute2.add("fourth");
+        listAttribute2.add(fourth);
         context.putAttribute("list2", listAttribute2, true);
         context.inherit(toCopy);
         ListAttribute result = (ListAttribute) context.getAttribute("list");
         assertNotNull("The attribute must exist", result);
-        List<Object> value = (List<Object>) result.getValue();
+        List<Attribute> value = result.getValue();
         assertNotNull("The list must exist", value);
         assertEquals("The size is not correct", 2, value.size());
-        assertEquals("The first element is not correct", "first", 
value.get(0));
-        assertEquals("The second element is not correct", "second", value
+        assertEquals("The first element is not correct", first, value.get(0));
+        assertEquals("The second element is not correct", second, value
                 .get(1));
         result = (ListAttribute) context.getAttribute("list2");
         assertNotNull("The attribute must exist", result);
-        value = (List<Object>) result.getValue();
+        value = result.getValue();
         assertNotNull("The list must exist", value);
         assertEquals("The size is not correct", 2, value.size());
-        assertEquals("The first element is not correct", "third", 
value.get(0));
-        assertEquals("The second element is not correct", "fourth", value
+        assertEquals("The first element is not correct", third, value.get(0));
+        assertEquals("The second element is not correct", fourth, value
                 .get(1));
 
         context = new BasicAttributeContext();
         listAttribute = new ListAttribute();
-        listAttribute.add("second");
+        listAttribute.add(second);
         context.putAttribute("list", listAttribute);
         context.inherit(toCopy);
         result = (ListAttribute) context.getAttribute("list");
         assertNotNull("The attribute must exist", result);
-        value = (List<Object>) result.getValue();
+        value = result.getValue();
         assertNotNull("The list must exist", value);
         assertEquals("The size is not correct", 1, value.size());
-        assertEquals("The second element is not correct", "second", value
+        assertEquals("The second element is not correct", second, value
                 .get(0));
         verify(toCopy);
     }
@@ -768,8 +772,9 @@
         AttributeContext toCopy = new BasicAttributeContext();
         toCopy.putAttribute("name1", new Attribute("value1"), false);
         toCopy.putAttribute("name2", new Attribute("value2"), true);
-        List<Object> listOfObjects = new ArrayList<Object>();
-        listOfObjects.add(1);
+        List<Attribute> listOfObjects = new ArrayList<Attribute>();
+        Attribute attribute1 = new Attribute(1);
+        listOfObjects.add(attribute1);
         ListAttribute listAttribute = new ListAttribute(listOfObjects);
         listAttribute.setInherit(true);
         toCopy.putAttribute("name3", listAttribute);

Modified: 
tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/ExpressionTest.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/ExpressionTest.java?rev=832840&r1=832839&r2=832840&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/ExpressionTest.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/ExpressionTest.java
 Wed Nov  4 18:44:25 2009
@@ -86,6 +86,7 @@
         expression = 
Expression.createExpressionFromDescribedExpression("there_:hello");
         assertEquals("there_:hello", expression.getExpression());
         assertNull(expression.getLanguage());
+        assertNull(Expression.createExpressionFromDescribedExpression(null));
     }
 
     /**

Modified: 
tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/TestDefinition.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/TestDefinition.java?rev=832840&r1=832839&r2=832840&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/TestDefinition.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/TestDefinition.java
 Wed Nov  4 18:44:25 2009
@@ -21,43 +21,56 @@
 
 package org.apache.tiles;
 
+import static org.junit.Assert.*;
 
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Test;
 
 /**
  * Tests the Definition class.
  *
  * @version $Rev$ $Date$
  */
-public class TestDefinition extends TestCase {
-
-    /**
-     * Creates a new instance of TestDefinition.
-     *
-     * @param name The name of the test.
-     */
-    public TestDefinition(String name) {
-        super(name);
-    }
+public class TestDefinition {
 
     /**
-     * Start the tests.
-     *
-     * @param theArgs the arguments. Not used
+     * Tests {...@link Definition#Definition(Definition)}.
      */
-    public static void main(String[] theArgs) {
-        junit.textui.TestRunner.main(
-            new String[] { TestDefinition.class.getName()});
+    @Test
+    public void testDefinitionCopy() {
+        Definition definition = new Definition();
+        definition.setName("myDefinition");
+        definition.setExtends("myExtends");
+        Attribute attribute1 = new Attribute("value1");
+        definition.putAttribute("name1", attribute1);
+        Attribute attribute2 = new Attribute("value2");
+        definition.putAttribute("name2", attribute2);
+        Definition toCheck = new Definition(definition);
+        assertEquals("myDefinition", toCheck.getName());
+        assertEquals("myExtends", toCheck.getExtends());
+        assertEquals(attribute1, toCheck.getAttribute("name1"));
+        assertEquals(attribute2, toCheck.getAttribute("name2"));
     }
 
     /**
-     * @return a test suite (<code>TestSuite</code>) that includes all methods
-     *         starting with "test"
-     */
-    public static Test suite() {
-        return new TestSuite(TestDefinition.class);
+     * Tests {...@link Definition#Definition(Definition)}.
+     */
+    @Test
+    public void testDefinitionComplete() {
+        Map<String, Attribute> attributeMap = new HashMap<String, Attribute>();
+        Attribute attribute1 = new Attribute("value1");
+        Attribute attribute2 = new Attribute("value2");
+        attributeMap.put("name1", attribute1);
+        attributeMap.put("name2", attribute2);
+        Attribute templateAttribute = 
Attribute.createTemplateAttribute("/my/template.jsp");
+        Definition definition = new Definition("myDefinition",
+                templateAttribute, attributeMap);
+        assertEquals("myDefinition", definition.getName());
+        assertEquals(templateAttribute, definition.getTemplateAttribute());
+        assertEquals(attribute1, definition.getAttribute("name1"));
+        assertEquals(attribute2, definition.getAttribute("name2"));
     }
 
     /**
@@ -65,6 +78,7 @@
      *
      * Attributes are added or replaced in the definition.
      */
+    @Test
     public void testPutAttribute() {
         Definition def = new Definition();
         def.setName("test1");
@@ -83,6 +97,7 @@
     /**
      * Tests the {...@link Definition#inherit(BasicAttributeContext)} method.
      */
+    @Test
     public void testInherit() {
         Definition toCopy = new Definition();
         toCopy.putAttribute("name1", new Attribute("value1"), true);
@@ -161,6 +176,7 @@
     /**
      * Tests {...@link Definition#toString()}.
      */
+    @Test
     public void testToString() {
         Definition definition = new Definition();
         definition.setName("myDefinitionName");
@@ -177,4 +193,60 @@
                         + "attributes={myAttributeName=myAttributeValue}}",
                 definition.toString());
     }
+
+    /**
+     * Tests {...@link Definition#equals(Object)}.
+     */
+    @Test
+    public void testEquals() {
+        Definition definition = new Definition();
+        definition.setName("myDefinition");
+        definition.setExtends("myExtends");
+        Attribute attribute1 = new Attribute("value1");
+        definition.putAttribute("name1", attribute1);
+        Attribute attribute2 = new Attribute("value2");
+        definition.putAttribute("name2", attribute2);
+        Definition toCheck = new Definition(definition);
+        assertTrue(definition.equals(toCheck));
+        toCheck = new Definition(definition);
+        toCheck.setName("anotherDefinition");
+        assertFalse(definition.equals(toCheck));
+        toCheck = new Definition(definition);
+        toCheck.setExtends("anotherExtends");
+        assertFalse(definition.equals(toCheck));
+        toCheck = new Definition(definition);
+        toCheck.putAttribute("name1", new Attribute("anotherAttribute"));
+        assertFalse(definition.equals(toCheck));
+    }
+
+    /**
+     * Tests {...@link Definition#hashCode()}.
+     */
+    @Test
+    public void testHashCode() {
+        Definition definition = new Definition();
+        definition.setName("myDefinition");
+        definition.setExtends("myExtends");
+        Attribute attribute1 = new Attribute("value1");
+        definition.putAttribute("name1", attribute1);
+        Attribute attribute2 = new Attribute("value2");
+        definition.putAttribute("name2", attribute2);
+        BasicAttributeContext attributeContext = new BasicAttributeContext();
+        attributeContext.putAttribute("name1", attribute1);
+        attributeContext.putAttribute("name2", attribute2);
+        assertEquals("myDefinition".hashCode() + "myExtends".hashCode()
+                + attributeContext.hashCode(), definition.hashCode());
+    }
+
+    /**
+     * Tests {...@link Definition#isExtending()}.
+     */
+    @Test
+    public void testIsExtending() {
+        Definition definition = new Definition();
+        definition.setName("myDefinition");
+        assertFalse(definition.isExtending());
+        definition.setExtends("myExtends");
+        assertTrue(definition.isExtending());
+    }
 }


Reply via email to