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();
