Author: limpbizkit
Date: Tue Dec 9 19:47:57 2008
New Revision: 730
Modified:
trunk/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryProvider2Test.java
Log:
Applying dtm's suggestions for r723.
Modified:
trunk/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryProvider2Test.java
==============================================================================
---
trunk/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryProvider2Test.java
(original)
+++
trunk/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryProvider2Test.java
Tue Dec 9 19:47:57 2008
@@ -19,6 +19,7 @@
import com.google.inject.AbstractModule;
import static com.google.inject.Asserts.assertContains;
import static com.google.inject.Asserts.assertEqualsBothWays;
+import com.google.inject.ConfigurationException;
import com.google.inject.CreationException;
import com.google.inject.Guice;
import com.google.inject.Inject;
@@ -319,7 +320,8 @@
FactoryProvider.newFactory(ColoredCarFactory.class,
Prius.class));
}
});
- Car car =
injector.getInstance(ColoredCarFactory.class).create(Color.ORANGE);
+ Prius prius = (Prius)
injector.getInstance(ColoredCarFactory.class).create(Color.ORANGE);
+ assertEquals(prius.color, Color.ORANGE);
}
public static class ExplodingCar implements Car {
@@ -634,8 +636,54 @@
assertEquals(1, invocationCount.get());
}
+ /**
+ * Our factories aren't reusable across injectors. Although this
behaviour isn't something we
+ * like, I have a test case to make sure the error message is pretty.
+ */
+ public void testFactoryReuseErrorMessageIsPretty() {
+ final Provider<ColoredCarFactory> factoryProvider
+ = FactoryProvider.newFactory(ColoredCarFactory.class,
Mustang.class);
+
+ Guice.createInjector(new AbstractModule() {
+ @Override protected void configure() {
+ bind(Double.class).toInstance(5.0d);
+ bind(ColoredCarFactory.class).toProvider(factoryProvider);
+ }
+ });
+
+ try {
+ Guice.createInjector(new AbstractModule() {
+ @Override protected void configure() {
+ bind(Double.class).toInstance(5.0d);
+ bind(ColoredCarFactory.class).toProvider(factoryProvider);
+ }
+ });
+ fail();
+ } catch(CreationException expected) {
+ assertContains(expected.getMessage(),
+ "Factories.create() factories may only be used in one
Injector!");
+ }
+ }
+
+ public void testNonAssistedFactoryMethodParameter() {
+ try {
+ FactoryProvider.newFactory(NamedParameterFactory.class,
Mustang.class);
+ fail();
+ } catch(ConfigurationException expected) {
+ assertContains(expected.getMessage(),
+ "Only @Assisted is allowed for factory parameters, but found @"
+ Named.class.getName());
+ }
+ }
+
+ interface NamedParameterFactory {
+ Car create(@Named("seats") int seats, double engineSize);
+ }
+
+
public void testDefaultAssistedAnnotation() throws NoSuchFieldException {
- assertEqualsBothWays(FactoryProvider2.DEFAULT_ANNOTATION,
-
Subaru.class.getDeclaredField("colorProvider").getAnnotation(Assisted.class));
+ Assisted plainAssisted
+ =
Subaru.class.getDeclaredField("colorProvider").getAnnotation(Assisted.class);
+ assertEqualsBothWays(FactoryProvider2.DEFAULT_ANNOTATION,
plainAssisted);
+ assertEquals(FactoryProvider2.DEFAULT_ANNOTATION.toString(),
plainAssisted.toString());
}
}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"google-guice-dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/google-guice-dev?hl=en
-~----------~----~----~----~------~----~------~--~---