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 2012/06/01 22:37:46 UTC
git commit: Convert TestNG to Spock
Updated Branches:
refs/heads/master 399b52c77 -> 8215e9d1b
Convert TestNG to Spock
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/8215e9d1
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/8215e9d1
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/8215e9d1
Branch: refs/heads/master
Commit: 8215e9d1b3591be365f983edce606685842aface
Parents: 399b52c
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Fri Jun 1 13:37:37 2012 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Fri Jun 1 13:37:37 2012 -0700
----------------------------------------------------------------------
.../ioc/AbstractSharedRegistrySpecification.groovy | 10 +
.../ServiceBuilderMethodInvokerSpec.groovy | 195 +++++++
.../ioc/internal/ServiceCreatorGenericsSpec.groovy | 79 +++
.../ioc/internal/ServiceBuilderMethodFixture.java | 15 +-
.../internal/ServiceBuilderMethodInvokerTest.java | 433 ---------------
5 files changed, 291 insertions(+), 441 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8215e9d1/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/AbstractSharedRegistrySpecification.groovy
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/AbstractSharedRegistrySpecification.groovy b/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/AbstractSharedRegistrySpecification.groovy
index 8f61051..7115ae9 100644
--- a/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/AbstractSharedRegistrySpecification.groovy
+++ b/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/AbstractSharedRegistrySpecification.groovy
@@ -2,6 +2,8 @@ package org.apache.tapestry5.ioc
import spock.lang.Specification
+import java.lang.reflect.Method
+
/**
* Uses a static, shared instance of the {@link org.apache.tapestry5.ioc.Registry}.
* All specifications that extend from this class will share
@@ -31,4 +33,12 @@ abstract class AbstractSharedRegistrySpecification extends Specification {
// TODO: the Registry is never shutdown, since there's no notification
// that all tests are completing.
+ protected Method findMethod(Object subject, String methodName) {
+ def method = subject.class.methods.find { it.name == methodName }
+
+ assert method != null
+
+ return method
+ }
+
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8215e9d1/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodInvokerSpec.groovy
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodInvokerSpec.groovy b/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodInvokerSpec.groovy
new file mode 100644
index 0000000..5226b87
--- /dev/null
+++ b/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodInvokerSpec.groovy
@@ -0,0 +1,195 @@
+package org.apache.tapestry5.ioc.internal
+
+import org.slf4j.Logger
+import org.apache.tapestry5.ioc.*
+
+class ServiceBuilderMethodInvokerSpec extends AbstractSharedRegistrySpecification {
+
+ static String DESCRIPTION = "{CREATOR DESCRIPTION}"
+ static String SERVICE_ID = "Fie"
+
+ Logger logger = Mock()
+ FieService implementation = Mock()
+ OperationTracker tracker = new QuietOperationTracker()
+ ServiceBuilderResources resources = Mock()
+ ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
+
+ def setup() {
+
+ fixture.fie = implementation
+
+ _ * resources.tracker >> tracker
+ _ * resources.moduleBuilder >> fixture
+ _ * resources.serviceId >> SERVICE_ID
+ _ * resources.serviceInterface >> FieService
+ _ * resources.logger >> logger
+ }
+
+ def "invoke a service builder method with no arguments"() {
+
+ when:
+
+ ObjectCreator oc = createObjectCreator "build_noargs"
+
+ def actual = oc.createObject()
+
+ then:
+
+ actual.is implementation
+ }
+
+ def ServiceBuilderMethodInvoker createObjectCreator(methodName) {
+ new ServiceBuilderMethodInvoker(resources, DESCRIPTION,
+ findMethod(fixture, methodName))
+ }
+
+ def invoke(methodName) {
+ createObjectCreator(methodName).createObject()
+ }
+
+ def "invoke a method with injected parameters"() {
+
+ fixture.expectedServiceInterface = FieService
+ fixture.expectedServiceResources = resources
+ fixture.expectedLogger = logger
+
+ when:
+
+ def actual = invoke "build_args"
+
+ then:
+
+ actual.is implementation
+ }
+
+ def "@Inject annotation bypasses service resources when resolving value to inject"() {
+
+ fixture.expectedString = "Injected"
+
+ when:
+
+ def actual = invoke "build_with_forced_injection"
+
+ then:
+
+ actual.is implementation
+
+ 1 * resources.getObject(String, _ as AnnotationProvider) >> "Injected"
+ }
+
+ def "@InjectService on method parameter"() {
+
+ FoeService foe = Mock()
+
+ fixture.expectedFoe = foe
+
+ when:
+
+ def actual = invoke "build_injected"
+
+ then:
+
+ actual.is implementation
+
+ 1 * resources.getService("Foe", FoeService) >> foe
+ }
+
+ def "@Named annotation on method parameter"() {
+
+ FoeService foe = Mock()
+
+ fixture.expectedFoe = foe
+
+ when:
+
+ def actual = invoke "build_named_injected"
+
+ then:
+
+ actual.is implementation
+
+ 1 * resources.getService("Foe", FoeService) >> foe
+ }
+
+ def "injection of ordered configuration as List"() {
+
+ List<Runnable> configuration = Mock()
+
+ fixture.expectedConfiguration = configuration
+
+ when:
+
+ def actual = invoke "buildWithOrderedConfiguration"
+
+ then:
+
+ actual.is implementation
+
+ 1 * resources.getOrderedConfiguration(Runnable) >> configuration
+ }
+
+ def "injection of unordered collection (as Collection)"() {
+
+ Collection<Runnable> configuration = Mock()
+
+ fixture.expectedConfiguration = configuration
+
+ when:
+
+ def actual = invoke "buildWithUnorderedConfiguration"
+
+ then:
+
+ actual.is implementation
+
+ 1 * resources.getUnorderedConfiguration(Runnable) >> configuration
+ }
+
+ def "builder method returns null"() {
+
+ fixture.fie = null
+
+ when:
+
+ createObjectCreator("buildWithUnorderedConfiguration").createObject()
+
+ then:
+
+ RuntimeException e = thrown()
+
+ e.message == "Builder method ${DESCRIPTION} (for service 'Fie') returned null."
+ }
+
+ def "builder method failure"() {
+
+ when:
+
+ createObjectCreator("build_fail").createObject()
+
+ then:
+
+ RuntimeException e= thrown()
+
+ e.message.contains "build_fail()"
+ e.message.contains "Method failed."
+
+ e.cause.message == "Method failed."
+ }
+
+ def "automatically injected dependency (without an annotation)"() {
+
+ FoeService foe = Mock()
+
+ fixture.expectedFoe = foe
+
+ when:
+
+ def actual = invoke "build_auto"
+
+ then:
+
+ actual.is implementation
+
+ 1 * resources.getObject(FoeService, _ as AnnotationProvider) >> foe
+ }
+}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8215e9d1/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/ServiceCreatorGenericsSpec.groovy
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/ServiceCreatorGenericsSpec.groovy b/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/ServiceCreatorGenericsSpec.groovy
new file mode 100644
index 0000000..6084e30
--- /dev/null
+++ b/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/ServiceCreatorGenericsSpec.groovy
@@ -0,0 +1,79 @@
+package org.apache.tapestry5.ioc.internal
+
+import spock.lang.Specification
+
+import java.lang.reflect.Method
+
+import static org.apache.tapestry5.ioc.internal.AbstractServiceCreator.findParameterizedTypeFromGenericType
+
+class ServiceCreatorGenericsSpec extends Specification {
+
+ Method findMethod(name) {
+ Method method = ServiceBuilderMethodFixture.methods.find { it.name == name}
+
+ assert method != null
+
+ return method
+ }
+
+ def methodMissing(String name, args) {
+ AbstractServiceCreator."$name"(* args)
+ }
+
+ def "parameterized type of generic method parameter is extracted"() {
+
+ when:
+
+ def method = findMethod "methodWithParameterizedList"
+
+ then:
+
+ method.parameterTypes[0] == List
+
+ def type = method.genericParameterTypes[0]
+
+ type.toString() == "java.util.List<java.lang.Runnable>"
+
+ findParameterizedTypeFromGenericType(type) == Runnable
+ }
+
+ def "parameterized type of a non-generic parameter is Object"() {
+
+ when:
+
+ def method = findMethod "methodWithList"
+
+ then:
+
+ method.parameterTypes[0] == List
+
+ def type = method.genericParameterTypes[0]
+
+ type.toString() == "interface java.util.List"
+ findParameterizedTypeFromGenericType(type) == Object
+ }
+
+ def "getting parameterized type for a non-support type is a failure"() {
+
+ when:
+
+ def method = findMethod "methodWithWildcardList"
+
+ then:
+
+ method.parameterTypes[0] == List
+
+ def type = method.genericParameterTypes[0]
+
+ when:
+
+ findParameterizedTypeFromGenericType(type)
+
+ then:
+
+ IllegalArgumentException e = thrown()
+
+ e.message == IOCMessages.genericTypeNotSupported(type)
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8215e9d1/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodFixture.java
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodFixture.java b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodFixture.java
index 03d6f04..f67ebdc 100644
--- a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodFixture.java
+++ b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodFixture.java
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
+// Copyright 2006, 2007, 2010, 2012 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -14,20 +14,19 @@
package org.apache.tapestry5.ioc.internal;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import javax.inject.Named;
-
import org.apache.tapestry5.ioc.ServiceResources;
import org.apache.tapestry5.ioc.annotations.InjectService;
import org.apache.tapestry5.ioc.annotations.Value;
import org.slf4j.Logger;
import org.testng.Assert;
+import javax.inject.Named;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
/**
- * Used by {@link org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvokerTest}.
+ * Used by {@link org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvokerSpec}.
*/
public class ServiceBuilderMethodFixture extends Assert
{
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8215e9d1/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodInvokerTest.java
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodInvokerTest.java b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodInvokerTest.java
deleted file mode 100644
index 44e0cf6..0000000
--- a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodInvokerTest.java
+++ /dev/null
@@ -1,433 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import org.easymock.EasyMock;
-import org.slf4j.Logger;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.Collection;
-import java.util.List;
-
-import static org.apache.tapestry5.ioc.internal.AbstractServiceCreator.findParameterizedTypeFromGenericType;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.isA;
-
-public class ServiceBuilderMethodInvokerTest extends IOCInternalTestCase
-{
- private static final String SERVICE_ID = "Fie";
-
- private static final String CREATOR_DESCRIPTION = "{CREATOR DESCRIPTION}";
-
- private final OperationTracker tracker = new QuietOperationTracker();
-
- private void ignoreDebug(Logger logger)
- {
- logger.debug(EasyMock.anyObject(String.class));
- }
-
- @Test
- public void noargs_method()
- {
- ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
- ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
- Logger logger = mockLogger();
-
- fixture.fie = mockFieService();
-
- trainForConstructor(resources, logger);
-
- train_getModuleBuilder(resources, fixture);
-
- ignoreDebug(logger);
-
- replay();
-
- ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, findMethod(fixture,
- "build_noargs"));
-
- Object actual = sc.createObject();
-
- assertSame(actual, fixture.fie);
-
- verify();
- }
-
- private void trainForConstructor(ServiceBuilderResources resources, Logger logger)
- {
- train_getServiceId(resources, SERVICE_ID);
-
- train_getLogger(resources, logger);
-
- train_getServiceInterface(resources, FieService.class);
- }
-
- @Test
- public void method_with_args()
- {
- ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
- Method method = findMethod(fixture, "build_args");
- ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
-
- Logger logger = mockLogger();
-
- fixture.expectedServiceInterface = FieService.class;
- fixture.expectedServiceResources = resources;
- fixture.expectedLogger = logger;
-
- fixture.fie = mockFieService();
-
- trainForConstructor(resources, logger);
-
- train_getModuleBuilder(resources, fixture);
-
- ignoreDebug(logger);
-
- replay();
-
- ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, method);
-
- Object actual = sc.createObject();
-
- assertSame(actual, fixture.fie);
-
- verify();
- }
-
- @Test
- public void inject_annotation_bypasses_resources()
- {
- ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
- Method method = findMethod(fixture, "build_with_forced_injection");
- ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
-
- Logger logger = mockLogger();
-
- fixture.expectedString = "Injected";
-
- fixture.fie = mockFieService();
-
- trainForConstructor(resources, logger);
-
- train_getModuleBuilder(resources, fixture);
-
- ignoreDebug(logger);
-
- // This simulates what the real stack does when it sees @Value("Injected")
-
- expect(resources.getObject(eq(String.class), isA(AnnotationProvider.class))).andReturn("Injected");
-
- replay();
-
- ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, method);
-
- Object actual = sc.createObject();
-
- assertSame(actual, fixture.fie);
-
- verify();
- }
-
- @Test
- public void injected_service_method()
- {
- ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
- ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
- Logger logger = mockLogger();
-
- fixture.fie = mockFieService();
- fixture.expectedFoe = newFoe();
-
- trainForConstructor(resources, logger);
-
- train_getModuleBuilder(resources, fixture);
-
- train_getService(resources, "Foe", FoeService.class, fixture.expectedFoe);
-
- ignoreDebug(logger);
-
- replay();
-
- ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, findMethod(fixture,
- "build_injected"));
-
- Object actual = sc.createObject();
-
- assertSame(actual, fixture.fie);
-
- verify();
- }
-
- @Test
- public void named_injected_service_method()
- {
- ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
- ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
- Logger logger = mockLogger();
-
- fixture.fie = mockFieService();
- fixture.expectedFoe = newFoe();
-
- trainForConstructor(resources, logger);
-
- train_getModuleBuilder(resources, fixture);
-
- train_getService(resources, "Foe", FoeService.class, fixture.expectedFoe);
-
- ignoreDebug(logger);
-
- replay();
-
- ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, findMethod(fixture,
- "build_named_injected"));
-
- Object actual = sc.createObject();
-
- assertSame(actual, fixture.fie);
-
- verify();
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void injected_ordered_collection()
- {
- ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
- ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
- Logger logger = mockLogger();
-
- fixture.fie = mockFieService();
- List<Runnable> result = newMock(List.class);
- fixture.expectedConfiguration = result;
-
- trainForConstructor(resources, logger);
-
- train_getModuleBuilder(resources, fixture);
-
- expect(resources.getOrderedConfiguration(Runnable.class)).andReturn(result);
-
- ignoreDebug(logger);
-
- replay();
-
- ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, findMethod(fixture,
- "buildWithOrderedConfiguration"));
-
- Object actual = sc.createObject();
-
- assertSame(actual, fixture.fie);
-
- verify();
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void injected_unordered_collection()
- {
- ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
- ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
- Logger logger = mockLogger();
-
- fixture.fie = mockFieService();
- Collection<Runnable> result = newMock(Collection.class);
- fixture.expectedConfiguration = result;
-
- trainForConstructor(resources, logger);
-
- train_getModuleBuilder(resources, fixture);
-
- expect(resources.getUnorderedConfiguration(Runnable.class)).andReturn(result);
-
- ignoreDebug(logger);
-
- replay();
-
- ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, findMethod(fixture,
- "buildWithUnorderedConfiguration"));
-
- Object actual = sc.createObject();
-
- assertSame(actual, fixture.fie);
-
- verify();
- }
-
- private FoeService newFoe()
- {
- return mockFoeService();
- }
-
- @Test
- public void builder_method_returns_null()
- {
- ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
- ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
- Logger logger = mockLogger();
-
- Method method = findMethod(fixture, "build_noargs");
-
- trainForConstructor(resources, logger);
-
- train_getModuleBuilder(resources, fixture);
-
- ignoreDebug(logger);
-
- replay();
-
- ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, method);
-
- try
- {
- sc.createObject();
- unreachable();
- } catch (RuntimeException ex)
- {
- Assert.assertEquals(ex.getMessage(), "Builder method " + CREATOR_DESCRIPTION
- + " (for service 'Fie') returned null.");
- }
-
- verify();
- }
-
- @Test
- public void builder_method_failed()
- {
- ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
- ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
- Logger logger = mockLogger();
-
- Method method = findMethod(fixture, "build_fail");
-
- trainForConstructor(resources, logger);
-
- train_getModuleBuilder(resources, fixture);
-
- ignoreDebug(logger);
-
- replay();
-
- ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, method);
-
- try
- {
- sc.createObject();
- unreachable();
- } catch (RuntimeException ex)
- {
- assertMessageContains(ex, "build_fail()", "Method failed.");
-
- Throwable cause = ex.getCause();
-
- assertEquals(cause.getMessage(), "Method failed.");
- }
-
- verify();
- }
-
- @Test
- public void auto_dependency()
- {
- ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
- Method method = findMethod(fixture, "build_auto");
-
- ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
- Logger logger = mockLogger();
-
- fixture.fie = mockFieService();
- fixture.expectedFoe = mockFoeService();
-
- trainForConstructor(resources, logger);
-
- train_getModuleBuilder(resources, fixture);
-
- expect(resources.getObject(eq(FoeService.class), isA(AnnotationProvider.class))).andReturn(fixture.expectedFoe);
-
- ignoreDebug(logger);
-
- replay();
-
- ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, method);
-
- Object actual = sc.createObject();
-
- verify();
-
- assertSame(actual, fixture.fie);
- }
-
- protected final void train_getModuleBuilder(ServiceBuilderResources resources, Object moduleInstance)
- {
- expect(resources.getModuleBuilder()).andReturn(moduleInstance);
- }
-
- @Test
- public void parameterized_type_of_generic_parameter()
- {
- Method m = findMethod(ServiceBuilderMethodFixture.class, "methodWithParameterizedList");
-
- assertEquals(m.getParameterTypes()[0], List.class);
- Type type = m.getGenericParameterTypes()[0];
-
- assertEquals(type.toString(), "java.util.List<java.lang.Runnable>");
- assertEquals(findParameterizedTypeFromGenericType(type), Runnable.class);
- }
-
- @Test
- public void parameterized_type_of_nongeneric_parameter()
- {
- Method m = findMethod(ServiceBuilderMethodFixture.class, "methodWithList");
-
- assertEquals(m.getParameterTypes()[0], List.class);
- Type type = m.getGenericParameterTypes()[0];
-
- assertEquals(type.toString(), "interface java.util.List");
- assertEquals(findParameterizedTypeFromGenericType(type), Object.class);
- }
-
- @Test
- public void parameterize_type_for_non_supported_type()
- {
- Method m = findMethod(ServiceBuilderMethodFixture.class, "methodWithWildcardList");
-
- assertEquals(m.getParameterTypes()[0], List.class);
- Type type = m.getGenericParameterTypes()[0];
-
- try
- {
- findParameterizedTypeFromGenericType(type);
- unreachable();
- } catch (IllegalArgumentException ex)
- {
- assertEquals(ex.getMessage(), IOCMessages.genericTypeNotSupported(type));
- }
- }
-
- private FoeService mockFoeService()
- {
- return newMock(FoeService.class);
- }
-
- private FieService mockFieService()
- {
- return newMock(FieService.class);
- }
-}