[prev in list] [next in list] [prev in thread] [next in thread]
List: tapestry-dev
Subject: svn commit: r480728 [2/2] - in /tapestry/tapestry5/tapestry-core/trunk/src:
From: hlship () apache ! org
Date: 2006-11-29 22:02:47
Message-ID: 20061129220250.F2D0E1A984D () eris ! apache ! org
[Download RAW message or body]
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/model/MutableComponentModelImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java \
/org/apache/tapestry/internal/model/MutableComponentModelImplTest.java?view=diff&rev=480728&r1=480727&r2=480728
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/model/MutableComponentModelImplTest.java \
(original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/model/MutableComponentModelImplTest.java \
Wed Nov 29 14:02:40 2006 @@ -12,545 +12,561 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.model;
-
-import java.util.Arrays;
-
-import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
+package org.apache.tapestry.internal.model;
+
+import java.util.Arrays;
+
+import org.apache.commons.logging.Log;
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
import org.apache.tapestry.ioc.Resource;
-import org.apache.tapestry.model.ComponentModel;
-import org.apache.tapestry.model.MutableComponentModel;
-import org.apache.tapestry.model.MutableEmbeddedComponentModel;
-import org.apache.tapestry.model.ParameterModel;
-import org.testng.annotations.Test;
-
-/**
- * Tests {@link org.apache.tapestry.internal.model.MutableComponentModelImpl} and
- * {@link org.apache.tapestry.internal.model.MutableEmbeddedComponentModelImpl}.
- */
-public class MutableComponentModelImplTest extends InternalBaseTestCase
-{
- private static final String COMPONENT_CLASS_NAME = \
"org.example.components.Fred";
-
- private static final String CLASS_NAME = "org.example.components.Foo";
-
- @Test
- public void root_class_vs_sub_class()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- assertTrue(model.isRootClass());
-
- MutableComponentModel subModel = new MutableComponentModelImpl(CLASS_NAME, \
log, r, model);
-
- assertFalse(subModel.isRootClass());
-
- verify();
- }
-
- @Test
- public void add_new_parameter()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- assertTrue(model.getParameterNames().isEmpty());
-
- String parameterName = "value";
-
- model.addParameter(parameterName, true);
-
- ParameterModel pm = model.getParameterModel(parameterName);
-
- assertEquals(pm.getName(), parameterName);
- assertEquals(true, pm.isRequired());
-
- verify();
- }
-
- @Test
- public void add_duplicate_parameter()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- model.addParameter("fred", true);
-
- try
- {
- model.addParameter("fred", true);
- unreachable();
- }
- catch (IllegalArgumentException ex)
- {
- assertEquals(
- ex.getMessage(),
- "Parameter 'fred' of component org.example.components.Foo is \
already defined.");
- }
-
- verify();
- }
-
- @Test
- public void get_parameter_by_name_with_no_parameters_defined()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- assertNull(model.getParameterModel("foo"));
-
- verify();
- }
-
- @Test
- public void get_unknown_parameter()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
- model.addParameter("fred", true);
-
- assertNull(model.getParameterModel("barney"));
-
- verify();
- }
-
- @Test
- public void add_embedded()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- assertTrue(model.getEmbeddedComponentIds().isEmpty());
-
- MutableEmbeddedComponentModel fred = model.addEmbeddedComponent(
- "fred",
- "Fred",
- COMPONENT_CLASS_NAME);
-
- assertEquals(fred.getId(), "fred");
- assertEquals(fred.getComponentType(), "Fred");
-
- MutableEmbeddedComponentModel barney = model.addEmbeddedComponent(
- "barney",
- "Barney",
- COMPONENT_CLASS_NAME);
-
- assertEquals(model.getEmbeddedComponentIds(), Arrays.asList("barney", \
"fred"));
-
- assertSame(model.getEmbeddedComponentModel("fred"), fred);
- assertSame(model.getEmbeddedComponentModel("barney"), barney);
-
- assertEquals(
- fred.toString(),
- "EmbeddedComponentModel[id=fred type=Fred \
class=org.example.components.Fred]");
-
- verify();
- }
-
- @Test
- public void add_embedded_component_with_duplicate_id()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- model.addEmbeddedComponent("fred", "Fred1", COMPONENT_CLASS_NAME);
-
- try
- {
- model.addEmbeddedComponent("fred", "Fred2", COMPONENT_CLASS_NAME);
- unreachable();
- }
- catch (IllegalArgumentException ex)
- {
- assertEquals(
- ex.getMessage(),
- "Embedded component 'fred' has already been defined for \
component class org.example.components.Foo.");
- }
-
- verify();
-
- }
-
- @Test
- public void add_parameters_to_embedded()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- MutableEmbeddedComponentModel fred = model.addEmbeddedComponent(
- "fred",
- "Fred",
- COMPONENT_CLASS_NAME);
-
- assertTrue(fred.getParameterNames().isEmpty());
-
- fred.addParameter("city", "bedrock");
- fred.addParameter("job", "crane operator");
-
- assertEquals(fred.getParameterNames(), Arrays.asList("city", "job"));
-
- assertEquals(fred.getParameterValue("city"), "bedrock");
-
- verify();
- }
-
- @Test
- public void add_duplicate_parameters_to_embedded()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- MutableEmbeddedComponentModel fred = model.addEmbeddedComponent(
- "fred",
- "Fred",
- COMPONENT_CLASS_NAME);
-
- fred.addParameter("city", "bedrock");
-
- try
- {
- fred.addParameter("city", "slateville");
- unreachable();
- }
- catch (IllegalArgumentException ex)
- {
- assertEquals(
- ex.getMessage(),
- "A value for parameter 'city' of embedded component fred (of \
component class org.example.components.Foo) has already been \
provided.");
- }
-
- verify();
- }
-
- @Test
- public void mixin_names_is_initially_empty_list()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- MutableEmbeddedComponentModel fred = model.addEmbeddedComponent(
- "fred",
- "Fred",
- COMPONENT_CLASS_NAME);
-
- assertTrue(fred.getMixinClassNames().isEmpty());
-
- verify();
- }
-
- @Test
- public void mixin_class_names_remembered_in_order_added()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- MutableEmbeddedComponentModel fred = model.addEmbeddedComponent(
- "fred",
- "Fred",
- COMPONENT_CLASS_NAME);
-
- fred.addMixin("zip.zop.Zoom");
- fred.addMixin("foo.bar.Baz");
-
- assertEquals(fred.getMixinClassNames(), Arrays.asList("zip.zop.Zoom", \
"foo.bar.Baz"));
-
- verify();
- }
-
- @Test
- public void mixin_name_conflict()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- MutableEmbeddedComponentModel fred = model.addEmbeddedComponent(
- "fred",
- "Fred",
- COMPONENT_CLASS_NAME);
-
- fred.addMixin("zip.zop.Zoom");
-
- try
- {
- fred.addMixin("zip.zop.Zoom");
- unreachable();
- }
- catch (IllegalArgumentException ex)
- {
- assertEquals(
- ex.getMessage(),
- "Mixin zip.zop.Zoom (for component fred) has already been \
defined.");
- }
-
- // Make sure it wasn't actually added.
-
- assertEquals(fred.getMixinClassNames(), Arrays.asList("zip.zop.Zoom"));
-
- verify();
- }
-
- @Test
- public void get_persistent_field_names_when_none_defined()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- assertTrue(model.getPersistentFieldNames().isEmpty());
-
- verify();
- }
-
- @Test
- public void get_persistent_field_names_are_sorted()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- assertEquals(model.setFieldPersistenceStrategy("fred", "session"), "fred");
- assertEquals(model.setFieldPersistenceStrategy("barney", "client"), \
"barney");
-
- assertEquals(model.getPersistentFieldNames(), Arrays.asList("barney", \
"fred"));
-
- verify();
- }
-
- @Test
- public void persistent_field_names_have_punctuation_stripped()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- assertEquals(model.setFieldPersistenceStrategy("_fred", "session"), "fred");
- assertEquals(model.setFieldPersistenceStrategy("_$barney", "client"), \
"barney");
-
- assertEquals(model.getPersistentFieldNames(), Arrays.asList("barney", \
"fred"));
-
- verify();
- }
-
- @Test
- public void get_persistent_field_names_reflects_parent_model()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, \
log, r, null);
-
- assertEquals(parent.setFieldPersistenceStrategy("wilma", "session"), \
"wilma");
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, parent);
-
- assertEquals(model.setFieldPersistenceStrategy("fred", "session"), "fred");
- assertEquals(model.setFieldPersistenceStrategy("barney", "client"), \
"barney");
-
- assertEquals(model.getPersistentFieldNames(), Arrays.asList("barney", \
"fred", "wilma"));
-
- verify();
- }
-
- @Test
- public void persistent_field_names_allocated_in_subclasses_are_unique()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, \
log, r, null);
- assertEquals(parent.setFieldPersistenceStrategy("wilma", "session"), \
"wilma");
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, parent);
-
- assertEquals(model.setFieldPersistenceStrategy("wilma", "session"), \
"wilma_0");
-
- assertEquals(model.getPersistentFieldNames(), Arrays.asList("wilma", \
"wilma_0"));
-
- verify();
- }
-
- @Test
- public void get_persistent_field_defined_in_model()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- model.setFieldPersistenceStrategy("fred", "session");
- model.setFieldPersistenceStrategy("barney", "client");
-
- assertEquals(model.getFieldPersistenceStrategy("fred"), "session");
- assertEquals(model.getFieldPersistenceStrategy("barney"), "client");
-
- verify();
- }
-
- @Test
- public void no_persistence_defined_for_field()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- try
- {
- model.getFieldPersistenceStrategy("someField");
- unreachable();
- }
- catch (IllegalArgumentException ex)
- {
- assertEquals(
- ex.getMessage(),
- "No field persistence strategy has been defined for field \
\'someField\'.");
- }
-
- verify();
-
- }
-
- @Test
- public void get_persistent_field_defined_in_parent()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, \
log, r, null);
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, parent);
-
- parent.setFieldPersistenceStrategy("wilma", "parent");
-
- model.setFieldPersistenceStrategy("fred", "session");
-
- assertEquals(model.getFieldPersistenceStrategy("wilma"), "parent");
-
- verify();
- }
-
- @Test
- public void default_for_supports_informal_parameters_is_false()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null);
-
- assertFalse(model.getSupportsInformalParameters());
-
- model.enableSupportsInformalParameters();
-
- assertTrue(model.getSupportsInformalParameters());
-
- verify();
- }
-
- @Test
- public void get_mixin_class_names_with_no_mixins()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
- ComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, r, \
null);
-
- assertTrue(model.getMixinClassNames().isEmpty());
-
- verify();
- }
-
- @Test
- public void get_mixin_class_names_mixes_with_parent_model()
- {
- Resource r = newResource();
- Log log = newLog();
-
- replay();
-
- MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, \
log, r, null);
-
- parent.addMixinClassName("Wilma");
-
- MutableComponentModel child = new MutableComponentModelImpl(CLASS_NAME, log, \
r, parent);
-
- child.addMixinClassName("Fred");
- child.addMixinClassName("Barney");
-
- assertEquals(child.getMixinClassNames(), Arrays.asList("Barney", "Fred", \
"Wilma"));
-
- verify();
-
- }
-
-}
+import org.apache.tapestry.model.ComponentModel;
+import org.apache.tapestry.model.MutableComponentModel;
+import org.apache.tapestry.model.MutableEmbeddedComponentModel;
+import org.apache.tapestry.model.ParameterModel;
+import org.testng.annotations.Test;
+
+/**
+ * Tests {@link org.apache.tapestry.internal.model.MutableComponentModelImpl} and
+ * {@link org.apache.tapestry.internal.model.MutableEmbeddedComponentModelImpl}.
+ */
+public class MutableComponentModelImplTest extends InternalBaseTestCase
+{
+ private static final String COMPONENT_CLASS_NAME = \
"org.example.components.Fred"; +
+ private static final String CLASS_NAME = "org.example.components.Foo";
+
+ @Test
+ public void root_class_vs_sub_class()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ assertTrue(model.isRootClass());
+
+ MutableComponentModel subModel = new MutableComponentModelImpl(CLASS_NAME, \
log, r, model); +
+ assertFalse(subModel.isRootClass());
+
+ verify();
+ }
+
+ @Test
+ public void add_new_parameter()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ assertTrue(model.getParameterNames().isEmpty());
+
+ String parameterName = "value";
+
+ model.addParameter(parameterName, true);
+
+ ParameterModel pm = model.getParameterModel(parameterName);
+
+ assertEquals(pm.getName(), parameterName);
+ assertEquals(true, pm.isRequired());
+
+ verify();
+ }
+
+ @Test
+ public void add_duplicate_parameter()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ model.addParameter("fred", true);
+
+ try
+ {
+ model.addParameter("fred", true);
+ unreachable();
+ }
+ catch (IllegalArgumentException ex)
+ {
+ assertEquals(
+ ex.getMessage(),
+ "Parameter 'fred' of component org.example.components.Foo is \
already defined."); + }
+
+ verify();
+ }
+
+ @Test
+ public void get_parameter_by_name_with_no_parameters_defined()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ assertNull(model.getParameterModel("foo"));
+
+ verify();
+ }
+
+ @Test
+ public void get_unknown_parameter()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); + model.addParameter("fred", true);
+
+ assertNull(model.getParameterModel("barney"));
+
+ verify();
+ }
+
+ @Test
+ public void add_embedded()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ assertTrue(model.getEmbeddedComponentIds().isEmpty());
+
+ MutableEmbeddedComponentModel fred = model.addEmbeddedComponent(
+ "fred",
+ "Fred",
+ COMPONENT_CLASS_NAME);
+
+ assertEquals(fred.getId(), "fred");
+ assertEquals(fred.getComponentType(), "Fred");
+
+ MutableEmbeddedComponentModel barney = model.addEmbeddedComponent(
+ "barney",
+ "Barney",
+ COMPONENT_CLASS_NAME);
+
+ assertEquals(model.getEmbeddedComponentIds(), Arrays.asList("barney", \
"fred")); +
+ assertSame(model.getEmbeddedComponentModel("fred"), fred);
+ assertSame(model.getEmbeddedComponentModel("barney"), barney);
+
+ assertEquals(
+ fred.toString(),
+ "EmbeddedComponentModel[id=fred type=Fred \
class=org.example.components.Fred]"); +
+ verify();
+ }
+
+ @Test
+ public void add_embedded_component_with_duplicate_id()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ model.addEmbeddedComponent("fred", "Fred1", COMPONENT_CLASS_NAME);
+
+ try
+ {
+ model.addEmbeddedComponent("fred", "Fred2", COMPONENT_CLASS_NAME);
+ unreachable();
+ }
+ catch (IllegalArgumentException ex)
+ {
+ assertEquals(
+ ex.getMessage(),
+ "Embedded component 'fred' has already been defined for \
component class org.example.components.Foo."); + }
+
+ verify();
+
+ }
+
+ @Test
+ public void add_parameters_to_embedded()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ MutableEmbeddedComponentModel fred = model.addEmbeddedComponent(
+ "fred",
+ "Fred",
+ COMPONENT_CLASS_NAME);
+
+ assertTrue(fred.getParameterNames().isEmpty());
+
+ fred.addParameter("city", "bedrock");
+ fred.addParameter("job", "crane operator");
+
+ assertEquals(fred.getParameterNames(), Arrays.asList("city", "job"));
+
+ assertEquals(fred.getParameterValue("city"), "bedrock");
+
+ verify();
+ }
+
+ @Test
+ public void add_duplicate_parameters_to_embedded()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ MutableEmbeddedComponentModel fred = model.addEmbeddedComponent(
+ "fred",
+ "Fred",
+ COMPONENT_CLASS_NAME);
+
+ fred.addParameter("city", "bedrock");
+
+ try
+ {
+ fred.addParameter("city", "slateville");
+ unreachable();
+ }
+ catch (IllegalArgumentException ex)
+ {
+ assertEquals(
+ ex.getMessage(),
+ "A value for parameter 'city' of embedded component fred (of \
component class org.example.components.Foo) has already been provided."); + }
+
+ verify();
+ }
+
+ @Test
+ public void mixin_names_is_initially_empty_list()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ MutableEmbeddedComponentModel fred = model.addEmbeddedComponent(
+ "fred",
+ "Fred",
+ COMPONENT_CLASS_NAME);
+
+ assertTrue(fred.getMixinClassNames().isEmpty());
+
+ verify();
+ }
+
+ @Test
+ public void mixin_class_names_remembered_in_order_added()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ MutableEmbeddedComponentModel fred = model.addEmbeddedComponent(
+ "fred",
+ "Fred",
+ COMPONENT_CLASS_NAME);
+
+ fred.addMixin("zip.zop.Zoom");
+ fred.addMixin("foo.bar.Baz");
+
+ assertEquals(fred.getMixinClassNames(), Arrays.asList("zip.zop.Zoom", \
"foo.bar.Baz")); +
+ verify();
+ }
+
+ @Test
+ public void mixin_name_conflict()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ MutableEmbeddedComponentModel fred = model.addEmbeddedComponent(
+ "fred",
+ "Fred",
+ COMPONENT_CLASS_NAME);
+
+ fred.addMixin("zip.zop.Zoom");
+
+ try
+ {
+ fred.addMixin("zip.zop.Zoom");
+ unreachable();
+ }
+ catch (IllegalArgumentException ex)
+ {
+ assertEquals(
+ ex.getMessage(),
+ "Mixin zip.zop.Zoom (for component fred) has already been \
defined."); + }
+
+ // Make sure it wasn't actually added.
+
+ assertEquals(fred.getMixinClassNames(), Arrays.asList("zip.zop.Zoom"));
+
+ verify();
+ }
+
+ @Test
+ public void get_persistent_field_names_when_none_defined()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ assertTrue(model.getPersistentFieldNames().isEmpty());
+
+ verify();
+ }
+
+ @Test
+ public void get_persistent_field_names_are_sorted()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ assertEquals(model.setFieldPersistenceStrategy("fred", "session"), "fred");
+ assertEquals(model.setFieldPersistenceStrategy("barney", "client"), \
"barney"); +
+ assertEquals(model.getPersistentFieldNames(), Arrays.asList("barney", \
"fred")); +
+ verify();
+ }
+
+ @Test
+ public void persistent_field_names_have_punctuation_stripped()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ assertEquals(model.setFieldPersistenceStrategy("_fred", "session"), "fred");
+ assertEquals(model.setFieldPersistenceStrategy("_$barney", "client"), \
"barney"); +
+ assertEquals(model.getPersistentFieldNames(), Arrays.asList("barney", \
"fred")); +
+ verify();
+ }
+
+ @Test
+ public void get_persistent_field_names_reflects_parent_model()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, \
log, r, null); +
+ assertEquals(parent.setFieldPersistenceStrategy("wilma", "session"), \
"wilma"); +
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, parent); +
+ assertEquals(model.setFieldPersistenceStrategy("fred", "session"), "fred");
+ assertEquals(model.setFieldPersistenceStrategy("barney", "client"), \
"barney"); +
+ assertEquals(model.getPersistentFieldNames(), Arrays.asList("barney", \
"fred", "wilma")); +
+ verify();
+ }
+
+ @Test
+ public void persistent_field_names_allocated_in_subclasses_are_unique()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, \
log, r, null); + assertEquals(parent.setFieldPersistenceStrategy("wilma", \
"session"), "wilma"); +
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, parent); +
+ assertEquals(model.setFieldPersistenceStrategy("wilma", "session"), \
"wilma_0"); +
+ assertEquals(model.getPersistentFieldNames(), Arrays.asList("wilma", \
"wilma_0")); +
+ verify();
+ }
+
+ @Test
+ public void get_persistent_field_defined_in_model()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ model.setFieldPersistenceStrategy("fred", "session");
+ model.setFieldPersistenceStrategy("barney", "client");
+
+ assertEquals(model.getFieldPersistenceStrategy("fred"), "session");
+ assertEquals(model.getFieldPersistenceStrategy("barney"), "client");
+
+ verify();
+ }
+
+ @Test
+ public void no_persistence_defined_for_field()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ try
+ {
+ model.getFieldPersistenceStrategy("someField");
+ unreachable();
+ }
+ catch (IllegalArgumentException ex)
+ {
+ assertEquals(
+ ex.getMessage(),
+ "No field persistence strategy has been defined for field \
\'someField\'."); + }
+
+ verify();
+
+ }
+
+ @Test
+ public void get_persistent_field_defined_in_parent()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, \
log, r, null); + MutableComponentModel model = new \
MutableComponentModelImpl(CLASS_NAME, log, r, parent); +
+ parent.setFieldPersistenceStrategy("wilma", "parent");
+
+ model.setFieldPersistenceStrategy("fred", "session");
+
+ assertEquals(model.getFieldPersistenceStrategy("wilma"), "parent");
+
+ verify();
+ }
+
+ @Test
+ public void default_for_supports_informal_parameters_is_false()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, \
r, null); +
+ assertFalse(model.getSupportsInformalParameters());
+
+ model.enableSupportsInformalParameters();
+
+ assertTrue(model.getSupportsInformalParameters());
+
+ verify();
+ }
+
+ @Test
+ public void get_mixin_class_names_with_no_mixins()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+ ComponentModel model = new MutableComponentModelImpl(CLASS_NAME, log, r, \
null); +
+ assertTrue(model.getMixinClassNames().isEmpty());
+
+ verify();
+ }
+
+ @Test
+ public void get_mixin_class_names_mixes_with_parent_model()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, \
log, r, null); +
+ parent.addMixinClassName("Wilma");
+
+ MutableComponentModel child = new MutableComponentModelImpl(CLASS_NAME, log, \
r, parent); +
+ child.addMixinClassName("Fred");
+ child.addMixinClassName("Barney");
+
+ assertEquals(child.getMixinClassNames(), Arrays.asList("Barney", "Fred", \
"Wilma")); +
+ verify();
+ }
+
+ @Test
+ public void get_parent_from_subclass()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, \
log, r, null); + MutableComponentModel child = new \
MutableComponentModelImpl(CLASS_NAME, log, r, parent); +
+ assertSame(child.getParentModel(), parent);
+ assertNull(parent.getParentModel());
+
+ verify();
+ }
+
+}
Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentMessagesSourceImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java \
/org/apache/tapestry/internal/services/ComponentMessagesSourceImplTest.java?view=auto&rev=480728
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentMessagesSourceImplTest.java \
(added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentMessagesSourceImplTest.java \
Wed Nov 29 14:02:40 2006 @@ -0,0 +1,147 @@
+// Copyright 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.internal.services;
+
+import java.util.Locale;
+
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.internal.util.URLChangeTracker;
+import org.apache.tapestry.ioc.Messages;
+import org.apache.tapestry.ioc.internal.util.ClasspathResource;
+import org.apache.tapestry.model.ComponentModel;
+import org.testng.annotations.Test;
+
+@Test(sequential = true)
+public class ComponentMessagesSourceImplTest extends InternalBaseTestCase
+{
+ // With control of the tracker, we can force changes as if underlying files were \
changed. +
+ private static final String SIMPLE_COMPONENT_CLASS_NAME = \
"org.apache.tapestry.internal.services.SimpleComponent"; +
+ private final URLChangeTracker _tracker = new URLChangeTracker();
+
+ private final ComponentMessagesSourceImpl _source = new \
ComponentMessagesSourceImpl(_tracker); +
+ @Test
+ public void simple_component()
+ {
+ ComponentModel model = newComponentModel();
+
+ train_getComponentClassName(model, SIMPLE_COMPONENT_CLASS_NAME);
+
+ train_getBaseResource(model, _simpleComponentResource);
+
+ train_getParentModel(model, null);
+
+ replay();
+
+ forceCacheClear();
+
+ Messages messages = _source.getMessages(model, Locale.ENGLISH);
+
+ assertEquals(messages.get("color"), "color");
+ assertEquals(messages.get("framework"), "Tapestry");
+
+ // Check normal caching
+
+ assertSame(_source.getMessages(model, Locale.ENGLISH), messages);
+
+ // Now, force a cache clear and retry.
+
+ forceCacheClear();
+
+ Messages messages2 = _source.getMessages(model, Locale.ENGLISH);
+
+ // Check that a new Messages was created
+
+ assertNotSame(messages2, messages);
+
+ assertEquals(messages2.get("color"), "color");
+ assertEquals(messages2.get("framework"), "Tapestry");
+
+ verify();
+ }
+
+ private void forceCacheClear()
+ {
+ _tracker.forceChange();
+ _source.checkForUpdates();
+ }
+
+ @Test
+ public void per_language_messages_override()
+ {
+ ComponentModel model = newComponentModel();
+
+ train_getComponentClassName(model, SIMPLE_COMPONENT_CLASS_NAME);
+
+ train_getBaseResource(model, _simpleComponentResource);
+
+ train_getParentModel(model, null);
+
+ replay();
+
+ forceCacheClear();
+
+ Messages messages = _source.getMessages(model, Locale.UK);
+
+ assertEquals(messages.get("color"), "colour");
+ assertEquals(messages.get("framework"), "Tapestry");
+
+ verify();
+ }
+
+ @Test
+ public void subclass_inherits_base_class_messages()
+ {
+ ComponentModel model = newComponentModel();
+ ComponentModel parent = newComponentModel();
+
+ train_getComponentClassName(
+ model,
+ "org.apache.tapestry.internal.services.SubclassComponent");
+
+ train_getBaseResource(model, new ClasspathResource(
+ "org/apache/tapestry/internal/services/SubclassComponent.class"));
+
+ train_getParentModel(model, parent);
+
+ train_getComponentClassName(parent, SIMPLE_COMPONENT_CLASS_NAME);
+
+ train_getBaseResource(parent, _simpleComponentResource);
+
+ train_getParentModel(parent, null);
+
+ replay();
+
+ forceCacheClear();
+
+ Messages messages = _source.getMessages(model, Locale.ENGLISH);
+
+ assertEquals(messages.get("color"), "color");
+ assertEquals(messages.get("framework"), "Tapestry");
+ assertEquals(messages.get("source"), "SubclassComponent");
+ assertEquals(messages.get("metal"), "steel");
+
+ messages = _source.getMessages(model, Locale.UK);
+
+ assertEquals(messages.get("color"), "colour");
+ assertEquals(messages.get("framework"), "Tapestry");
+ assertEquals(messages.get("source"), "SubclassComponent");
+ assertEquals(messages.get("metal"), "aluminium");
+
+ verify();
+ }
+}
Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/MultiKeyTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/MultiKeyTest.java?view=auto&rev=480728
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/MultiKeyTest.java \
(added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/MultiKeyTest.java \
Wed Nov 29 14:02:40 2006 @@ -0,0 +1,75 @@
+// Copyright 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.internal.util;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class MultiKeyTest extends Assert
+{
+ @Test
+ public void same_values_same_hash_codes()
+ {
+ MultiKey key1 = new MultiKey(1, 3, "foo");
+ MultiKey key2 = new MultiKey(1, 3, "foo");
+ MultiKey key3 = new MultiKey(1, 3);
+ MultiKey key4 = new MultiKey(1, 3, "bar");
+ MultiKey key5 = new MultiKey(1, 3, "foo", "bar");
+
+ assertEquals(key2.hashCode(), key1.hashCode());
+ assertFalse(key3.hashCode() == key1.hashCode());
+ assertFalse(key4.hashCode() == key1.hashCode());
+ assertFalse(key5.hashCode() == key1.hashCode());
+ }
+
+ @Test
+ public void comparisons_against_not_multi_key()
+ {
+ MultiKey key = new MultiKey(1, 3, "foo");
+
+ assertFalse(key.equals(null));
+ assertFalse(key.equals("foo"));
+ }
+
+ @Test
+ public void comparison_against_self()
+ {
+ MultiKey key = new MultiKey(1, 3, "foo");
+
+ assertTrue(key.equals(key));
+ }
+
+ @Test
+ public void comparisons_against_other_keys()
+ {
+ MultiKey key1 = new MultiKey(1, 3, "foo");
+ MultiKey key2 = new MultiKey(1, 3, "foo");
+ MultiKey key3 = new MultiKey(1, 3);
+ MultiKey key4 = new MultiKey(1, 3, "bar");
+ MultiKey key5 = new MultiKey(1, 3, "foo", "bar");
+
+ assertEquals(key2, key1);
+ assertFalse(key3.equals(key1));
+ assertFalse(key4.equals(key1));
+ assertFalse(key5.equals(key1));
+ }
+
+ @Test
+ public void to_string()
+ {
+ assertEquals(new MultiKey("fred").toString(), "MultiKey[fred]");
+ assertEquals(new MultiKey("fred", "barney").toString(), "MultiKey[fred, \
barney]"); + }
+}
Added: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/internal/services/SimpleComponent.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/reso \
urces/org/apache/tapestry/internal/services/SimpleComponent.properties?view=auto&rev=480728
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/internal/services/SimpleComponent.properties \
(added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/internal/services/SimpleComponent.properties \
Wed Nov 29 14:02:40 2006 @@ -0,0 +1,4 @@
+# Default, American English spelling
+color=color
+framework=Tapestry
+source=SimpleComponent
Added: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/internal/services/SimpleComponent_en_GB.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/reso \
urces/org/apache/tapestry/internal/services/SimpleComponent_en_GB.properties?view=auto&rev=480728
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/internal/services/SimpleComponent_en_GB.properties \
(added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/internal/services/SimpleComponent_en_GB.properties \
Wed Nov 29 14:02:40 2006 @@ -0,0 +1,3 @@
+# British spelling
+
+color=colour
Added: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/internal/services/SubclassComponent.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/reso \
urces/org/apache/tapestry/internal/services/SubclassComponent.properties?view=auto&rev=480728
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/internal/services/SubclassComponent.properties \
(added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/internal/services/SubclassComponent.properties \
Wed Nov 29 14:02:40 2006 @@ -0,0 +1,2 @@
+metal=steel
+source=SubclassComponent
\ No newline at end of file
Added: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/internal/services/SubclassComponent_en_GB.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/reso \
urces/org/apache/tapestry/internal/services/SubclassComponent_en_GB.properties?view=auto&rev=480728
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/internal/services/SubclassComponent_en_GB.properties \
(added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/internal/services/SubclassComponent_en_GB.properties \
Wed Nov 29 14:02:40 2006 @@ -0,0 +1 @@
+metal=aluminium
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic