You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2007/01/03 22:51:27 UTC
svn commit: r492319 - in /tapestry/tapestry5/tapestry-ioc/trunk/src:
main/java/org/apache/tapestry/ioc/ main/java/org/apache/tapestry/ioc/test/
test/java/org/apache/tapestry/ioc/internal/
test/java/org/apache/tapestry/ioc/internal/services/
Author: hlship
Date: Wed Jan 3 13:51:27 2007
New Revision: 492319
URL: http://svn.apache.org/viewvc?view=rev&rev=492319
Log:
Move a few common testing factory and trainer methods up to IOCTestCase.
Modified:
tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/Resource.java
tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/test/IOCTestCase.java
tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/test/TestBase.java
tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/DefaultModuleDefImplTest.java
tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ThreadCleanupHubImplTest.java
Modified: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/Resource.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/Resource.java?view=diff&rev=492319&r1=492318&r2=492319
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/Resource.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/Resource.java Wed Jan 3 13:51:27 2007
@@ -30,7 +30,7 @@
/** Returns the URL for the resource, or null if it does not exist. */
URL toURL();
- /** Returns a localized version of the resource. */
+ /** Returns a localized version of the resource. May return null if no such resource exists. */
Resource forLocale(Locale locale);
/**
@@ -46,7 +46,7 @@
* may return null.
*
* @param extension
- * to apply to the resource
+ * to apply to the resource, such as "html" or "properties"
* @return the new resource
*/
Resource withExtension(String extension);
Modified: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/test/IOCTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/test/IOCTestCase.java?view=diff&rev=492319&r1=492318&r2=492319
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/test/IOCTestCase.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/test/IOCTestCase.java Wed Jan 3 13:51:27 2007
@@ -15,12 +15,15 @@
package org.apache.tapestry.ioc.test;
import java.lang.reflect.Method;
+import java.net.URL;
+import java.util.Locale;
import org.apache.commons.logging.Log;
import org.apache.tapestry.ioc.Configuration;
import org.apache.tapestry.ioc.Location;
import org.apache.tapestry.ioc.LogSource;
import org.apache.tapestry.ioc.MappedConfiguration;
+import org.apache.tapestry.ioc.Messages;
import org.apache.tapestry.ioc.ObjectCreator;
import org.apache.tapestry.ioc.ObjectProvider;
import org.apache.tapestry.ioc.OrderedConfiguration;
@@ -275,5 +278,35 @@
protected final ThreadLocale newThreadLocale()
{
return newMock(ThreadLocale.class);
+ }
+
+ protected final Messages newMessages()
+ {
+ return newMock(Messages.class);
+ }
+
+ protected final void train_toURL(Resource resource, URL url)
+ {
+ expect(resource.toURL()).andReturn(url).atLeastOnce();
+ }
+
+ protected final void train_getPath(Resource r, String path)
+ {
+ expect(r.getPath()).andReturn(path).atLeastOnce();
+ }
+
+ protected final void train_getLocale(ThreadLocale threadLocale, Locale locale)
+ {
+ expect(threadLocale.getLocale()).andReturn(locale);
+ }
+
+ protected final Log newLog()
+ {
+ return newMock(Log.class);
+ }
+
+ protected final void train_isDebugEnabled(Log log, boolean debugEnabled)
+ {
+ expect(log.isDebugEnabled()).andReturn(debugEnabled);
}
}
Modified: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/test/TestBase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/test/TestBase.java?view=diff&rev=492319&r1=492318&r2=492319
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/test/TestBase.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/test/TestBase.java Wed Jan 3 13:51:27 2007
@@ -14,7 +14,6 @@
package org.apache.tapestry.ioc.test;
-import org.apache.commons.logging.Log;
import org.easymock.EasyMock;
import org.easymock.IExpectationSetters;
import org.easymock.IMocksControl;
@@ -124,16 +123,6 @@
protected final void unreachable()
{
fail("This code should not be reachable.");
- }
-
- protected final Log newLog()
- {
- return newMock(Log.class);
- }
-
- protected final void train_isDebugEnabled(Log log, boolean debugEnabled)
- {
- expect(log.isDebugEnabled()).andReturn(debugEnabled);
}
@SuppressWarnings("unchecked")
Modified: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/DefaultModuleDefImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/DefaultModuleDefImplTest.java?view=diff&rev=492319&r1=492318&r2=492319
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/DefaultModuleDefImplTest.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/DefaultModuleDefImplTest.java Wed Jan 3 13:51:27 2007
@@ -12,347 +12,334 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.ioc.internal;
-
+package org.apache.tapestry.ioc.internal;
+
import static org.apache.tapestry.ioc.internal.IOCMessages.buildMethodConflict;
-
-import java.lang.reflect.Method;
-import java.math.BigDecimal;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.tapestry.ioc.IOCConstants;
-import org.apache.tapestry.ioc.def.ContributionDef;
-import org.apache.tapestry.ioc.def.DecoratorDef;
-import org.apache.tapestry.ioc.def.ModuleDef;
-import org.apache.tapestry.ioc.def.ServiceDef;
+
+import java.lang.reflect.Method;
+import java.math.BigDecimal;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.tapestry.ioc.IOCConstants;
+import org.apache.tapestry.ioc.def.ContributionDef;
+import org.apache.tapestry.ioc.def.DecoratorDef;
+import org.apache.tapestry.ioc.def.ModuleDef;
+import org.apache.tapestry.ioc.def.ServiceDef;
import org.apache.tapestry.ioc.internal.DefaultModuleDefImpl;
import org.apache.tapestry.ioc.internal.IOCMessages;
import org.apache.tapestry.ioc.internal.util.InternalUtils;
+import org.apache.tapestry.ioc.test.IOCTestCase;
import org.apache.tapestry.ioc.test.TestBase;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-/**
- *
- */
-public class DefaultModuleDefImplTest extends TestBase
-{
- @Test
- public void module_builder_without_id()
- {
- Log log = newLog();
-
- replay();
-
- // BigDecimal is arbitrary, any class would do.
-
- ModuleDef md = new DefaultModuleDefImpl(BigDecimal.class, log);
-
- Assert.assertEquals("java.math", md.getModuleId());
-
- verify();
- }
-
- @Test
- public void module_builder_with_id()
- {
- Log log = newLog();
-
- replay();
-
- // BigDecimal is arbitrary, any class would do.
-
- ModuleDef md = new DefaultModuleDefImpl(ModuleBuilderWithId.class, log);
-
- Assert.assertEquals("tapestry.ioc", md.getModuleId());
-
- verify();
- }
-
- @Test
- public void simple_module() throws Exception
- {
- String className = SimpleModule.class.getName();
-
- Log log = newLog();
-
- replay();
-
- // BigDecimal is arbitrary, any class would do.
-
- ModuleDef md = new DefaultModuleDefImpl(SimpleModule.class, log);
-
- Set<String> ids = md.getServiceIds();
-
- assertEquals(ids.size(), 3);
- assertTrue(ids.contains("ioc.Fred"));
- assertTrue(ids.contains("ioc.Barney"));
- assertTrue(ids.contains("ioc.Wilma"));
-
- ServiceDef sd = md.getServiceDef("ioc.Fred");
-
- assertEquals(sd.getServiceId(), "ioc.Fred");
-
- assertEquals(sd.getServiceInterface(), FieService.class);
-
- assertEquals(sd.toString(), className + ".buildFred()");
- assertEquals(sd.getServiceLifeycle(), IOCConstants.DEFAULT_LIFECYCLE);
- assertEquals(sd.isPrivate(), false);
- assertEquals(sd.isEagerLoad(), false);
-
- sd = md.getServiceDef("ioc.Barney");
-
- assertEquals(sd.getServiceId(), "ioc.Barney");
-
- assertEquals(sd.getServiceInterface(), FoeService.class);
-
- assertEquals(sd.toString(), className + ".buildBarney()");
- assertEquals(sd.getServiceLifeycle(), "threaded");
- assertEquals(sd.isPrivate(), true);
-
- sd = md.getServiceDef("ioc.Wilma");
- assertEquals(sd.isEagerLoad(), true);
-
- // Now the decorator method.
-
- Set<DecoratorDef> defs = md.getDecoratorDefs();
-
- assertEquals(defs.size(), 1);
-
- DecoratorDef dd = defs.iterator().next();
-
- assertEquals(dd.getDecoratorId(), "ioc.Logging");
- assertEquals(dd.toString(), className + ".decorateLogging(Class, Object)");
-
- verify();
-
- }
-
- /** Two different methods both claim to build the same service. */
- @Test
- public void service_id_conflict() throws Exception
- {
- Method conflictMethod = ServiceIdConflictMethodModule.class.getMethod("buildFred");
- String expectedMethod = InternalUtils.asString(ServiceIdConflictMethodModule.class
- .getMethod("buildFred", Object.class));
-
- Log log = newLog();
-
- log.warn(buildMethodConflict(conflictMethod, expectedMethod), null);
-
- replay();
-
- // BigDecimal is arbitrary, any class would do.
-
- ModuleDef md = new DefaultModuleDefImpl(ServiceIdConflictMethodModule.class, log);
-
- Set<String> ids = md.getServiceIds();
-
- assertEquals(ids.size(), 1);
- assertTrue(ids.contains("ioc.Fred"));
-
- ServiceDef sd = md.getServiceDef("ioc.Fred");
-
- assertEquals(sd.getServiceId(), "ioc.Fred");
-
- assertEquals(sd.getServiceInterface(), FieService.class);
-
- // The methods are considered in ascending order, by name, then descending order, by
- // parameter count. So the grinder will latch onto the method that takes a parameter,
- // and consider the other method (with no parameters) the conflict.
-
- assertEquals(sd.toString(), expectedMethod.toString());
-
- verify();
- }
-
- @Test
- public void builder_method_returns_void() throws Exception
- {
- Method m = VoidBuilderMethodModule.class.getMethod("buildNull");
-
- Log log = newLog();
-
- log.warn(IOCMessages.buildMethodWrongReturnType(m), null);
-
- replay();
-
- ModuleDef md = new DefaultModuleDefImpl(VoidBuilderMethodModule.class, log);
-
- assertTrue(md.getServiceIds().isEmpty());
-
- verify();
- }
-
- @Test
- public void decorator_method_returns_void() throws Exception
- {
- invalidDecoratorMethod(VoidDecoratorMethodModule.class, "decorateVoid");
- }
-
- private void invalidDecoratorMethod(Class moduleClass, String methodName)
- throws NoSuchMethodException
- {
- Method m = moduleClass.getMethod(methodName, Object.class);
-
- Log log = newLog();
-
- log.warn(IOCMessages.decoratorMethodWrongReturnType(m), null);
-
- replay();
-
- ModuleDef md = new DefaultModuleDefImpl(moduleClass, log);
-
- assertTrue(md.getDecoratorDefs().isEmpty());
-
- verify();
- }
-
- @Test
- public void decorator_method_returns_primitive() throws Exception
- {
- invalidDecoratorMethod(PrimitiveDecoratorMethodModule.class, "decoratePrimitive");
- }
-
- @Test
- public void decorator_method_returns_array() throws Exception
- {
- invalidDecoratorMethod(ArrayDecoratorMethodModule.class, "decorateArray");
- }
-
- @Test
- public void decorator_method_does_not_include_delegate_parameter() throws Exception
- {
- Class moduleClass = NoDelegateDecoratorMethodModule.class;
- Method m = moduleClass.getMethod("decorateNoDelegate");
-
- Log log = newLog();
-
- log.warn(IOCMessages.decoratorMethodNeedsDelegateParameter(m), null);
-
- replay();
-
- ModuleDef md = new DefaultModuleDefImpl(moduleClass, log);
-
- assertTrue(md.getDecoratorDefs().isEmpty());
-
- verify();
- }
-
- @Test
- public void contribution_without_annotation()
- {
- attemptConfigurationMethod(
- SimpleModule.class,
- "ioc.Barney",
- "contributeBarney(Configuration)");
- }
-
- @Test
- public void contribution_with_annotation()
- {
- attemptConfigurationMethod(
- ConfigurationWithContributeAnnotationModule.class,
- "ioc.test.Fred",
- "contributeSomething(Configuration)");
-
- }
-
- @Test
- public void contribution_with_annotation_to_other_module()
- {
- attemptConfigurationMethod(
- ConfigurationWithAnnotationOtherModule.class,
- "some.module.Wilma",
- "contributeOtherModule(Configuration)");
- }
-
- @Test
- public void ordered_contribution_method()
- {
- attemptConfigurationMethod(
- OrderedConfigurationModule.class,
- "ioc.test.Ordered",
- "contributeOrdered(OrderedConfiguration)");
- }
-
- @Test
- public void mapped_contribution_method()
- {
- attemptConfigurationMethod(
- MappedConfigurationModule.class,
- "ioc.test.Mapped",
- "contributeMapped(MappedConfiguration)");
- }
-
- private void attemptConfigurationMethod(Class moduleClass, String expectedServiceId,
- String expectedMethodSignature)
- {
- Log log = newLog();
-
- replay();
-
- ModuleDef md = new DefaultModuleDefImpl(moduleClass, log);
-
- Set<ContributionDef> defs = md.getContributionDefs();
-
- assertEquals(defs.size(), 1);
-
- ContributionDef cd = defs.iterator().next();
-
- // The target service id is derived from the method name
-
- assertEquals(cd.getServiceId(), expectedServiceId);
- assertEquals(cd.toString(), moduleClass.getName() + "." + expectedMethodSignature);
-
- verify();
- }
-
- @Test
- public void contribution_with_too_many_parameters() throws Exception
- {
- Class moduleClass = TooManyContributionParametersModule.class;
- Method m = findMethod(moduleClass, "contributeTooMany");
-
- Log log = newLog();
- log.warn(IOCMessages.tooManyContributionParameters(m));
-
- replay();
-
- ModuleDef md = new DefaultModuleDefImpl(moduleClass, log);
-
- assertTrue(md.getContributionDefs().isEmpty());
-
- verify();
- }
-
- @Test
- public void contribution_with_no_contribution_parameter() throws Exception
- {
- Class moduleClass = NoUsableContributionParameterModule.class;
- Method m = findMethod(moduleClass, "contributeNoParameter");
-
- Log log = newLog();
- log.warn(IOCMessages.noContributionParameter(m));
-
- replay();
-
- ModuleDef md = new DefaultModuleDefImpl(moduleClass, log);
-
- assertTrue(md.getContributionDefs().isEmpty());
-
- verify();
- }
-
- private Method findMethod(Class containingClass, String methodName)
- {
- for (Method method : containingClass.getMethods())
- {
- if (method.getName().equals(methodName))
- return method;
- }
-
- throw new IllegalArgumentException(methodName);
- }
-}
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class DefaultModuleDefImplTest extends IOCTestCase
+{
+ @Test
+ public void module_builder_without_id()
+ {
+ Log log = newLog();
+
+ replay();
+
+ // BigDecimal is arbitrary, any class would do.
+
+ ModuleDef md = new DefaultModuleDefImpl(BigDecimal.class, log);
+
+ Assert.assertEquals("java.math", md.getModuleId());
+
+ verify();
+ }
+
+ @Test
+ public void module_builder_with_id()
+ {
+ Log log = newLog();
+
+ replay();
+
+ // BigDecimal is arbitrary, any class would do.
+
+ ModuleDef md = new DefaultModuleDefImpl(ModuleBuilderWithId.class, log);
+
+ Assert.assertEquals("tapestry.ioc", md.getModuleId());
+
+ verify();
+ }
+
+ @Test
+ public void simple_module() throws Exception
+ {
+ String className = SimpleModule.class.getName();
+
+ Log log = newLog();
+
+ replay();
+
+ // BigDecimal is arbitrary, any class would do.
+
+ ModuleDef md = new DefaultModuleDefImpl(SimpleModule.class, log);
+
+ Set<String> ids = md.getServiceIds();
+
+ assertEquals(ids.size(), 3);
+ assertTrue(ids.contains("ioc.Fred"));
+ assertTrue(ids.contains("ioc.Barney"));
+ assertTrue(ids.contains("ioc.Wilma"));
+
+ ServiceDef sd = md.getServiceDef("ioc.Fred");
+
+ assertEquals(sd.getServiceId(), "ioc.Fred");
+
+ assertEquals(sd.getServiceInterface(), FieService.class);
+
+ assertEquals(sd.toString(), className + ".buildFred()");
+ assertEquals(sd.getServiceLifeycle(), IOCConstants.DEFAULT_LIFECYCLE);
+ assertEquals(sd.isPrivate(), false);
+ assertEquals(sd.isEagerLoad(), false);
+
+ sd = md.getServiceDef("ioc.Barney");
+
+ assertEquals(sd.getServiceId(), "ioc.Barney");
+
+ assertEquals(sd.getServiceInterface(), FoeService.class);
+
+ assertEquals(sd.toString(), className + ".buildBarney()");
+ assertEquals(sd.getServiceLifeycle(), "threaded");
+ assertEquals(sd.isPrivate(), true);
+
+ sd = md.getServiceDef("ioc.Wilma");
+ assertEquals(sd.isEagerLoad(), true);
+
+ // Now the decorator method.
+
+ Set<DecoratorDef> defs = md.getDecoratorDefs();
+
+ assertEquals(defs.size(), 1);
+
+ DecoratorDef dd = defs.iterator().next();
+
+ assertEquals(dd.getDecoratorId(), "ioc.Logging");
+ assertEquals(dd.toString(), className + ".decorateLogging(Class, Object)");
+
+ verify();
+
+ }
+
+ /** Two different methods both claim to build the same service. */
+ @Test
+ public void service_id_conflict() throws Exception
+ {
+ Method conflictMethod = ServiceIdConflictMethodModule.class.getMethod("buildFred");
+ String expectedMethod = InternalUtils.asString(ServiceIdConflictMethodModule.class
+ .getMethod("buildFred", Object.class));
+
+ Log log = newLog();
+
+ log.warn(buildMethodConflict(conflictMethod, expectedMethod), null);
+
+ replay();
+
+ // BigDecimal is arbitrary, any class would do.
+
+ ModuleDef md = new DefaultModuleDefImpl(ServiceIdConflictMethodModule.class, log);
+
+ Set<String> ids = md.getServiceIds();
+
+ assertEquals(ids.size(), 1);
+ assertTrue(ids.contains("ioc.Fred"));
+
+ ServiceDef sd = md.getServiceDef("ioc.Fred");
+
+ assertEquals(sd.getServiceId(), "ioc.Fred");
+
+ assertEquals(sd.getServiceInterface(), FieService.class);
+
+ // The methods are considered in ascending order, by name, then descending order, by
+ // parameter count. So the grinder will latch onto the method that takes a parameter,
+ // and consider the other method (with no parameters) the conflict.
+
+ assertEquals(sd.toString(), expectedMethod.toString());
+
+ verify();
+ }
+
+ @Test
+ public void builder_method_returns_void() throws Exception
+ {
+ Method m = VoidBuilderMethodModule.class.getMethod("buildNull");
+
+ Log log = newLog();
+
+ log.warn(IOCMessages.buildMethodWrongReturnType(m), null);
+
+ replay();
+
+ ModuleDef md = new DefaultModuleDefImpl(VoidBuilderMethodModule.class, log);
+
+ assertTrue(md.getServiceIds().isEmpty());
+
+ verify();
+ }
+
+ @Test
+ public void decorator_method_returns_void() throws Exception
+ {
+ invalidDecoratorMethod(VoidDecoratorMethodModule.class, "decorateVoid");
+ }
+
+ private void invalidDecoratorMethod(Class moduleClass, String methodName)
+ throws NoSuchMethodException
+ {
+ Method m = moduleClass.getMethod(methodName, Object.class);
+
+ Log log = newLog();
+
+ log.warn(IOCMessages.decoratorMethodWrongReturnType(m), null);
+
+ replay();
+
+ ModuleDef md = new DefaultModuleDefImpl(moduleClass, log);
+
+ assertTrue(md.getDecoratorDefs().isEmpty());
+
+ verify();
+ }
+
+ @Test
+ public void decorator_method_returns_primitive() throws Exception
+ {
+ invalidDecoratorMethod(PrimitiveDecoratorMethodModule.class, "decoratePrimitive");
+ }
+
+ @Test
+ public void decorator_method_returns_array() throws Exception
+ {
+ invalidDecoratorMethod(ArrayDecoratorMethodModule.class, "decorateArray");
+ }
+
+ @Test
+ public void decorator_method_does_not_include_delegate_parameter() throws Exception
+ {
+ Class moduleClass = NoDelegateDecoratorMethodModule.class;
+ Method m = moduleClass.getMethod("decorateNoDelegate");
+
+ Log log = newLog();
+
+ log.warn(IOCMessages.decoratorMethodNeedsDelegateParameter(m), null);
+
+ replay();
+
+ ModuleDef md = new DefaultModuleDefImpl(moduleClass, log);
+
+ assertTrue(md.getDecoratorDefs().isEmpty());
+
+ verify();
+ }
+
+ @Test
+ public void contribution_without_annotation()
+ {
+ attemptConfigurationMethod(
+ SimpleModule.class,
+ "ioc.Barney",
+ "contributeBarney(Configuration)");
+ }
+
+ @Test
+ public void contribution_with_annotation()
+ {
+ attemptConfigurationMethod(
+ ConfigurationWithContributeAnnotationModule.class,
+ "ioc.test.Fred",
+ "contributeSomething(Configuration)");
+
+ }
+
+ @Test
+ public void contribution_with_annotation_to_other_module()
+ {
+ attemptConfigurationMethod(
+ ConfigurationWithAnnotationOtherModule.class,
+ "some.module.Wilma",
+ "contributeOtherModule(Configuration)");
+ }
+
+ @Test
+ public void ordered_contribution_method()
+ {
+ attemptConfigurationMethod(
+ OrderedConfigurationModule.class,
+ "ioc.test.Ordered",
+ "contributeOrdered(OrderedConfiguration)");
+ }
+
+ @Test
+ public void mapped_contribution_method()
+ {
+ attemptConfigurationMethod(
+ MappedConfigurationModule.class,
+ "ioc.test.Mapped",
+ "contributeMapped(MappedConfiguration)");
+ }
+
+ private void attemptConfigurationMethod(Class moduleClass, String expectedServiceId,
+ String expectedMethodSignature)
+ {
+ Log log = newLog();
+
+ replay();
+
+ ModuleDef md = new DefaultModuleDefImpl(moduleClass, log);
+
+ Set<ContributionDef> defs = md.getContributionDefs();
+
+ assertEquals(defs.size(), 1);
+
+ ContributionDef cd = defs.iterator().next();
+
+ // The target service id is derived from the method name
+
+ assertEquals(cd.getServiceId(), expectedServiceId);
+ assertEquals(cd.toString(), moduleClass.getName() + "." + expectedMethodSignature);
+
+ verify();
+ }
+
+ @Test
+ public void contribution_with_too_many_parameters() throws Exception
+ {
+ Class moduleClass = TooManyContributionParametersModule.class;
+ Method m = findMethod(moduleClass, "contributeTooMany");
+
+ Log log = newLog();
+ log.warn(IOCMessages.tooManyContributionParameters(m));
+
+ replay();
+
+ ModuleDef md = new DefaultModuleDefImpl(moduleClass, log);
+
+ assertTrue(md.getContributionDefs().isEmpty());
+
+ verify();
+ }
+
+ @Test
+ public void contribution_with_no_contribution_parameter() throws Exception
+ {
+ Class moduleClass = NoUsableContributionParameterModule.class;
+ Method m = findMethod(moduleClass, "contributeNoParameter");
+
+ Log log = newLog();
+ log.warn(IOCMessages.noContributionParameter(m));
+
+ replay();
+
+ ModuleDef md = new DefaultModuleDefImpl(moduleClass, log);
+
+ assertTrue(md.getContributionDefs().isEmpty());
+
+ verify();
+ }
+}
Modified: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ThreadCleanupHubImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ThreadCleanupHubImplTest.java?view=diff&rev=492319&r1=492318&r2=492319
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ThreadCleanupHubImplTest.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ThreadCleanupHubImplTest.java Wed Jan 3 13:51:27 2007
@@ -16,10 +16,10 @@
import org.apache.commons.logging.Log;
import org.apache.tapestry.ioc.services.ThreadCleanupListener;
-import org.apache.tapestry.ioc.test.TestBase;
+import org.apache.tapestry.ioc.test.IOCTestCase;
import org.testng.annotations.Test;
-public class ThreadCleanupHubImplTest extends TestBase
+public class ThreadCleanupHubImplTest extends IOCTestCase
{
@Test
public void no_listeners()