package com.google.gwt.inject.client.assistedinject; import com.google.gwt.core.client.GWT; import com.google.gwt.inject.client.AbstractGinModule; import com.google.gwt.inject.client.GinModules; import com.google.gwt.inject.client.Ginjector; import com.google.gwt.junit.client.GWTTestCase; import com.google.inject.Inject; public class CircularFactoryTest extends GWTTestCase { public void testCycle() { CycleGinjector ginjector = GWT.create(CycleGinjector.class); assertNotNull(ginjector.getFactory()); assertNotNull(ginjector.getFactory().getCycleType().factory); } public static class CycleModule extends AbstractGinModule { @Override protected void configure() { install(new GinFactoryModuleBuilder().build(CycleFactory.class)); } } @GinModules({CycleModule.class}) public static interface CycleGinjector extends Ginjector { CycleFactory getFactory(); } public static class CycleType { final CycleFactory factory; @Inject public CycleType(CycleFactory factory) { this.factory = factory; } } public interface CycleFactory { CycleType getCycleType(); } @Override public String getModuleName() { return "com.google.gwt.inject.InjectTest"; } }