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
-~----------~----~----~----~------~----~------~--~---

Reply via email to