You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2006/11/23 02:49:48 UTC

svn commit: r478428 [3/3] - in /tapestry/tapestry5/tapestry-core/trunk/src: main/java/org/apache/tapestry/internal/test/ main/java/org/apache/tapestry/test/ test/java/org/apache/tapestry/internal/bindings/ test/java/org/apache/tapestry/internal/service...

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/UnclaimedFieldWorkerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/UnclaimedFieldWorkerTest.java?view=diff&rev=478428&r1=478427&r2=478428
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/UnclaimedFieldWorkerTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/UnclaimedFieldWorkerTest.java Wed Nov 22 17:49:47 2006
@@ -12,59 +12,58 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.internal.services;
-
-import static org.apache.tapestry.services.TransformConstants.CONTAINING_PAGE_DID_DETACH_SIGNATURE;
-import static org.apache.tapestry.services.TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE;
-
-import java.lang.reflect.Modifier;
-
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.apache.tapestry.model.MutableComponentModel;
-import org.apache.tapestry.services.ClassTransformation;
-import org.testng.annotations.Test;
-
-/**
- * 
- */
-public class UnclaimedFieldWorkerTest extends InternalBaseTestCase
-{
-    @Test
-    public void no_fields()
-    {
-        ClassTransformation ct = newClassTransformation();
-        MutableComponentModel model = newMutableComponentModel();
-
-        train_findUnclaimedFields(ct);
-
-        replay();
-
-        new UnclaimedFieldWorker().transform(ct, model);
-
-        verify();
-    }
-
-    @Test
-    public void normal()
-    {
-        ClassTransformation ct = newClassTransformation();
-        MutableComponentModel model = newMutableComponentModel();
-
-        train_findUnclaimedFields(ct, "_fred");
-
-        ct.getFieldType("_fred");
-        setReturnValue("foo.Bar");
-
-        ct.addField(Modifier.PRIVATE, "foo.Bar", "_fred_default");
-        setReturnValue("_$fred_default");
-
-        ct.extendMethod(CONTAINING_PAGE_DID_LOAD_SIGNATURE, "_$fred_default = _fred;");
-        ct.extendMethod(CONTAINING_PAGE_DID_DETACH_SIGNATURE, "_fred = _$fred_default;");
-
-        replay();
-
-        new UnclaimedFieldWorker().transform(ct, model);
-
-        verify();
-    }
-}
+package org.apache.tapestry.internal.services;
+
+import static org.apache.tapestry.services.TransformConstants.CONTAINING_PAGE_DID_DETACH_SIGNATURE;
+import static org.apache.tapestry.services.TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE;
+
+import java.lang.reflect.Modifier;
+
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.model.MutableComponentModel;
+import org.apache.tapestry.services.ClassTransformation;
+import org.testng.annotations.Test;
+
+/**
+ * 
+ */
+public class UnclaimedFieldWorkerTest extends InternalBaseTestCase
+{
+    @Test
+    public void no_fields()
+    {
+        ClassTransformation ct = newClassTransformation();
+        MutableComponentModel model = newMutableComponentModel();
+
+        train_findUnclaimedFields(ct);
+
+        replay();
+
+        new UnclaimedFieldWorker().transform(ct, model);
+
+        verify();
+    }
+
+    @Test
+    public void normal()
+    {
+        ClassTransformation ct = newClassTransformation();
+        MutableComponentModel model = newMutableComponentModel();
+
+        train_findUnclaimedFields(ct, "_fred");
+
+        expect(ct.getFieldType("_fred")).andReturn("foo.Bar");
+
+        expect(ct.addField(Modifier.PRIVATE, "foo.Bar", "_fred_default")).andReturn(
+                "_$fred_default");
+
+        ct.extendMethod(CONTAINING_PAGE_DID_LOAD_SIGNATURE, "_$fred_default = _fred;");
+        ct.extendMethod(CONTAINING_PAGE_DID_DETACH_SIGNATURE, "_fred = _$fred_default;");
+
+        replay();
+
+        new UnclaimedFieldWorker().transform(ct, model);
+
+        verify();
+    }
+}

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/WebSessionImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/WebSessionImplTest.java?view=diff&rev=478428&r1=478427&r2=478428
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/WebSessionImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/WebSessionImplTest.java Wed Nov 22 17:49:47 2006
@@ -12,53 +12,51 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.internal.services;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Enumeration;
-
-import javax.servlet.http.HttpSession;
-
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.apache.tapestry.services.WebSession;
-import org.testng.annotations.Test;
-
-public class WebSessionImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void get_attribute_names()
-    {
-        Enumeration e = Collections.enumeration(Arrays.asList("fred", "barney"));
-        HttpSession hs = newHttpSession();
-
-        hs.getAttributeNames();
-        setReturnValue(e);
-
-        replay();
-
-        WebSession session = new WebSessionImpl(hs);
-
-        assertEquals(session.getAttributeNames(), Arrays.asList("barney", "fred"));
-
-        verify();
-    }
-
-    @Test
-    public void get_attribute_names_by_prefix()
-    {
-        Enumeration e = Collections.enumeration(Arrays.asList("fred", "barney", "fanny"));
-        HttpSession hs = newHttpSession();
-
-        hs.getAttributeNames();
-        setReturnValue(e);
-
-        replay();
-
-        WebSession session = new WebSessionImpl(hs);
-
-        assertEquals(session.getAttributeNames("f"), Arrays.asList("fanny", "fred"));
-
-        verify();
-    }
-}
+package org.apache.tapestry.internal.services;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Enumeration;
+
+import javax.servlet.http.HttpSession;
+
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.services.WebSession;
+import org.testng.annotations.Test;
+
+public class WebSessionImplTest extends InternalBaseTestCase
+{
+    @Test
+    public void get_attribute_names()
+    {
+        Enumeration e = Collections.enumeration(Arrays.asList("fred", "barney"));
+        HttpSession hs = newHttpSession();
+
+        expect(hs.getAttributeNames()).andReturn(e);
+
+        replay();
+
+        WebSession session = new WebSessionImpl(hs);
+
+        assertEquals(session.getAttributeNames(), Arrays.asList("barney", "fred"));
+
+        verify();
+    }
+
+    @Test
+    public void get_attribute_names_by_prefix()
+    {
+        Enumeration e = Collections.enumeration(Arrays.asList("fred", "barney", "fanny"));
+        HttpSession hs = newHttpSession();
+
+        expect(hs.getAttributeNames()).andReturn(e);
+
+        replay();
+
+        WebSession session = new WebSessionImpl(hs);
+
+        assertEquals(session.getAttributeNames("f"), Arrays.asList("fanny", "fred"));
+
+        verify();
+    }
+}

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/structure/ComponentPageElementImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/structure/ComponentPageElementImplTest.java?view=diff&rev=478428&r1=478427&r2=478428
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/structure/ComponentPageElementImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/structure/ComponentPageElementImplTest.java Wed Nov 22 17:49:47 2006
@@ -12,455 +12,448 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.internal.structure;
-
-import org.apache.commons.logging.Log;
-import org.apache.tapestry.Binding;
-import org.apache.tapestry.ComponentResources;
-import org.apache.tapestry.internal.InternalComponentResources;
-import org.apache.tapestry.internal.services.Instantiator;
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
+package org.apache.tapestry.internal.structure;
+
+import org.apache.commons.logging.Log;
+import org.apache.tapestry.Binding;
+import org.apache.tapestry.ComponentResources;
+import org.apache.tapestry.internal.InternalComponentResources;
+import org.apache.tapestry.internal.services.Instantiator;
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
 import org.apache.tapestry.ioc.Location;
 import org.apache.tapestry.ioc.internal.util.TapestryException;
-import org.apache.tapestry.ioc.services.TypeCoercer;
-import org.apache.tapestry.model.ComponentModel;
-import org.apache.tapestry.model.ParameterModel;
-import org.apache.tapestry.runtime.Component;
-import org.easymock.EasyMock;
-import org.testng.annotations.Test;
-
-public class ComponentPageElementImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void parameter_is_bound()
-    {
-        Page page = newPage();
-        Component component = newComponent();
-        ComponentModel model = newComponentModel();
-        Binding binding = newBinding();
-        TypeCoercer coercer = newTypeCoercer();
-
-        Instantiator ins = newInstantiator(component, model);
-
-        train_getLog(model, newLog());
-
-        train_getParameterModel(model, "barney", null);
-        
-        train_getSupportsInformalParameters(model, true);
-
-        replay();
-
-        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
-
-        ComponentResources resources = cpe.getComponentResources();
-        assertFalse(resources.isBound("fred"));
-
-        cpe.addParameter("barney", binding);
-
-        assertFalse(resources.isBound("fred"));
-        assertTrue(resources.isBound("barney"));
-
-        verify();
-    }
-
-    @Test
-    public void verify_required_parameters_all_are_bound()
-    {
-        Page page = newPage();
-        Component component = newComponent();
-        ComponentModel model = newComponentModel();
-        Binding binding = newBinding();
-        TypeCoercer coercer = newTypeCoercer();
-        ParameterModel pmodel = newParameterModel();
-
-        Instantiator ins = newInstantiator(component, model);
-
-        train_getLog(model, newLog());
-
-        train_getParameterNames(model, "barney");
-        train_getParameterModel(model, "barney", pmodel);
-
-        component.containingPageDidLoad();
-
-        replay();
-
-        ComponentPageElementImpl cpe = new ComponentPageElementImpl(page, ins, coercer);
-
-        cpe.addParameter("barney", binding);
-
-        cpe.containingPageDidLoad();
-
-        verify();
-    }
-
-    @Test
-    public void verify_required_parameters_unbound_but_not_required()
-    {
-        Page page = newPage();
-        Component component = newComponent();
-        ComponentModel model = newComponentModel();
-        ParameterModel pmodel = newParameterModel();
-        TypeCoercer coercer = newTypeCoercer();
-
-        Instantiator ins = newInstantiator(component, model);
-
-        train_getLog(model, newLog());
-
-        train_getParameterNames(model, "barney");
-        train_getParameterModel(model, "barney", pmodel);
-        train_isRequired(pmodel, false);
-
-        component.containingPageDidLoad();
-
-        replay();
-
-        ComponentPageElementImpl cpe = new ComponentPageElementImpl(page, ins, coercer);
-
-        cpe.containingPageDidLoad();
-
-        verify();
-    }
-
-    @Test
-    public void verify_required_parameters_unbound_and_required()
-    {
-        Log log = newLog();
-        Page page = newPage();
-        ComponentPageElement container = newComponentPageElement();
-        Component component = newComponent();
-        ComponentModel model = newComponentModel();
-        ParameterModel pmodel = newParameterModel();
-        Location l = newLocation();
-        TypeCoercer coercer = newTypeCoercer();
-
-        Instantiator ins = newInstantiator(component, model);
-
-        train_getLog(model, log);
-
-        train_getNestedId(container, null);
-        train_getName(page, "foo.pages.MyPage");
-
-        train_getParameterNames(model, "wilma", "barney", "fred");
-        train_getParameterModel(model, "wilma", pmodel);
-        train_isRequired(pmodel, true);
-
-        train_getParameterModel(model, "barney", pmodel);
-        train_isRequired(pmodel, false);
-
-        train_getParameterModel(model, "fred", pmodel);
-        train_isRequired(pmodel, true);
-
-        train_getComponentClassName(model, "foo.components.MyComponent");
-
-        replay();
-
-        ComponentPageElementImpl cpe = new ComponentPageElementImpl(page, container, "myid", ins,
-                coercer, l);
-
-        try
-        {
-            cpe.containingPageDidLoad();
-        }
-        catch (TapestryException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Parameter(s) fred, wilma are required for foo.components.MyComponent, but have not been bound.");
-            assertSame(ex.getLocation(), l);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void is_invariant()
-    {
-        Log log = newLog();
-        Page page = newPage();
-        Component component = newComponent();
-        ComponentModel model = newComponentModel();
-        Binding binding = newBinding();
-        TypeCoercer coercer = newTypeCoercer();
-        ParameterModel pmodel = newParameterModel();
-
-        Instantiator ins = newInstantiator(component, model);
-
-        train_getLog(model, log);
-
-        train_getParameterModel(model, "barney", pmodel);
-
-        binding.isInvariant();
-        setReturnValue(true);
-
-        replay();
-
-        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
-
-        assertFalse(cpe.getComponentResources().isInvariant("fred"));
-
-        cpe.addParameter("barney", binding);
-
-        assertFalse(cpe.getComponentResources().isInvariant("fred"));
-        assertTrue(cpe.getComponentResources().isInvariant("barney"));
-
-        verify();
-    }
-
-    @Test
-    public void read_binding()
-    {
-        Page page = newPage();
-        Component component = newComponent();
-        ComponentModel model = newComponentModel();
-        TypeCoercer coercer = newTypeCoercer();
-        Binding binding = newBinding();
-
-        train_getSupportsInformalParameters(model, true);
-        
-        Long boundValue = new Long(23);
-
-        Instantiator ins = newInstantiator(component, model);
-
-        train_getLog(model, newLog());
-
-        train_getParameterModel(model, "barney", null);
-
-        binding.get();
-        setReturnValue(boundValue);
-
-        train_coerce(coercer, boundValue, Long.class, boundValue);
-
-        replay();
-
-        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
-
-        cpe.addParameter("barney", binding);
-
-        assertSame(cpe.getComponentResources().readParameter("barney", Long.class), boundValue);
-
-        verify();
-    }
-
-    protected final void train_getSupportsInformalParameters(ComponentModel model, boolean supports)
-    {
-        model.getSupportsInformalParameters();
-        setReturnValue(supports);
-    }
-
-    @Test
-    public void write_binding()
-    {
-        Log log = newLog();
-        Page page = newPage();
-        Component component = newComponent();
-        ComponentModel model = newComponentModel();
-        TypeCoercer coercer = newTypeCoercer();
-        Binding binding = newBinding();
-
-        Instantiator ins = newInstantiator(component, model);
-
-        train_getParameterModel(model, "barney", null);
-
-        train_getSupportsInformalParameters(model, true);
-        
-        train_getLog(model, log);
-
-        binding.getBindingType();
-        setReturnValue(Integer.class);
-
-        train_coerce(coercer, 23, Integer.class, 23);
-
-        binding.set(23);
-
-        replay();
-
-        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
-
-        cpe.addParameter("barney", binding);
-
-        cpe.getComponentResources().writeParameter("barney", 23);
-
-        verify();
-    }
-
-    @Test
-    public void get_embedded_does_not_exist()
-    {
-        Page page = newPage();
-        Component component = newComponent();
-        ComponentModel model = newComponentModel();
-        TypeCoercer coercer = newTypeCoercer();
-
-        Instantiator ins = newInstantiator(component, model);
-
-        train_getLog(model, newLog());
-
-        replay();
-
-        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
-
-        try
-        {
-            cpe.getEmbeddedElement("unknown");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(), "Component " + component.getClass().getName()
-                    + " does not contain an embedded component with id 'unknown'.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void get_existing_embedded_component()
-    {
-        Log log = newLog();
-        Page page = newPage();
-        Component component = newComponent();
-        ComponentModel model = newComponentModel();
-        ComponentPageElement childElement = newComponentPageElement();
-        Component childComponent = newComponent();
-        TypeCoercer coercer = newTypeCoercer();
-
-        Instantiator ins = newInstantiator(component, model);
-
-        train_getLog(model, log);
-
-        train_getId(childElement, "child");
-        train_getComponent(childElement, childComponent);
-
-        replay();
-
-        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
-
-        cpe.addEmbeddedElement(childElement);
-
-        assertSame(childComponent, cpe.getComponentResources().getEmbeddedComponent("child"));
-
-        verify();
-    }
-
-    @Test
-    public void get_mixin_by_class_name()
-    {
-        Log log = newLog();
-        Page page = newPage();
-        Component component = newComponent();
-        ComponentModel model = newComponentModel();
-        TypeCoercer coercer = newTypeCoercer();
-        final String mixinClassName = "foo.Bar";
-        Component mixin = newComponent();
-        ComponentModel mixinModel = newComponentModel();
-
-        Instantiator ins = newInstantiator(component, model);
-        Instantiator mixinIns = newInstantiator(mixin, mixinModel);
-
-        train_getComponentClassName(mixinModel, mixinClassName);
-
-        train_getLog(model, log);
-
-        replay();
-
-        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
-
-        cpe.addMixin(mixinIns);
-
-        assertSame(cpe.getMixinByClassName(mixinClassName), mixin);
-
-        verify();
-    }
-
-    @Test
-    public void get_mixin_by_unknown_class_name()
-    {
-        Log log = newLog();
-        Page page = newPage();
-        Component component = newComponent();
-        ComponentModel model = newComponentModel();
-        TypeCoercer coercer = newTypeCoercer();
-        Component mixin = newComponent();
-        ComponentModel mixinModel = newComponentModel();
-
-        Instantiator ins = newInstantiator(component, model);
-        Instantiator mixinIns = newInstantiator(mixin, mixinModel);
-
-        train_getComponentClassName(mixinModel, "foo.Bar");
-
-        train_getLog(model, log);
-
-        replay();
-
-        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
-
-        cpe.addMixin(mixinIns);
-
-        try
-        {
-            cpe.getMixinByClassName("foo.Baz");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertTrue(ex.getMessage().endsWith(" does not contain a mixin of type foo.Baz."));
-        }
-
-        verify();
-
-    }
-
-    @Test
-    public void set_explicit_parameter_of_unknown_mixin()
-    {
-        Log log = newLog();
-        Page page = newPage();
-        Component component = newComponent();
-        ComponentModel model = newComponentModel();
-        ComponentModel mixinModel = newComponentModel();
-        Component mixin = newComponent();
-        TypeCoercer coercer = newTypeCoercer();
-        Binding binding = newBinding();
-
-        Instantiator ins = newInstantiator(component, model);
-        Instantiator mixinInstantiator = newInstantiator(mixin, mixinModel);
-
-        train_getLog(model, log);
-
-        train_getComponentClassName(mixinModel, "foo.Fred");
-
-        replay();
-
-        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
-
-        cpe.addMixin(mixinInstantiator);
-
-        try
-        {
-            cpe.addParameter("Wilma.barney", binding);
-            unreachable();
-        }
-        catch (TapestryException ex)
-        {
-            assertTrue(ex.getMessage().contains(
-                    "does not contain a mixin named 'Wilma' (setting parameter 'Wilma.barney')"));
-        }
-
-        verify();
-    }
-
-    private Instantiator newInstantiator(Component component, ComponentModel model)
-    {
-        Instantiator ins = newMock(Instantiator.class);
-
-        ins.getModel();
-        setReturnValue(model).anyTimes();
-
-        ins.newInstance(EasyMock.isA(InternalComponentResources.class));
-
-        setReturnValue(component);
-
-        return ins;
-    }
-
-}
+import org.apache.tapestry.ioc.services.TypeCoercer;
+import org.apache.tapestry.model.ComponentModel;
+import org.apache.tapestry.model.ParameterModel;
+import org.apache.tapestry.runtime.Component;
+import org.easymock.EasyMock;
+import org.testng.annotations.Test;
+
+public class ComponentPageElementImplTest extends InternalBaseTestCase
+{
+    @Test
+    public void parameter_is_bound()
+    {
+        Page page = newPage();
+        Component component = newComponent();
+        ComponentModel model = newComponentModel();
+        Binding binding = newBinding();
+        TypeCoercer coercer = newTypeCoercer();
+
+        Instantiator ins = newInstantiator(component, model);
+
+        train_getLog(model, newLog());
+
+        train_getParameterModel(model, "barney", null);
+
+        train_getSupportsInformalParameters(model, true);
+
+        replay();
+
+        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
+
+        ComponentResources resources = cpe.getComponentResources();
+        assertFalse(resources.isBound("fred"));
+
+        cpe.addParameter("barney", binding);
+
+        assertFalse(resources.isBound("fred"));
+        assertTrue(resources.isBound("barney"));
+
+        verify();
+    }
+
+    @Test
+    public void verify_required_parameters_all_are_bound()
+    {
+        Page page = newPage();
+        Component component = newComponent();
+        ComponentModel model = newComponentModel();
+        Binding binding = newBinding();
+        TypeCoercer coercer = newTypeCoercer();
+        ParameterModel pmodel = newParameterModel();
+
+        Instantiator ins = newInstantiator(component, model);
+
+        train_getLog(model, newLog());
+
+        train_getParameterNames(model, "barney");
+        train_getParameterModel(model, "barney", pmodel);
+
+        component.containingPageDidLoad();
+
+        replay();
+
+        ComponentPageElementImpl cpe = new ComponentPageElementImpl(page, ins, coercer);
+
+        cpe.addParameter("barney", binding);
+
+        cpe.containingPageDidLoad();
+
+        verify();
+    }
+
+    @Test
+    public void verify_required_parameters_unbound_but_not_required()
+    {
+        Page page = newPage();
+        Component component = newComponent();
+        ComponentModel model = newComponentModel();
+        ParameterModel pmodel = newParameterModel();
+        TypeCoercer coercer = newTypeCoercer();
+
+        Instantiator ins = newInstantiator(component, model);
+
+        train_getLog(model, newLog());
+
+        train_getParameterNames(model, "barney");
+        train_getParameterModel(model, "barney", pmodel);
+        train_isRequired(pmodel, false);
+
+        component.containingPageDidLoad();
+
+        replay();
+
+        ComponentPageElementImpl cpe = new ComponentPageElementImpl(page, ins, coercer);
+
+        cpe.containingPageDidLoad();
+
+        verify();
+    }
+
+    @Test
+    public void verify_required_parameters_unbound_and_required()
+    {
+        Log log = newLog();
+        Page page = newPage();
+        ComponentPageElement container = newComponentPageElement();
+        Component component = newComponent();
+        ComponentModel model = newComponentModel();
+        ParameterModel pmodel = newParameterModel();
+        Location l = newLocation();
+        TypeCoercer coercer = newTypeCoercer();
+
+        Instantiator ins = newInstantiator(component, model);
+
+        train_getLog(model, log);
+
+        train_getNestedId(container, null);
+        train_getName(page, "foo.pages.MyPage");
+
+        train_getParameterNames(model, "wilma", "barney", "fred");
+        train_getParameterModel(model, "wilma", pmodel);
+        train_isRequired(pmodel, true);
+
+        train_getParameterModel(model, "barney", pmodel);
+        train_isRequired(pmodel, false);
+
+        train_getParameterModel(model, "fred", pmodel);
+        train_isRequired(pmodel, true);
+
+        train_getComponentClassName(model, "foo.components.MyComponent");
+
+        replay();
+
+        ComponentPageElementImpl cpe = new ComponentPageElementImpl(page, container, "myid", ins,
+                coercer, l);
+
+        try
+        {
+            cpe.containingPageDidLoad();
+        }
+        catch (TapestryException ex)
+        {
+            assertEquals(
+                    ex.getMessage(),
+                    "Parameter(s) fred, wilma are required for foo.components.MyComponent, but have not been bound.");
+            assertSame(ex.getLocation(), l);
+        }
+
+        verify();
+    }
+
+    @Test
+    public void is_invariant()
+    {
+        Log log = newLog();
+        Page page = newPage();
+        Component component = newComponent();
+        ComponentModel model = newComponentModel();
+        Binding binding = newBinding();
+        TypeCoercer coercer = newTypeCoercer();
+        ParameterModel pmodel = newParameterModel();
+
+        Instantiator ins = newInstantiator(component, model);
+
+        train_getLog(model, log);
+
+        train_getParameterModel(model, "barney", pmodel);
+
+        train_isInvariant(binding, true);
+
+        replay();
+
+        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
+
+        assertFalse(cpe.getComponentResources().isInvariant("fred"));
+
+        cpe.addParameter("barney", binding);
+
+        assertFalse(cpe.getComponentResources().isInvariant("fred"));
+        assertTrue(cpe.getComponentResources().isInvariant("barney"));
+
+        verify();
+    }
+
+    @Test
+    public void read_binding()
+    {
+        Page page = newPage();
+        Component component = newComponent();
+        ComponentModel model = newComponentModel();
+        TypeCoercer coercer = newTypeCoercer();
+        Binding binding = newBinding();
+
+        train_getSupportsInformalParameters(model, true);
+
+        Long boundValue = new Long(23);
+
+        Instantiator ins = newInstantiator(component, model);
+
+        train_getLog(model, newLog());
+
+        train_getParameterModel(model, "barney", null);
+
+        train_get(binding, boundValue);
+
+        train_coerce(coercer, boundValue, Long.class, boundValue);
+
+        replay();
+
+        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
+
+        cpe.addParameter("barney", binding);
+
+        assertSame(cpe.getComponentResources().readParameter("barney", Long.class), boundValue);
+
+        verify();
+    }
+
+    protected final void train_getSupportsInformalParameters(ComponentModel model, boolean supports)
+    {
+        expect(model.getSupportsInformalParameters()).andReturn(supports);
+    }
+
+    @Test
+    public void write_binding()
+    {
+        Log log = newLog();
+        Page page = newPage();
+        Component component = newComponent();
+        ComponentModel model = newComponentModel();
+        TypeCoercer coercer = newTypeCoercer();
+        Binding binding = newBinding();
+
+        Instantiator ins = newInstantiator(component, model);
+
+        train_getParameterModel(model, "barney", null);
+
+        train_getSupportsInformalParameters(model, true);
+
+        train_getLog(model, log);
+
+        expect(binding.getBindingType()).andReturn(Integer.class);
+
+        train_coerce(coercer, 23, Integer.class, 23);
+
+        binding.set(23);
+
+        replay();
+
+        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
+
+        cpe.addParameter("barney", binding);
+
+        cpe.getComponentResources().writeParameter("barney", 23);
+
+        verify();
+    }
+
+    @Test
+    public void get_embedded_does_not_exist()
+    {
+        Page page = newPage();
+        Component component = newComponent();
+        ComponentModel model = newComponentModel();
+        TypeCoercer coercer = newTypeCoercer();
+
+        Instantiator ins = newInstantiator(component, model);
+
+        train_getLog(model, newLog());
+
+        replay();
+
+        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
+
+        try
+        {
+            cpe.getEmbeddedElement("unknown");
+            unreachable();
+        }
+        catch (IllegalArgumentException ex)
+        {
+            assertEquals(ex.getMessage(), "Component " + component.getClass().getName()
+                    + " does not contain an embedded component with id 'unknown'.");
+        }
+
+        verify();
+    }
+
+    @Test
+    public void get_existing_embedded_component()
+    {
+        Log log = newLog();
+        Page page = newPage();
+        Component component = newComponent();
+        ComponentModel model = newComponentModel();
+        ComponentPageElement childElement = newComponentPageElement();
+        Component childComponent = newComponent();
+        TypeCoercer coercer = newTypeCoercer();
+
+        Instantiator ins = newInstantiator(component, model);
+
+        train_getLog(model, log);
+
+        train_getId(childElement, "child");
+        train_getComponent(childElement, childComponent);
+
+        replay();
+
+        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
+
+        cpe.addEmbeddedElement(childElement);
+
+        assertSame(childComponent, cpe.getComponentResources().getEmbeddedComponent("child"));
+
+        verify();
+    }
+
+    @Test
+    public void get_mixin_by_class_name()
+    {
+        Log log = newLog();
+        Page page = newPage();
+        Component component = newComponent();
+        ComponentModel model = newComponentModel();
+        TypeCoercer coercer = newTypeCoercer();
+        final String mixinClassName = "foo.Bar";
+        Component mixin = newComponent();
+        ComponentModel mixinModel = newComponentModel();
+
+        Instantiator ins = newInstantiator(component, model);
+        Instantiator mixinIns = newInstantiator(mixin, mixinModel);
+
+        train_getComponentClassName(mixinModel, mixinClassName);
+
+        train_getLog(model, log);
+
+        replay();
+
+        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
+
+        cpe.addMixin(mixinIns);
+
+        assertSame(cpe.getMixinByClassName(mixinClassName), mixin);
+
+        verify();
+    }
+
+    @Test
+    public void get_mixin_by_unknown_class_name()
+    {
+        Log log = newLog();
+        Page page = newPage();
+        Component component = newComponent();
+        ComponentModel model = newComponentModel();
+        TypeCoercer coercer = newTypeCoercer();
+        Component mixin = newComponent();
+        ComponentModel mixinModel = newComponentModel();
+
+        Instantiator ins = newInstantiator(component, model);
+        Instantiator mixinIns = newInstantiator(mixin, mixinModel);
+
+        train_getComponentClassName(mixinModel, "foo.Bar");
+
+        train_getLog(model, log);
+
+        replay();
+
+        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
+
+        cpe.addMixin(mixinIns);
+
+        try
+        {
+            cpe.getMixinByClassName("foo.Baz");
+            unreachable();
+        }
+        catch (IllegalArgumentException ex)
+        {
+            assertTrue(ex.getMessage().endsWith(" does not contain a mixin of type foo.Baz."));
+        }
+
+        verify();
+
+    }
+
+    @Test
+    public void set_explicit_parameter_of_unknown_mixin()
+    {
+        Log log = newLog();
+        Page page = newPage();
+        Component component = newComponent();
+        ComponentModel model = newComponentModel();
+        ComponentModel mixinModel = newComponentModel();
+        Component mixin = newComponent();
+        TypeCoercer coercer = newTypeCoercer();
+        Binding binding = newBinding();
+
+        Instantiator ins = newInstantiator(component, model);
+        Instantiator mixinInstantiator = newInstantiator(mixin, mixinModel);
+
+        train_getLog(model, log);
+
+        train_getComponentClassName(mixinModel, "foo.Fred");
+
+        replay();
+
+        ComponentPageElement cpe = new ComponentPageElementImpl(page, ins, coercer);
+
+        cpe.addMixin(mixinInstantiator);
+
+        try
+        {
+            cpe.addParameter("Wilma.barney", binding);
+            unreachable();
+        }
+        catch (TapestryException ex)
+        {
+            assertTrue(ex.getMessage().contains(
+                    "does not contain a mixin named 'Wilma' (setting parameter 'Wilma.barney')"));
+        }
+
+        verify();
+    }
+
+    private Instantiator newInstantiator(Component component, ComponentModel model)
+    {
+        Instantiator ins = newMock(Instantiator.class);
+
+        expect(ins.getModel()).andReturn(model).anyTimes();
+
+        expect(ins.newInstance(EasyMock.isA(InternalComponentResources.class)))
+                .andReturn(component);
+
+        return ins;
+    }
+}

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/InternalUtilsTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/InternalUtilsTest.java?view=diff&rev=478428&r1=478427&r2=478428
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/InternalUtilsTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/InternalUtilsTest.java Wed Nov 22 17:49:47 2006
@@ -202,8 +202,7 @@
         Location l = newLocation();
         Locatable locatable = newMock(Locatable.class);
 
-        locatable.getLocation();
-        setReturnValue(l);
+        expect(locatable.getLocation()).andReturn(l);
 
         replay();