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 [2/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/ComponentLifecycleMethodWorkerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentLifecycleMethodWorkerTest.java?view=diff&rev=478428&r1=478427&r2=478428
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentLifecycleMethodWorkerTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentLifecycleMethodWorkerTest.java Wed Nov 22 17:49:47 2006
@@ -12,271 +12,269 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.services;
-
+package org.apache.tapestry.internal.services;
+
import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newList;
-
-import java.lang.reflect.Modifier;
-import java.util.List;
-
-import org.apache.tapestry.MarkupWriter;
-import org.apache.tapestry.annotations.SetupRender;
-import org.apache.tapestry.model.MutableComponentModel;
-import org.apache.tapestry.services.ClassTransformation;
-import org.apache.tapestry.services.ComponentClassTransformWorker;
-import org.apache.tapestry.services.MethodSignature;
-import org.apache.tapestry.services.TransformConstants;
-import org.apache.tapestry.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-/**
- *
- */
-public class ComponentLifecycleMethodWorkerTest extends TapestryTestCase
-{
- @Test
- public void no_methods_with_annotation()
- {
- ClassTransformation tf = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
-
- List<MethodSignature> sigs = newList();
-
- train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
-
- replay();
-
- ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
- TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, false);
-
- worker.transform(tf, model);
-
- verify();
- }
-
- @Test
- public void void_method()
- {
- ClassTransformation tf = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
-
- List<MethodSignature> sigs = newList();
-
- sigs.add(new MethodSignature("aMethod"));
-
- train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
-
- train_isRootClass(model, false);
-
- train_addMethod(
- tf,
- TransformConstants.SETUP_RENDER_SIGNATURE,
- "{ super.setupRender($$); if ($2.isAborted()) return; aMethod(); }");
-
- replay();
-
- ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
- TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, false);
-
- worker.transform(tf, model);
-
- verify();
- }
-
- @Test
- public void multiple_methods_reverse_order()
- {
- ClassTransformation tf = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
-
- List<MethodSignature> sigs = newList();
-
- sigs.add(new MethodSignature("aMethod"));
- sigs.add(new MethodSignature("bMethod"));
-
- train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
-
- train_isRootClass(model, false);
-
- train_addMethod(
- tf,
- TransformConstants.SETUP_RENDER_SIGNATURE,
- "{ bMethod(); aMethod(); super.setupRender($$); }");
-
- replay();
-
- ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
- TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, true);
-
- worker.transform(tf, model);
-
- verify();
- }
-
- @Test
- public void multiple_methods_parent_class_reverse_order()
- {
- ClassTransformation tf = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
-
- List<MethodSignature> sigs = newList();
-
- sigs.add(new MethodSignature("aMethod"));
- sigs.add(new MethodSignature("bMethod"));
-
- train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
- train_isRootClass(model, true);
-
- train_addMethod(tf, TransformConstants.SETUP_RENDER_SIGNATURE, "{ bMethod(); aMethod(); }");
-
- replay();
-
- ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
- TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, true);
-
- worker.transform(tf, model);
-
- verify();
-
- }
-
- @Test
- public void method_in_base_class()
- {
- ClassTransformation tf = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
-
- train_isRootClass(model, true);
-
- List<MethodSignature> sigs = newList();
-
- sigs.add(new MethodSignature("aMethod"));
-
- train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
-
- train_addMethod(tf, TransformConstants.SETUP_RENDER_SIGNATURE, "{ aMethod(); }");
-
- replay();
-
- ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
- TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, false);
-
- worker.transform(tf, model);
-
- verify();
-
- }
-
- protected final void train_isRootClass(MutableComponentModel model, boolean isRootClass)
- {
- model.isRootClass();
- setReturnValue(isRootClass);
- }
-
- @Test
- public void method_with_markup_writer_parameter()
- {
- ClassTransformation tf = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
-
- List<MethodSignature> sigs = newList();
-
- sigs.add(new MethodSignature(Modifier.PUBLIC, "void", "aMethod", new String[]
- { MarkupWriter.class.getName() }, null));
-
- train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
-
- train_isRootClass(model, false);
-
- train_addMethod(
- tf,
- TransformConstants.SETUP_RENDER_SIGNATURE,
- "{ super.setupRender($$); if ($2.isAborted()) return; aMethod($1); }");
-
- replay();
-
- ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
- TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, false);
-
- worker.transform(tf, model);
-
- verify();
-
- }
-
- @Test
- public void nonvoid_method()
- {
- ClassTransformation tf = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
-
- List<MethodSignature> sigs = newList();
-
- sigs.add(new MethodSignature(Modifier.PROTECTED, "boolean", "aMethod", null, null));
-
- train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
-
- train_getClassName(tf, "biff.Baz");
-
- train_isRootClass(model, false);
-
- train_addMethod(
- tf,
- TransformConstants.SETUP_RENDER_SIGNATURE,
- "{",
- "super.setupRender($$);",
- "if ($2.isAborted()) return; ",
- "if ($2.storeResult(($w) aMethod(), \"biff.Baz.aMethod()\")) return;",
- "}");
-
- replay();
-
- ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
- TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, false);
-
- worker.transform(tf, model);
-
- verify();
- }
-
- @Test
- public void multiple_methods()
- {
- ClassTransformation tf = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
-
- List<MethodSignature> sigs = newList();
-
- sigs.add(new MethodSignature(Modifier.PROTECTED, "boolean", "aMethod", null, null));
- sigs.add(new MethodSignature(Modifier.PUBLIC, "void", "bMethod", new String[]
- { MarkupWriter.class.getName() }, null));
-
- train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
- train_isRootClass(model, false);
- train_getClassName(tf, "foo.Bar");
-
- train_addMethod(
- tf,
- TransformConstants.SETUP_RENDER_SIGNATURE,
- "{ super.setupRender($$);",
- "if ($2.isAborted()) return;",
- "if ($2.storeResult(($w) aMethod(), \"foo.Bar.aMethod()\")) return;",
- "bMethod($1); }");
-
- replay();
-
- ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
- TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, false);
-
- worker.transform(tf, model);
-
- verify();
- }
-
- protected final void train_getClassName(ClassTransformation transformation, String className)
- {
- transformation.getClassName();
- setReturnValue(className);
- }
-
-}
+
+import java.lang.reflect.Modifier;
+import java.util.List;
+
+import org.apache.tapestry.MarkupWriter;
+import org.apache.tapestry.annotations.SetupRender;
+import org.apache.tapestry.model.MutableComponentModel;
+import org.apache.tapestry.services.ClassTransformation;
+import org.apache.tapestry.services.ComponentClassTransformWorker;
+import org.apache.tapestry.services.MethodSignature;
+import org.apache.tapestry.services.TransformConstants;
+import org.apache.tapestry.test.TapestryTestCase;
+import org.testng.annotations.Test;
+
+/**
+ *
+ */
+public class ComponentLifecycleMethodWorkerTest extends TapestryTestCase
+{
+ @Test
+ public void no_methods_with_annotation()
+ {
+ ClassTransformation tf = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ List<MethodSignature> sigs = newList();
+
+ train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
+
+ replay();
+
+ ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
+ TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, false);
+
+ worker.transform(tf, model);
+
+ verify();
+ }
+
+ @Test
+ public void void_method()
+ {
+ ClassTransformation tf = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ List<MethodSignature> sigs = newList();
+
+ sigs.add(new MethodSignature("aMethod"));
+
+ train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
+
+ train_isRootClass(model, false);
+
+ train_addMethod(
+ tf,
+ TransformConstants.SETUP_RENDER_SIGNATURE,
+ "{ super.setupRender($$); if ($2.isAborted()) return; aMethod(); }");
+
+ replay();
+
+ ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
+ TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, false);
+
+ worker.transform(tf, model);
+
+ verify();
+ }
+
+ @Test
+ public void multiple_methods_reverse_order()
+ {
+ ClassTransformation tf = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ List<MethodSignature> sigs = newList();
+
+ sigs.add(new MethodSignature("aMethod"));
+ sigs.add(new MethodSignature("bMethod"));
+
+ train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
+
+ train_isRootClass(model, false);
+
+ train_addMethod(
+ tf,
+ TransformConstants.SETUP_RENDER_SIGNATURE,
+ "{ bMethod(); aMethod(); super.setupRender($$); }");
+
+ replay();
+
+ ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
+ TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, true);
+
+ worker.transform(tf, model);
+
+ verify();
+ }
+
+ @Test
+ public void multiple_methods_parent_class_reverse_order()
+ {
+ ClassTransformation tf = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ List<MethodSignature> sigs = newList();
+
+ sigs.add(new MethodSignature("aMethod"));
+ sigs.add(new MethodSignature("bMethod"));
+
+ train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
+ train_isRootClass(model, true);
+
+ train_addMethod(tf, TransformConstants.SETUP_RENDER_SIGNATURE, "{ bMethod(); aMethod(); }");
+
+ replay();
+
+ ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
+ TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, true);
+
+ worker.transform(tf, model);
+
+ verify();
+
+ }
+
+ @Test
+ public void method_in_base_class()
+ {
+ ClassTransformation tf = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ train_isRootClass(model, true);
+
+ List<MethodSignature> sigs = newList();
+
+ sigs.add(new MethodSignature("aMethod"));
+
+ train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
+
+ train_addMethod(tf, TransformConstants.SETUP_RENDER_SIGNATURE, "{ aMethod(); }");
+
+ replay();
+
+ ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
+ TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, false);
+
+ worker.transform(tf, model);
+
+ verify();
+
+ }
+
+ protected final void train_isRootClass(MutableComponentModel model, boolean isRootClass)
+ {
+ expect(model.isRootClass()).andReturn(isRootClass);
+ }
+
+ @Test
+ public void method_with_markup_writer_parameter()
+ {
+ ClassTransformation tf = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ List<MethodSignature> sigs = newList();
+
+ sigs.add(new MethodSignature(Modifier.PUBLIC, "void", "aMethod", new String[]
+ { MarkupWriter.class.getName() }, null));
+
+ train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
+
+ train_isRootClass(model, false);
+
+ train_addMethod(
+ tf,
+ TransformConstants.SETUP_RENDER_SIGNATURE,
+ "{ super.setupRender($$); if ($2.isAborted()) return; aMethod($1); }");
+
+ replay();
+
+ ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
+ TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, false);
+
+ worker.transform(tf, model);
+
+ verify();
+
+ }
+
+ @Test
+ public void nonvoid_method()
+ {
+ ClassTransformation tf = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ List<MethodSignature> sigs = newList();
+
+ sigs.add(new MethodSignature(Modifier.PROTECTED, "boolean", "aMethod", null, null));
+
+ train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
+
+ train_getClassName(tf, "biff.Baz");
+
+ train_isRootClass(model, false);
+
+ train_addMethod(
+ tf,
+ TransformConstants.SETUP_RENDER_SIGNATURE,
+ "{",
+ "super.setupRender($$);",
+ "if ($2.isAborted()) return; ",
+ "if ($2.storeResult(($w) aMethod(), \"biff.Baz.aMethod()\")) return;",
+ "}");
+
+ replay();
+
+ ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
+ TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, false);
+
+ worker.transform(tf, model);
+
+ verify();
+ }
+
+ @Test
+ public void multiple_methods()
+ {
+ ClassTransformation tf = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ List<MethodSignature> sigs = newList();
+
+ sigs.add(new MethodSignature(Modifier.PROTECTED, "boolean", "aMethod", null, null));
+ sigs.add(new MethodSignature(Modifier.PUBLIC, "void", "bMethod", new String[]
+ { MarkupWriter.class.getName() }, null));
+
+ train_findMethodsWithAnnotation(tf, SetupRender.class, sigs);
+ train_isRootClass(model, false);
+ train_getClassName(tf, "foo.Bar");
+
+ train_addMethod(
+ tf,
+ TransformConstants.SETUP_RENDER_SIGNATURE,
+ "{ super.setupRender($$);",
+ "if ($2.isAborted()) return;",
+ "if ($2.storeResult(($w) aMethod(), \"foo.Bar.aMethod()\")) return;",
+ "bMethod($1); }");
+
+ replay();
+
+ ComponentClassTransformWorker worker = new ComponentLifecycleMethodWorker(
+ TransformConstants.SETUP_RENDER_SIGNATURE, SetupRender.class, false);
+
+ worker.transform(tf, model);
+
+ verify();
+ }
+
+ protected final void train_getClassName(ClassTransformation transformation, String className)
+ {
+ expect(transformation.getClassName()).andReturn(className);
+ }
+
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InfrastructureImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InfrastructureImplTest.java?view=diff&rev=478428&r1=478427&r2=478428
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InfrastructureImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InfrastructureImplTest.java Wed Nov 22 17:49:47 2006
@@ -12,202 +12,201 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.services;
-
+package org.apache.tapestry.internal.services;
+
import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newMap;
-
-import java.util.Map;
-
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.apache.tapestry.ioc.ObjectProvider;
-import org.apache.tapestry.ioc.ServiceLocator;
-import org.apache.tapestry.services.Infrastructure;
-import org.apache.tapestry.services.InfrastructureManager;
-import org.testng.annotations.Test;
-
-/**
- *
- */
-public class InfrastructureImplTest extends InternalBaseTestCase
-{
- @Test
- public void mode_not_set_when_resolution_requested()
- {
- InfrastructureManager manager = newInfrastructureManager();
- ServiceLocator locator = newServiceLocator();
-
- replay();
-
- Infrastructure infra = new InfrastructureImpl(manager);
-
- // Do not assume that infra and provider are the same;
- // that's an implementation choice.
-
- ObjectProvider provider = infra.getObjectProvider();
-
- try
- {
- provider.provide("expression", Runnable.class, locator);
- unreachable();
- }
- catch (RuntimeException ex)
- {
- assertEquals(ex.getMessage(), ServicesMessages.infrastructureModeNotSet());
- }
-
- verify();
- }
-
- protected final InfrastructureManager newInfrastructureManager()
- {
- return newMock(InfrastructureManager.class);
- }
-
- @Test
- public void resolve_object_within_mode()
- {
- InfrastructureManager manager = newInfrastructureManager();
- ServiceLocator locator = newServiceLocator();
- Runnable r = newRunnable();
-
- Map<String, Object> configuration = newMap();
- configuration.put("myrunnable", r);
-
- train_getContributionsForMode(manager, "papyrus", configuration);
-
- replay();
-
- Infrastructure infra = new InfrastructureImpl(manager);
-
- infra.setMode("papyrus");
-
- // Do not assume that infra and provider are the same;
- // that's an implementation choice.
-
- ObjectProvider provider = infra.getObjectProvider();
-
- Runnable actual = provider.provide("myrunnable", Runnable.class, locator);
-
- assertSame(actual, r);
-
- verify();
- }
-
- /** Check that the manager is only consulted once. */
- @Test
- public void configuration_is_cached()
- {
- InfrastructureManager manager = newInfrastructureManager();
- ServiceLocator locator = newServiceLocator();
- Runnable r = newRunnable();
-
- Map<String, Object> configuration = newMap();
- configuration.put("myrunnable", r);
-
- train_getContributionsForMode(manager, "clay", configuration);
-
- replay();
-
- Infrastructure infra = new InfrastructureImpl(manager);
-
- infra.setMode("clay");
-
- // Do not assume that infra and provider are the same;
- // that's an implementation choice.
-
- ObjectProvider provider = infra.getObjectProvider();
-
- Runnable actual1 = provider.provide("myrunnable", Runnable.class, locator);
- Runnable actual2 = provider.provide("myrunnable", Runnable.class, locator);
-
- assertSame(actual1, r);
- assertSame(actual2, r);
-
- verify();
- }
-
- @Test
- public void expression_not_found_in_configuration()
- {
- InfrastructureManager manager = newInfrastructureManager();
- ServiceLocator locator = newServiceLocator();
-
- Map<String, Object> configuration = newMap();
-
- configuration.put("fred", this);
- configuration.put("barney", this);
- configuration.put("wilma", this);
-
- train_getContributionsForMode(manager, "clay", configuration);
-
- replay();
-
- Infrastructure infra = new InfrastructureImpl(manager);
-
- infra.setMode("clay");
-
- ObjectProvider provider = infra.getObjectProvider();
-
- try
- {
- provider.provide("someexpression", Runnable.class, locator);
- unreachable();
- }
- catch (RuntimeException ex)
- {
- assertEquals(
- ex.getMessage(),
- "No infrastructure property 'someexpression' has been configured. Configured properties are: barney, fred, wilma.");
- }
-
- verify();
-
- }
-
- @Test
- public void requested_type_not_compatible_with_object()
- {
- InfrastructureManager manager = newInfrastructureManager();
- ServiceLocator locator = newServiceLocator();
- Runnable r = newRunnable();
-
- Map<String, Object> configuration = newMap();
- configuration.put("myrunnable", r);
-
- train_getContributionsForMode(manager, "papyrus", configuration);
-
- replay();
-
- Infrastructure infra = new InfrastructureImpl(manager);
-
- infra.setMode("papyrus");
-
- // Do not assume that infra and provider are the same;
- // that's an implementation choice.
-
- ObjectProvider provider = infra.getObjectProvider();
-
- try
- {
- provider.provide("myrunnable", UpdateListenerHub.class, locator);
- unreachable();
- }
- catch (RuntimeException ex)
- {
- assertEquals(ex.getMessage(), ServicesMessages.infrastructurePropertyWrongType(
- "myrunnable",
- r,
- UpdateListenerHub.class));
- }
-
- verify();
-
- }
-
- protected final void train_getContributionsForMode(InfrastructureManager manager, String mode,
- Map<String, Object> configuration)
- {
- manager.getContributionsForMode(mode);
- setReturnValue(configuration);
- }
-}
+
+import java.util.Map;
+
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.ioc.ObjectProvider;
+import org.apache.tapestry.ioc.ServiceLocator;
+import org.apache.tapestry.services.Infrastructure;
+import org.apache.tapestry.services.InfrastructureManager;
+import org.testng.annotations.Test;
+
+/**
+ *
+ */
+public class InfrastructureImplTest extends InternalBaseTestCase
+{
+ @Test
+ public void mode_not_set_when_resolution_requested()
+ {
+ InfrastructureManager manager = newInfrastructureManager();
+ ServiceLocator locator = newServiceLocator();
+
+ replay();
+
+ Infrastructure infra = new InfrastructureImpl(manager);
+
+ // Do not assume that infra and provider are the same;
+ // that's an implementation choice.
+
+ ObjectProvider provider = infra.getObjectProvider();
+
+ try
+ {
+ provider.provide("expression", Runnable.class, locator);
+ unreachable();
+ }
+ catch (RuntimeException ex)
+ {
+ assertEquals(ex.getMessage(), ServicesMessages.infrastructureModeNotSet());
+ }
+
+ verify();
+ }
+
+ protected final InfrastructureManager newInfrastructureManager()
+ {
+ return newMock(InfrastructureManager.class);
+ }
+
+ @Test
+ public void resolve_object_within_mode()
+ {
+ InfrastructureManager manager = newInfrastructureManager();
+ ServiceLocator locator = newServiceLocator();
+ Runnable r = newRunnable();
+
+ Map<String, Object> configuration = newMap();
+ configuration.put("myrunnable", r);
+
+ train_getContributionsForMode(manager, "papyrus", configuration);
+
+ replay();
+
+ Infrastructure infra = new InfrastructureImpl(manager);
+
+ infra.setMode("papyrus");
+
+ // Do not assume that infra and provider are the same;
+ // that's an implementation choice.
+
+ ObjectProvider provider = infra.getObjectProvider();
+
+ Runnable actual = provider.provide("myrunnable", Runnable.class, locator);
+
+ assertSame(actual, r);
+
+ verify();
+ }
+
+ /** Check that the manager is only consulted once. */
+ @Test
+ public void configuration_is_cached()
+ {
+ InfrastructureManager manager = newInfrastructureManager();
+ ServiceLocator locator = newServiceLocator();
+ Runnable r = newRunnable();
+
+ Map<String, Object> configuration = newMap();
+ configuration.put("myrunnable", r);
+
+ train_getContributionsForMode(manager, "clay", configuration);
+
+ replay();
+
+ Infrastructure infra = new InfrastructureImpl(manager);
+
+ infra.setMode("clay");
+
+ // Do not assume that infra and provider are the same;
+ // that's an implementation choice.
+
+ ObjectProvider provider = infra.getObjectProvider();
+
+ Runnable actual1 = provider.provide("myrunnable", Runnable.class, locator);
+ Runnable actual2 = provider.provide("myrunnable", Runnable.class, locator);
+
+ assertSame(actual1, r);
+ assertSame(actual2, r);
+
+ verify();
+ }
+
+ @Test
+ public void expression_not_found_in_configuration()
+ {
+ InfrastructureManager manager = newInfrastructureManager();
+ ServiceLocator locator = newServiceLocator();
+
+ Map<String, Object> configuration = newMap();
+
+ configuration.put("fred", this);
+ configuration.put("barney", this);
+ configuration.put("wilma", this);
+
+ train_getContributionsForMode(manager, "clay", configuration);
+
+ replay();
+
+ Infrastructure infra = new InfrastructureImpl(manager);
+
+ infra.setMode("clay");
+
+ ObjectProvider provider = infra.getObjectProvider();
+
+ try
+ {
+ provider.provide("someexpression", Runnable.class, locator);
+ unreachable();
+ }
+ catch (RuntimeException ex)
+ {
+ assertEquals(
+ ex.getMessage(),
+ "No infrastructure property 'someexpression' has been configured. Configured properties are: barney, fred, wilma.");
+ }
+
+ verify();
+
+ }
+
+ @Test
+ public void requested_type_not_compatible_with_object()
+ {
+ InfrastructureManager manager = newInfrastructureManager();
+ ServiceLocator locator = newServiceLocator();
+ Runnable r = newRunnable();
+
+ Map<String, Object> configuration = newMap();
+ configuration.put("myrunnable", r);
+
+ train_getContributionsForMode(manager, "papyrus", configuration);
+
+ replay();
+
+ Infrastructure infra = new InfrastructureImpl(manager);
+
+ infra.setMode("papyrus");
+
+ // Do not assume that infra and provider are the same;
+ // that's an implementation choice.
+
+ ObjectProvider provider = infra.getObjectProvider();
+
+ try
+ {
+ provider.provide("myrunnable", UpdateListenerHub.class, locator);
+ unreachable();
+ }
+ catch (RuntimeException ex)
+ {
+ assertEquals(ex.getMessage(), ServicesMessages.infrastructurePropertyWrongType(
+ "myrunnable",
+ r,
+ UpdateListenerHub.class));
+ }
+
+ verify();
+
+ }
+
+ protected final void train_getContributionsForMode(InfrastructureManager manager, String mode,
+ Map<String, Object> configuration)
+ {
+ expect(manager.getContributionsForMode(mode)).andReturn(configuration);
+ }
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectWorkerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectWorkerTest.java?view=diff&rev=478428&r1=478427&r2=478428
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectWorkerTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectWorkerTest.java Wed Nov 22 17:49:47 2006
@@ -12,140 +12,138 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.services;
-
-import org.apache.tapestry.annotations.Inject;
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.apache.tapestry.ioc.ObjectProvider;
-import org.apache.tapestry.ioc.ServiceLocator;
-import org.apache.tapestry.model.MutableComponentModel;
-import org.apache.tapestry.services.ClassTransformation;
+package org.apache.tapestry.internal.services;
+
+import org.apache.tapestry.annotations.Inject;
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.ioc.ObjectProvider;
+import org.apache.tapestry.ioc.ServiceLocator;
+import org.apache.tapestry.model.MutableComponentModel;
+import org.apache.tapestry.services.ClassTransformation;
import org.apache.tapestry.services.InjectionProvider;
-import org.apache.tapestry.services.WebRequest;
-import org.testng.annotations.Test;
-
-/**
- *
- */
-public class InjectWorkerTest extends InternalBaseTestCase
-{
-
- private static final String WEBREQUEST_CLASS_NAME = WebRequest.class.getName();
-
- @Test
- public void annotation_has_value()
- {
- ObjectProvider provider = newObjectProvider();
- ServiceLocator locator = newServiceLocator();
- InjectionProvider ip = newMock(InjectionProvider.class);
- Inject annotation = newMock(Inject.class);
- ClassTransformation ct = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
- WebRequest injected = newWebRequest();
-
- train_findFieldsWithAnnotation(ct, Inject.class, "myfield");
- train_getFieldAnnotation(ct, "myfield", Inject.class, annotation);
-
- train_value(annotation, "foo:Bar");
-
- train_getFieldType(ct, "myfield", WEBREQUEST_CLASS_NAME);
- train_toClass(ct, WEBREQUEST_CLASS_NAME, WebRequest.class);
-
- train_provide(provider, "foo:Bar", WebRequest.class, locator, injected);
-
- ct.injectField("myfield", injected);
-
- ct.claimField("myfield", annotation);
-
- replay();
-
- InjectWorker worker = new InjectWorker(provider, locator, ip);
-
- worker.transform(ct, model);
-
- verify();
- }
-
- @Test
- public void no_value_for_annotation()
- {
- ObjectProvider provider = newObjectProvider();
- ServiceLocator locator = newServiceLocator();
- InjectionProvider ip = newMock(InjectionProvider.class);
- Inject annotation = newMock(Inject.class);
- ClassTransformation ct = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
-
- train_findFieldsWithAnnotation(ct, Inject.class, "myfield");
- train_getFieldAnnotation(ct, "myfield", Inject.class, annotation);
-
- train_value(annotation, "");
-
- train_getFieldType(ct, "myfield", WEBREQUEST_CLASS_NAME);
-
- train_provideInjection(ip, "myfield", WEBREQUEST_CLASS_NAME, locator, ct, model, true);
-
- ct.claimField("myfield", annotation);
-
- replay();
-
- InjectWorker worker = new InjectWorker(provider, locator, ip);
-
- worker.transform(ct, model);
-
- verify();
- }
-
- @Test
- public void anonymous_injection_not_provided()
- {
- ObjectProvider provider = newObjectProvider();
- ServiceLocator locator = newServiceLocator();
- InjectionProvider ip = newMock(InjectionProvider.class);
- Inject annotation = newMock(Inject.class);
- ClassTransformation ct = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
-
- train_findFieldsWithAnnotation(ct, Inject.class, "myfield");
- train_getFieldAnnotation(ct, "myfield", Inject.class, annotation);
-
- train_value(annotation, "");
-
- train_getFieldType(ct, "myfield", WEBREQUEST_CLASS_NAME);
-
- train_provideInjection(ip, "myfield", WEBREQUEST_CLASS_NAME, locator, ct, model, false);
-
- train_getClassName(ct, "foo.Baz");
-
- replay();
-
- InjectWorker worker = new InjectWorker(provider, locator, ip);
-
- try
- {
- worker.transform(ct, model);
- unreachable();
- }
- catch (RuntimeException ex)
- {
- assertEquals(ex.getMessage(), ServicesMessages.noInjectionFound(
- "foo.Baz",
- "myfield",
- WEBREQUEST_CLASS_NAME));
- }
-
- verify();
- }
-
- protected void train_getClassName(ClassTransformation transformation, String className)
- {
- transformation.getClassName();
- setReturnValue(className);
- }
-
- private void train_value(Inject annotation, String value)
- {
- annotation.value();
- setReturnValue(value);
- }
-}
+import org.apache.tapestry.services.WebRequest;
+import org.testng.annotations.Test;
+
+/**
+ *
+ */
+public class InjectWorkerTest extends InternalBaseTestCase
+{
+
+ private static final String WEBREQUEST_CLASS_NAME = WebRequest.class.getName();
+
+ @Test
+ public void annotation_has_value()
+ {
+ ObjectProvider provider = newObjectProvider();
+ ServiceLocator locator = newServiceLocator();
+ InjectionProvider ip = newMock(InjectionProvider.class);
+ Inject annotation = newMock(Inject.class);
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+ WebRequest injected = newWebRequest();
+
+ train_findFieldsWithAnnotation(ct, Inject.class, "myfield");
+ train_getFieldAnnotation(ct, "myfield", Inject.class, annotation);
+
+ train_value(annotation, "foo:Bar");
+
+ train_getFieldType(ct, "myfield", WEBREQUEST_CLASS_NAME);
+ train_toClass(ct, WEBREQUEST_CLASS_NAME, WebRequest.class);
+
+ train_provide(provider, "foo:Bar", WebRequest.class, locator, injected);
+
+ ct.injectField("myfield", injected);
+
+ ct.claimField("myfield", annotation);
+
+ replay();
+
+ InjectWorker worker = new InjectWorker(provider, locator, ip);
+
+ worker.transform(ct, model);
+
+ verify();
+ }
+
+ @Test
+ public void no_value_for_annotation()
+ {
+ ObjectProvider provider = newObjectProvider();
+ ServiceLocator locator = newServiceLocator();
+ InjectionProvider ip = newMock(InjectionProvider.class);
+ Inject annotation = newMock(Inject.class);
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ train_findFieldsWithAnnotation(ct, Inject.class, "myfield");
+ train_getFieldAnnotation(ct, "myfield", Inject.class, annotation);
+
+ train_value(annotation, "");
+
+ train_getFieldType(ct, "myfield", WEBREQUEST_CLASS_NAME);
+
+ train_provideInjection(ip, "myfield", WEBREQUEST_CLASS_NAME, locator, ct, model, true);
+
+ ct.claimField("myfield", annotation);
+
+ replay();
+
+ InjectWorker worker = new InjectWorker(provider, locator, ip);
+
+ worker.transform(ct, model);
+
+ verify();
+ }
+
+ @Test
+ public void anonymous_injection_not_provided()
+ {
+ ObjectProvider provider = newObjectProvider();
+ ServiceLocator locator = newServiceLocator();
+ InjectionProvider ip = newMock(InjectionProvider.class);
+ Inject annotation = newMock(Inject.class);
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ train_findFieldsWithAnnotation(ct, Inject.class, "myfield");
+ train_getFieldAnnotation(ct, "myfield", Inject.class, annotation);
+
+ train_value(annotation, "");
+
+ train_getFieldType(ct, "myfield", WEBREQUEST_CLASS_NAME);
+
+ train_provideInjection(ip, "myfield", WEBREQUEST_CLASS_NAME, locator, ct, model, false);
+
+ train_getClassName(ct, "foo.Baz");
+
+ replay();
+
+ InjectWorker worker = new InjectWorker(provider, locator, ip);
+
+ try
+ {
+ worker.transform(ct, model);
+ unreachable();
+ }
+ catch (RuntimeException ex)
+ {
+ assertEquals(ex.getMessage(), ServicesMessages.noInjectionFound(
+ "foo.Baz",
+ "myfield",
+ WEBREQUEST_CLASS_NAME));
+ }
+
+ verify();
+ }
+
+ protected void train_getClassName(ClassTransformation transformation, String className)
+ {
+ expect(transformation.getClassName()).andReturn(className);
+ }
+
+ private void train_value(Inject annotation, String value)
+ {
+ expect(annotation.value()).andReturn(value);
+ }
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/MixinWorkerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/MixinWorkerTest.java?view=diff&rev=478428&r1=478427&r2=478428
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/MixinWorkerTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/MixinWorkerTest.java Wed Nov 22 17:49:47 2006
@@ -12,115 +12,113 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.services;
-
-import org.apache.tapestry.annotations.Mixin;
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.apache.tapestry.model.MutableComponentModel;
-import org.apache.tapestry.services.ClassTransformation;
-import org.apache.tapestry.services.ComponentClassResolver;
-import org.apache.tapestry.services.TransformConstants;
-import org.testng.annotations.Test;
-
-public class MixinWorkerTest extends InternalBaseTestCase
-{
- @Test
- public void no_fields_with_mixin_annotation()
- {
- ComponentClassResolver resolver = newComponentClassResolver();
- ClassTransformation transformation = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
-
- train_findFieldsWithAnnotation(transformation, Mixin.class);
-
- replay();
-
- new MixinWorker(resolver).transform(transformation, model);
-
- verify();
- }
-
- @Test
- public void field_with_explicit_type()
- {
- ComponentClassResolver resolver = newComponentClassResolver();
- ClassTransformation transformation = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
- Mixin annotation = newMixin("Bar");
-
- train_findFieldsWithAnnotation(transformation, Mixin.class, "fred");
- train_getFieldAnnotation(transformation, "fred", Mixin.class, annotation);
- train_getFieldType(transformation, "fred", "foo.bar.Baz");
-
- train_resolveMixinTypeToClassName(resolver, "Bar", "foo.bar.BazMixin");
-
- model.addMixinClassName("foo.bar.BazMixin");
-
- transformation.makeReadOnly("fred");
-
- train_getResourcesFieldName(transformation, "rez");
-
- train_extendMethod(
- transformation,
- TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE,
- "fred = (foo.bar.Baz) rez.getMixinByClassName(\"foo.bar.BazMixin\");");
-
- transformation.claimField("fred", annotation);
-
- replay();
-
- new MixinWorker(resolver).transform(transformation, model);
-
- verify();
- }
-
- @Test
- public void field_with_no_specific_mixin_type()
- {
- ComponentClassResolver resolver = newComponentClassResolver();
- ClassTransformation transformation = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
- Mixin annotation = newMixin("");
-
- train_findFieldsWithAnnotation(transformation, Mixin.class, "fred");
- train_getFieldAnnotation(transformation, "fred", Mixin.class, annotation);
- train_getFieldType(transformation, "fred", "foo.bar.Baz");
-
- model.addMixinClassName("foo.bar.Baz");
-
- transformation.makeReadOnly("fred");
-
- train_getResourcesFieldName(transformation, "rez");
-
- train_extendMethod(
- transformation,
- TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE,
- "fred = (foo.bar.Baz) rez.getMixinByClassName(\"foo.bar.Baz\");");
-
- transformation.claimField("fred", annotation);
-
- replay();
-
- new MixinWorker(resolver).transform(transformation, model);
-
- verify();
-
- }
-
- protected final void train_resolveMixinTypeToClassName(ComponentClassResolver resolver,
- String mixinType, String mixinClassName)
- {
- resolver.resolveMixinTypeToClassName(mixinType);
- setReturnValue(mixinClassName);
- }
-
- private Mixin newMixin(String value)
- {
- Mixin annotation = newMock(Mixin.class);
-
- annotation.value();
- setReturnValue(value);
-
- return annotation;
- }
-}
+package org.apache.tapestry.internal.services;
+
+import org.apache.tapestry.annotations.Mixin;
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.model.MutableComponentModel;
+import org.apache.tapestry.services.ClassTransformation;
+import org.apache.tapestry.services.ComponentClassResolver;
+import org.apache.tapestry.services.TransformConstants;
+import org.testng.annotations.Test;
+
+public class MixinWorkerTest extends InternalBaseTestCase
+{
+ @Test
+ public void no_fields_with_mixin_annotation()
+ {
+ ComponentClassResolver resolver = newComponentClassResolver();
+ ClassTransformation transformation = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ train_findFieldsWithAnnotation(transformation, Mixin.class);
+
+ replay();
+
+ new MixinWorker(resolver).transform(transformation, model);
+
+ verify();
+ }
+
+ @Test
+ public void field_with_explicit_type()
+ {
+ ComponentClassResolver resolver = newComponentClassResolver();
+ ClassTransformation transformation = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+ Mixin annotation = newMixin("Bar");
+
+ train_findFieldsWithAnnotation(transformation, Mixin.class, "fred");
+ train_getFieldAnnotation(transformation, "fred", Mixin.class, annotation);
+ train_getFieldType(transformation, "fred", "foo.bar.Baz");
+
+ train_resolveMixinTypeToClassName(resolver, "Bar", "foo.bar.BazMixin");
+
+ model.addMixinClassName("foo.bar.BazMixin");
+
+ transformation.makeReadOnly("fred");
+
+ train_getResourcesFieldName(transformation, "rez");
+
+ train_extendMethod(
+ transformation,
+ TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE,
+ "fred = (foo.bar.Baz) rez.getMixinByClassName(\"foo.bar.BazMixin\");");
+
+ transformation.claimField("fred", annotation);
+
+ replay();
+
+ new MixinWorker(resolver).transform(transformation, model);
+
+ verify();
+ }
+
+ @Test
+ public void field_with_no_specific_mixin_type()
+ {
+ ComponentClassResolver resolver = newComponentClassResolver();
+ ClassTransformation transformation = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+ Mixin annotation = newMixin("");
+
+ train_findFieldsWithAnnotation(transformation, Mixin.class, "fred");
+ train_getFieldAnnotation(transformation, "fred", Mixin.class, annotation);
+ train_getFieldType(transformation, "fred", "foo.bar.Baz");
+
+ model.addMixinClassName("foo.bar.Baz");
+
+ transformation.makeReadOnly("fred");
+
+ train_getResourcesFieldName(transformation, "rez");
+
+ train_extendMethod(
+ transformation,
+ TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE,
+ "fred = (foo.bar.Baz) rez.getMixinByClassName(\"foo.bar.Baz\");");
+
+ transformation.claimField("fred", annotation);
+
+ replay();
+
+ new MixinWorker(resolver).transform(transformation, model);
+
+ verify();
+
+ }
+
+ protected final void train_resolveMixinTypeToClassName(ComponentClassResolver resolver,
+ String mixinType, String mixinClassName)
+ {
+ expect(resolver.resolveMixinTypeToClassName(mixinType)).andReturn(mixinClassName);
+ }
+
+ private Mixin newMixin(String value)
+ {
+ Mixin annotation = newMock(Mixin.class);
+
+ expect(annotation.value()).andReturn(value);
+
+ return annotation;
+ }
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/OnEventWorkerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/OnEventWorkerTest.java?view=diff&rev=478428&r1=478427&r2=478428
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/OnEventWorkerTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/OnEventWorkerTest.java Wed Nov 22 17:49:47 2006
@@ -12,412 +12,408 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.services;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Modifier;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.tapestry.annotations.OnEvent;
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
+package org.apache.tapestry.internal.services;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Modifier;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.tapestry.annotations.OnEvent;
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
import org.apache.tapestry.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry.model.MutableComponentModel;
-import org.apache.tapestry.services.ClassTransformation;
-import org.apache.tapestry.services.MethodSignature;
-import org.apache.tapestry.services.TransformConstants;
-import org.testng.annotations.Test;
-
-/**
- * I'd prefer to test these in terms of the behavior of the final class, rather than the generated
- * Javassist method bodies, but that'll have to be saved for later integration tests.
- */
-public class OnEventWorkerTest extends InternalBaseTestCase
-{
-
- private static final String BOILERPLATE_1 = "if ($1.isAborted()) return $_;";
-
- private static final String BOILERPLATE_2 = "$_ = true;";
-
- @Test
- public void no_methods_with_annotation()
- {
- ClassTransformation ct = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
-
- List<MethodSignature> methods = CollectionFactory.newList();
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
-
- replay();
-
- new OnEventWorker().transform(ct, model);
-
- verify();
- }
-
- @Test
- public void minimal_case()
- {
- ClassTransformation ct = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
- OnEvent annotation = newOnEvent();
-
- MethodSignature signature = new MethodSignature("foo");
-
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
-
- train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
-
- train_value(annotation, new String[0]);
- train_component(annotation, new String[0]);
-
- train_getClassName(ct, "foo.Bar");
-
- train_extendMethod(
- ct,
- TransformConstants.HANDLE_COMPONENT_EVENT,
- "{",
- BOILERPLATE_1,
- BOILERPLATE_2,
- "$1.setSource(this, \"foo.Bar.foo()\");",
- "foo();",
- "}");
-
- replay();
-
- new OnEventWorker().transform(ct, model);
-
- verify();
- }
-
- @Test
- public void filter_by_event_type()
- {
- ClassTransformation ct = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
- OnEvent annotation = newOnEvent();
-
- String[] eventTypes = new String[]
- { "gnip", "gnop" };
-
- MethodSignature signature = new MethodSignature("foo");
-
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
-
- train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
-
- train_value(annotation, eventTypes);
-
- train_addInjectedField(ct, String[].class, "eventTypes", eventTypes, "_v");
-
- train_component(annotation, new String[0]);
-
- train_getClassName(ct, "foo.Bar");
-
- train_extendMethod(
- ct,
- TransformConstants.HANDLE_COMPONENT_EVENT,
- "{",
- BOILERPLATE_1,
- "if ($1.matchesByEventType(_v))",
- "{",
- BOILERPLATE_2,
- "$1.setSource(this, \"foo.Bar.foo()\");",
- "foo();",
- "}",
- "}");
-
- replay();
-
- new OnEventWorker().transform(ct, model);
-
- verify();
- }
-
- @Test
- public void filter_by_component_id()
- {
- ClassTransformation ct = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
- OnEvent annotation = newOnEvent();
-
- String[] componentIds = new String[]
- { "zork" };
-
- MethodSignature signature = new MethodSignature("foo");
-
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
-
- train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
-
- train_value(annotation, new String[0]);
- train_component(annotation, componentIds);
-
- train_addInjectedField(ct, java.lang.String[].class, "componentIds", componentIds, "_ids");
-
- train_getResourcesFieldName(ct, "_res");
-
- train_getClassName(ct, "foo.Bar");
-
- train_extendMethod(
- ct,
- TransformConstants.HANDLE_COMPONENT_EVENT,
- "{",
- BOILERPLATE_1,
- "if ($1.matchesByComponentId(_res, _ids))",
- "{",
- BOILERPLATE_2,
- "$1.setSource(this, \"foo.Bar.foo()\");",
- "foo();",
- "}",
- "}");
-
- replay();
-
- new OnEventWorker().transform(ct, model);
-
- verify();
- }
-
- @Test
- public void filter_by_both()
- {
- ClassTransformation ct = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
- OnEvent annotation = newOnEvent();
-
- String[] eventTypes = new String[]
- { "gnip", "gnop" };
- String[] componentIds = new String[]
- { "zork" };
-
- MethodSignature signature = new MethodSignature("foo");
-
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
-
- train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
-
- train_value(annotation, eventTypes);
-
- train_addInjectedField(ct, java.lang.String[].class, "eventTypes", eventTypes, "_v");
-
- train_component(annotation, componentIds);
-
- train_addInjectedField(ct, java.lang.String[].class, "componentIds", componentIds, "_ids");
-
- train_getResourcesFieldName(ct, "_res");
-
- train_getClassName(ct, "foo.Bar");
-
- train_extendMethod(
- ct,
- TransformConstants.HANDLE_COMPONENT_EVENT,
- "{",
- BOILERPLATE_1,
- "if ($1.matchesByEventType(_v))",
- "{",
- "if ($1.matchesByComponentId(_res, _ids))",
- "{",
- BOILERPLATE_2,
- "$1.setSource(this, \"foo.Bar.foo()\");",
- "foo();",
- "}",
- "}",
- "}");
-
- replay();
-
- new OnEventWorker().transform(ct, model);
-
- verify();
-
- }
-
- @Test
- public void method_with_non_void_return_value()
- {
- ClassTransformation ct = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
- OnEvent annotation = newOnEvent();
-
- MethodSignature signature = new MethodSignature(Modifier.PRIVATE, "java.lang.String",
- "foo", null, null);
-
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
-
- train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
-
- train_value(annotation, new String[0]);
- train_component(annotation, new String[0]);
-
- train_getClassName(ct, "foo.Bar");
-
- train_extendMethod(
- ct,
- TransformConstants.HANDLE_COMPONENT_EVENT,
- "{",
- BOILERPLATE_1,
- BOILERPLATE_2,
- "$1.setSource(this, \"foo.Bar.foo()\");",
- "if ($1.storeResult(($w) foo())) return true;",
- "}");
-
- replay();
-
- new OnEventWorker().transform(ct, model);
-
- verify();
- }
-
- @Test
- public void method_with_non_primitive_parameter()
- {
- ClassTransformation ct = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
- OnEvent annotation = newOnEvent();
-
- MethodSignature signature = new MethodSignature(Modifier.PRIVATE, "void", "foo",
- new String[]
- { "java.lang.String" }, null);
-
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
-
- train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
-
- train_value(annotation, new String[0]);
- train_component(annotation, new String[0]);
-
- train_getClassName(ct, "foo.Bar");
-
- train_extendMethod(
- ct,
- TransformConstants.HANDLE_COMPONENT_EVENT,
- "{",
- BOILERPLATE_1,
- BOILERPLATE_2,
- "$1.setSource(this, \"foo.Bar.foo(java.lang.String)\");",
- "foo($1.coerceContext(0, \"java.lang.String\"));",
- "}");
-
- replay();
-
- new OnEventWorker().transform(ct, model);
-
- verify();
- }
-
- @Test
- public void method_with_primitive_parameter()
- {
- ClassTransformation ct = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
- OnEvent annotation = newOnEvent();
-
- MethodSignature signature = new MethodSignature(Modifier.PRIVATE, "void", "foo",
- new String[]
- { "boolean" }, null);
-
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
-
- train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
-
- train_value(annotation, new String[0]);
- train_component(annotation, new String[0]);
-
- train_getClassName(ct, "foo.Bar");
-
- train_extendMethod(
- ct,
- TransformConstants.HANDLE_COMPONENT_EVENT,
- "{",
- BOILERPLATE_1,
- BOILERPLATE_2,
- "$1.setSource(this, \"foo.Bar.foo(boolean)\");",
- "foo(((java.lang.Boolean)$1.coerceContext(0, \"java.lang.Boolean\")).booleanValue());",
- "}");
-
- replay();
-
- new OnEventWorker().transform(ct, model);
-
- verify();
-
- }
-
- @Test
- public void method_with_multiple_parameters()
- {
- ClassTransformation ct = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
- OnEvent annotation = newOnEvent();
-
- MethodSignature signature = new MethodSignature(Modifier.PRIVATE, "void", "foo",
- new String[]
- { "java.lang.String", "java.lang.Integer" }, null);
-
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
-
- train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
-
- train_value(annotation, new String[0]);
- train_component(annotation, new String[0]);
-
- train_getClassName(ct, "foo.Bar");
-
- train_extendMethod(
- ct,
- TransformConstants.HANDLE_COMPONENT_EVENT,
- "{",
- BOILERPLATE_1,
- BOILERPLATE_2,
- "$1.setSource(this, \"foo.Bar.foo(java.lang.String, java.lang.Integer)\");",
- "foo($1.coerceContext(0, \"java.lang.String\"), ",
- "$1.coerceContext(1, \"java.lang.Integer\"));",
- "}");
-
- replay();
-
- new OnEventWorker().transform(ct, model);
-
- verify();
-
- }
-
- protected final OnEvent newOnEvent()
- {
- return newMock(OnEvent.class);
- }
-
- protected final void train_getClassName(ClassTransformation ct, String className)
- {
- ct.getClassName();
- setReturnValue(className);
- }
-
- protected final void train_value(OnEvent annotation, String[] values)
- {
- annotation.value();
- setReturnValue(values);
- }
-
- protected final void train_component(OnEvent annotation, String[] values)
- {
- annotation.component();
- setReturnValue(values);
- }
-
- protected final <T extends Annotation> void train_getMethodAnnotation(ClassTransformation ct,
- MethodSignature signature, Class<T> annotationClass, T annotation)
- {
- ct.getMethodAnnotation(signature, annotationClass);
- setReturnValue(annotation);
- }
-}
+import org.apache.tapestry.model.MutableComponentModel;
+import org.apache.tapestry.services.ClassTransformation;
+import org.apache.tapestry.services.MethodSignature;
+import org.apache.tapestry.services.TransformConstants;
+import org.testng.annotations.Test;
+
+/**
+ * I'd prefer to test these in terms of the behavior of the final class, rather than the generated
+ * Javassist method bodies, but that'll have to be saved for later integration tests.
+ */
+public class OnEventWorkerTest extends InternalBaseTestCase
+{
+
+ private static final String BOILERPLATE_1 = "if ($1.isAborted()) return $_;";
+
+ private static final String BOILERPLATE_2 = "$_ = true;";
+
+ @Test
+ public void no_methods_with_annotation()
+ {
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ List<MethodSignature> methods = CollectionFactory.newList();
+ train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+
+ replay();
+
+ new OnEventWorker().transform(ct, model);
+
+ verify();
+ }
+
+ @Test
+ public void minimal_case()
+ {
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+ OnEvent annotation = newOnEvent();
+
+ MethodSignature signature = new MethodSignature("foo");
+
+ List<MethodSignature> methods = Collections.singletonList(signature);
+ train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+
+ train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
+
+ train_value(annotation, new String[0]);
+ train_component(annotation, new String[0]);
+
+ train_getClassName(ct, "foo.Bar");
+
+ train_extendMethod(
+ ct,
+ TransformConstants.HANDLE_COMPONENT_EVENT,
+ "{",
+ BOILERPLATE_1,
+ BOILERPLATE_2,
+ "$1.setSource(this, \"foo.Bar.foo()\");",
+ "foo();",
+ "}");
+
+ replay();
+
+ new OnEventWorker().transform(ct, model);
+
+ verify();
+ }
+
+ @Test
+ public void filter_by_event_type()
+ {
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+ OnEvent annotation = newOnEvent();
+
+ String[] eventTypes = new String[]
+ { "gnip", "gnop" };
+
+ MethodSignature signature = new MethodSignature("foo");
+
+ List<MethodSignature> methods = Collections.singletonList(signature);
+ train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+
+ train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
+
+ train_value(annotation, eventTypes);
+
+ train_addInjectedField(ct, String[].class, "eventTypes", eventTypes, "_v");
+
+ train_component(annotation, new String[0]);
+
+ train_getClassName(ct, "foo.Bar");
+
+ train_extendMethod(
+ ct,
+ TransformConstants.HANDLE_COMPONENT_EVENT,
+ "{",
+ BOILERPLATE_1,
+ "if ($1.matchesByEventType(_v))",
+ "{",
+ BOILERPLATE_2,
+ "$1.setSource(this, \"foo.Bar.foo()\");",
+ "foo();",
+ "}",
+ "}");
+
+ replay();
+
+ new OnEventWorker().transform(ct, model);
+
+ verify();
+ }
+
+ @Test
+ public void filter_by_component_id()
+ {
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+ OnEvent annotation = newOnEvent();
+
+ String[] componentIds = new String[]
+ { "zork" };
+
+ MethodSignature signature = new MethodSignature("foo");
+
+ List<MethodSignature> methods = Collections.singletonList(signature);
+ train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+
+ train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
+
+ train_value(annotation, new String[0]);
+ train_component(annotation, componentIds);
+
+ train_addInjectedField(ct, java.lang.String[].class, "componentIds", componentIds, "_ids");
+
+ train_getResourcesFieldName(ct, "_res");
+
+ train_getClassName(ct, "foo.Bar");
+
+ train_extendMethod(
+ ct,
+ TransformConstants.HANDLE_COMPONENT_EVENT,
+ "{",
+ BOILERPLATE_1,
+ "if ($1.matchesByComponentId(_res, _ids))",
+ "{",
+ BOILERPLATE_2,
+ "$1.setSource(this, \"foo.Bar.foo()\");",
+ "foo();",
+ "}",
+ "}");
+
+ replay();
+
+ new OnEventWorker().transform(ct, model);
+
+ verify();
+ }
+
+ @Test
+ public void filter_by_both()
+ {
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+ OnEvent annotation = newOnEvent();
+
+ String[] eventTypes = new String[]
+ { "gnip", "gnop" };
+ String[] componentIds = new String[]
+ { "zork" };
+
+ MethodSignature signature = new MethodSignature("foo");
+
+ List<MethodSignature> methods = Collections.singletonList(signature);
+ train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+
+ train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
+
+ train_value(annotation, eventTypes);
+
+ train_addInjectedField(ct, java.lang.String[].class, "eventTypes", eventTypes, "_v");
+
+ train_component(annotation, componentIds);
+
+ train_addInjectedField(ct, java.lang.String[].class, "componentIds", componentIds, "_ids");
+
+ train_getResourcesFieldName(ct, "_res");
+
+ train_getClassName(ct, "foo.Bar");
+
+ train_extendMethod(
+ ct,
+ TransformConstants.HANDLE_COMPONENT_EVENT,
+ "{",
+ BOILERPLATE_1,
+ "if ($1.matchesByEventType(_v))",
+ "{",
+ "if ($1.matchesByComponentId(_res, _ids))",
+ "{",
+ BOILERPLATE_2,
+ "$1.setSource(this, \"foo.Bar.foo()\");",
+ "foo();",
+ "}",
+ "}",
+ "}");
+
+ replay();
+
+ new OnEventWorker().transform(ct, model);
+
+ verify();
+
+ }
+
+ @Test
+ public void method_with_non_void_return_value()
+ {
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+ OnEvent annotation = newOnEvent();
+
+ MethodSignature signature = new MethodSignature(Modifier.PRIVATE, "java.lang.String",
+ "foo", null, null);
+
+ List<MethodSignature> methods = Collections.singletonList(signature);
+ train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+
+ train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
+
+ train_value(annotation, new String[0]);
+ train_component(annotation, new String[0]);
+
+ train_getClassName(ct, "foo.Bar");
+
+ train_extendMethod(
+ ct,
+ TransformConstants.HANDLE_COMPONENT_EVENT,
+ "{",
+ BOILERPLATE_1,
+ BOILERPLATE_2,
+ "$1.setSource(this, \"foo.Bar.foo()\");",
+ "if ($1.storeResult(($w) foo())) return true;",
+ "}");
+
+ replay();
+
+ new OnEventWorker().transform(ct, model);
+
+ verify();
+ }
+
+ @Test
+ public void method_with_non_primitive_parameter()
+ {
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+ OnEvent annotation = newOnEvent();
+
+ MethodSignature signature = new MethodSignature(Modifier.PRIVATE, "void", "foo",
+ new String[]
+ { "java.lang.String" }, null);
+
+ List<MethodSignature> methods = Collections.singletonList(signature);
+ train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+
+ train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
+
+ train_value(annotation, new String[0]);
+ train_component(annotation, new String[0]);
+
+ train_getClassName(ct, "foo.Bar");
+
+ train_extendMethod(
+ ct,
+ TransformConstants.HANDLE_COMPONENT_EVENT,
+ "{",
+ BOILERPLATE_1,
+ BOILERPLATE_2,
+ "$1.setSource(this, \"foo.Bar.foo(java.lang.String)\");",
+ "foo($1.coerceContext(0, \"java.lang.String\"));",
+ "}");
+
+ replay();
+
+ new OnEventWorker().transform(ct, model);
+
+ verify();
+ }
+
+ @Test
+ public void method_with_primitive_parameter()
+ {
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+ OnEvent annotation = newOnEvent();
+
+ MethodSignature signature = new MethodSignature(Modifier.PRIVATE, "void", "foo",
+ new String[]
+ { "boolean" }, null);
+
+ List<MethodSignature> methods = Collections.singletonList(signature);
+ train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+
+ train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
+
+ train_value(annotation, new String[0]);
+ train_component(annotation, new String[0]);
+
+ train_getClassName(ct, "foo.Bar");
+
+ train_extendMethod(
+ ct,
+ TransformConstants.HANDLE_COMPONENT_EVENT,
+ "{",
+ BOILERPLATE_1,
+ BOILERPLATE_2,
+ "$1.setSource(this, \"foo.Bar.foo(boolean)\");",
+ "foo(((java.lang.Boolean)$1.coerceContext(0, \"java.lang.Boolean\")).booleanValue());",
+ "}");
+
+ replay();
+
+ new OnEventWorker().transform(ct, model);
+
+ verify();
+
+ }
+
+ @Test
+ public void method_with_multiple_parameters()
+ {
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+ OnEvent annotation = newOnEvent();
+
+ MethodSignature signature = new MethodSignature(Modifier.PRIVATE, "void", "foo",
+ new String[]
+ { "java.lang.String", "java.lang.Integer" }, null);
+
+ List<MethodSignature> methods = Collections.singletonList(signature);
+ train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+
+ train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
+
+ train_value(annotation, new String[0]);
+ train_component(annotation, new String[0]);
+
+ train_getClassName(ct, "foo.Bar");
+
+ train_extendMethod(
+ ct,
+ TransformConstants.HANDLE_COMPONENT_EVENT,
+ "{",
+ BOILERPLATE_1,
+ BOILERPLATE_2,
+ "$1.setSource(this, \"foo.Bar.foo(java.lang.String, java.lang.Integer)\");",
+ "foo($1.coerceContext(0, \"java.lang.String\"), ",
+ "$1.coerceContext(1, \"java.lang.Integer\"));",
+ "}");
+
+ replay();
+
+ new OnEventWorker().transform(ct, model);
+
+ verify();
+
+ }
+
+ protected final OnEvent newOnEvent()
+ {
+ return newMock(OnEvent.class);
+ }
+
+ protected final void train_getClassName(ClassTransformation ct, String className)
+ {
+ expect(ct.getClassName()).andReturn(className);
+ }
+
+ protected final void train_value(OnEvent annotation, String[] values)
+ {
+ expect(annotation.value()).andReturn(values);
+ }
+
+ protected final void train_component(OnEvent annotation, String[] values)
+ {
+ expect(annotation.component()).andReturn(values);
+ }
+
+ protected final <T extends Annotation> void train_getMethodAnnotation(ClassTransformation ct,
+ MethodSignature signature, Class<T> annotationClass, T annotation)
+ {
+ expect(ct.getMethodAnnotation(signature, annotationClass)).andReturn(annotation);
+ }
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PagePoolImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PagePoolImplTest.java?view=diff&rev=478428&r1=478427&r2=478428
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PagePoolImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PagePoolImplTest.java Wed Nov 22 17:49:47 2006
@@ -12,126 +12,124 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.services;
-
-import static org.easymock.EasyMock.contains;
-
-import java.util.Locale;
-
-import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.structure.Page;
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.testng.annotations.Test;
-
-/**
- *
- */
-public class PagePoolImplTest extends InternalBaseTestCase
-{
- private static final String PAGE_NAME = "com.foo.pages.MyPage";
-
- // This will change once we start supporting application localization.
-
- private final Locale _locale = Locale.getDefault();
-
- @Test
- public void checkout_when_page_list_is_null()
- {
- PageLoader loader = newPageLoader();
- Page page = newPage();
-
- train_loadPage(loader, PAGE_NAME, _locale, page);
-
- replay();
-
- PagePool pool = new PagePoolImpl(null, loader);
-
- assertSame(page, pool.checkout(PAGE_NAME));
-
- verify();
- }
-
- @Test
- public void checkout_when_page_list_is_empty()
- {
- PageLoader loader = newPageLoader();
- Page page1 = newPage();
- Page page2 = newPage();
-
- train_detached(page1, false);
- train_getName(page1, PAGE_NAME);
-
- train_loadPage(loader, PAGE_NAME, _locale, page2);
-
- replay();
-
- PagePool pool = new PagePoolImpl(null, loader);
-
- pool.release(page1);
-
- assertSame(page1, pool.checkout(PAGE_NAME));
-
- // Now the list is empty, but not null.
-
- assertSame(page2, pool.checkout(PAGE_NAME));
-
- verify();
- }
-
- protected final void train_detached(Page page, boolean dirty)
- {
- page.detached();
-
- setReturnValue(dirty);
- }
-
- @Test
- public void release_last_in_first_out()
- {
- PageLoader loader = newPageLoader();
- Page page1 = newPage();
- Page page2 = newPage();
-
- train_detached(page1, false);
-
- train_getName(page1, PAGE_NAME);
-
- train_detached(page2, false);
-
- train_getName(page2, PAGE_NAME);
-
- replay();
-
- PagePool pool = new PagePoolImpl(null, loader);
-
- pool.release(page1);
- pool.release(page2);
-
- assertSame(page2, pool.checkout(PAGE_NAME));
- assertSame(page1, pool.checkout(PAGE_NAME));
-
- verify();
- }
-
- @Test
- public void dirty_pages_are_not_pooled()
- {
- PageLoader loader = newPageLoader();
- Page page = newPage();
- Log log = newLog();
-
- train_detached(page, true);
-
- log.error(contains("is dirty, and will be discarded"));
-
- // The fact that we don't ask the page for its name is our clue that it is not being cached.
-
- replay();
-
- PagePool pool = new PagePoolImpl(log, loader);
-
- pool.release(page);
-
- verify();
- }
-}
+package org.apache.tapestry.internal.services;
+
+import static org.easymock.EasyMock.contains;
+
+import java.util.Locale;
+
+import org.apache.commons.logging.Log;
+import org.apache.tapestry.internal.structure.Page;
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.testng.annotations.Test;
+
+/**
+ *
+ */
+public class PagePoolImplTest extends InternalBaseTestCase
+{
+ private static final String PAGE_NAME = "com.foo.pages.MyPage";
+
+ // This will change once we start supporting application localization.
+
+ private final Locale _locale = Locale.getDefault();
+
+ @Test
+ public void checkout_when_page_list_is_null()
+ {
+ PageLoader loader = newPageLoader();
+ Page page = newPage();
+
+ train_loadPage(loader, PAGE_NAME, _locale, page);
+
+ replay();
+
+ PagePool pool = new PagePoolImpl(null, loader);
+
+ assertSame(page, pool.checkout(PAGE_NAME));
+
+ verify();
+ }
+
+ @Test
+ public void checkout_when_page_list_is_empty()
+ {
+ PageLoader loader = newPageLoader();
+ Page page1 = newPage();
+ Page page2 = newPage();
+
+ train_detached(page1, false);
+ train_getName(page1, PAGE_NAME);
+
+ train_loadPage(loader, PAGE_NAME, _locale, page2);
+
+ replay();
+
+ PagePool pool = new PagePoolImpl(null, loader);
+
+ pool.release(page1);
+
+ assertSame(page1, pool.checkout(PAGE_NAME));
+
+ // Now the list is empty, but not null.
+
+ assertSame(page2, pool.checkout(PAGE_NAME));
+
+ verify();
+ }
+
+ protected final void train_detached(Page page, boolean dirty)
+ {
+ expect(page.detached()).andReturn(dirty);
+ }
+
+ @Test
+ public void release_last_in_first_out()
+ {
+ PageLoader loader = newPageLoader();
+ Page page1 = newPage();
+ Page page2 = newPage();
+
+ train_detached(page1, false);
+
+ train_getName(page1, PAGE_NAME);
+
+ train_detached(page2, false);
+
+ train_getName(page2, PAGE_NAME);
+
+ replay();
+
+ PagePool pool = new PagePoolImpl(null, loader);
+
+ pool.release(page1);
+ pool.release(page2);
+
+ assertSame(page2, pool.checkout(PAGE_NAME));
+ assertSame(page1, pool.checkout(PAGE_NAME));
+
+ verify();
+ }
+
+ @Test
+ public void dirty_pages_are_not_pooled()
+ {
+ PageLoader loader = newPageLoader();
+ Page page = newPage();
+ Log log = newLog();
+
+ train_detached(page, true);
+
+ log.error(contains("is dirty, and will be discarded"));
+
+ // The fact that we don't ask the page for its name is our clue that it is not being cached.
+
+ replay();
+
+ PagePool pool = new PagePoolImpl(log, loader);
+
+ pool.release(page);
+
+ verify();
+ }
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java?view=diff&rev=478428&r1=478427&r2=478428
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java Wed Nov 22 17:49:47 2006
@@ -111,15 +111,14 @@
private void train_triggerEvent(ComponentPageElement element, String eventType,
Object[] context, ComponentEventHandler handler, boolean handled)
{
- element.triggerEvent(EasyMock.eq(eventType), EasyMock.aryEq(context), EasyMock
- .same(handler));
- setReturnValue(handled);
+ expect(
+ element.triggerEvent(EasyMock.eq(eventType), EasyMock.aryEq(context), EasyMock
+ .same(handler))).andReturn(handled);
}
protected final void train_get(RequestPageCache cache, String pageName, Page page)
{
- cache.get(pageName);
- setReturnValue(page).atLeastOnce();
+ expect(cache.get(pageName)).andReturn(page).atLeastOnce();
}
protected final PageResponseRenderer newPageResponseRenderer()
@@ -129,8 +128,7 @@
protected final void train_getPath(WebRequest request, String path)
{
- request.getPath();
- setReturnValue(path).atLeastOnce();
+ expect(request.getPath()).andReturn(path).atLeastOnce();
}
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/RequestPageCacheImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/RequestPageCacheImplTest.java?view=diff&rev=478428&r1=478427&r2=478428
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/RequestPageCacheImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/RequestPageCacheImplTest.java Wed Nov 22 17:49:47 2006
@@ -12,97 +12,95 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.services;
-
-import org.apache.tapestry.internal.structure.Page;
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.apache.tapestry.services.ComponentClassResolver;
-import org.testng.annotations.Test;
-
-/**
- *
- */
-public class RequestPageCacheImplTest extends InternalBaseTestCase
-{
- private static final String PAGE_NAME = "MyPage";
-
- private static final String PAGE_CLASS_NAME = "com.foo.pages.MyPage";
-
- @Test
- public void get_is_cached()
- {
- ComponentClassResolver resolver = newComponentClassResolver();
- PagePool pool = newPagePool();
- Page page = newPage();
-
- train_resolvePageNameToClassName(resolver, PAGE_NAME, PAGE_CLASS_NAME);
-
- pool.checkout(PAGE_CLASS_NAME);
- setReturnValue(page);
-
- page.attached();
-
- replay();
-
- RequestPageCacheImpl cache = new RequestPageCacheImpl(resolver, pool);
-
- assertSame(cache.get(PAGE_NAME), page);
-
- verify();
-
- // Asking for a page always resolves the name to a class (fortunately,
- // this is cached by resolver).
-
- train_resolvePageNameToClassName(resolver, PAGE_NAME, PAGE_CLASS_NAME);
-
- replay();
-
- // Again, same object, but no PagePool this time.
- assertSame(cache.get(PAGE_NAME), page);
-
- verify();
-
- pool.release(page);
-
- replay();
-
- // Now, trigger the release()
-
- cache.threadDidCleanup();
-
- verify();
- }
-
- @Test
- public void page_does_not_exist()
- {
- ComponentClassResolver resolver = newComponentClassResolver();
- PagePool pool = newPagePool();
-
- train_resolvePageNameToClassName(resolver, PAGE_NAME, null);
-
- replay();
-
- try
- {
- RequestPageCacheImpl cache = new RequestPageCacheImpl(resolver, pool);
-
- cache.get(PAGE_NAME);
-
- unreachable();
- }
- catch (RuntimeException ex)
- {
- assertEquals(ex.getMessage(), "Page 'MyPage' is not defined by this application.");
- }
-
- verify();
- }
-
- protected final void train_resolvePageNameToClassName(ComponentClassResolver resolver,
- String pageName, String className)
- {
- resolver.resolvePageNameToClassName(pageName);
- setReturnValue(className);
- }
-}
+package org.apache.tapestry.internal.services;
+
+import org.apache.tapestry.internal.structure.Page;
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.services.ComponentClassResolver;
+import org.testng.annotations.Test;
+
+/**
+ *
+ */
+public class RequestPageCacheImplTest extends InternalBaseTestCase
+{
+ private static final String PAGE_NAME = "MyPage";
+
+ private static final String PAGE_CLASS_NAME = "com.foo.pages.MyPage";
+
+ @Test
+ public void get_is_cached()
+ {
+ ComponentClassResolver resolver = newComponentClassResolver();
+ PagePool pool = newPagePool();
+ Page page = newPage();
+
+ train_resolvePageNameToClassName(resolver, PAGE_NAME, PAGE_CLASS_NAME);
+
+ expect(pool.checkout(PAGE_CLASS_NAME)).andReturn(page);
+
+ page.attached();
+
+ replay();
+
+ RequestPageCacheImpl cache = new RequestPageCacheImpl(resolver, pool);
+
+ assertSame(cache.get(PAGE_NAME), page);
+
+ verify();
+
+ // Asking for a page always resolves the name to a class (fortunately,
+ // this is cached by resolver).
+
+ train_resolvePageNameToClassName(resolver, PAGE_NAME, PAGE_CLASS_NAME);
+
+ replay();
+
+ // Again, same object, but no PagePool this time.
+ assertSame(cache.get(PAGE_NAME), page);
+
+ verify();
+
+ pool.release(page);
+
+ replay();
+
+ // Now, trigger the release()
+
+ cache.threadDidCleanup();
+
+ verify();
+ }
+
+ @Test
+ public void page_does_not_exist()
+ {
+ ComponentClassResolver resolver = newComponentClassResolver();
+ PagePool pool = newPagePool();
+
+ train_resolvePageNameToClassName(resolver, PAGE_NAME, null);
+
+ replay();
+
+ try
+ {
+ RequestPageCacheImpl cache = new RequestPageCacheImpl(resolver, pool);
+
+ cache.get(PAGE_NAME);
+
+ unreachable();
+ }
+ catch (RuntimeException ex)
+ {
+ assertEquals(ex.getMessage(), "Page 'MyPage' is not defined by this application.");
+ }
+
+ verify();
+ }
+
+ protected final void train_resolvePageNameToClassName(ComponentClassResolver resolver,
+ String pageName, String className)
+ {
+ expect(resolver.resolvePageNameToClassName(pageName)).andReturn(className);
+ }
+}