Пример #1
0
  public void testAssistedFactoryWithAnnotations() {
    Injector injector =
        Guice.createInjector(
            new AbstractModule() {
              @Override
              protected void configure() {
                bind(int.class).annotatedWith(Names.named("horsePower")).toInstance(250);
                bind(int.class).annotatedWith(Names.named("modelYear")).toInstance(1984);
                bind(ColoredCarFactory.class)
                    .toProvider(FactoryProvider.newFactory(ColoredCarFactory.class, Camaro.class));
              }
            });

    ColoredCarFactory carFactory = injector.getInstance(ColoredCarFactory.class);

    Camaro blueCamaro = (Camaro) carFactory.create(Color.BLUE);
    assertEquals(Color.BLUE, blueCamaro.color);
    assertEquals(1984, blueCamaro.modelYear);
    assertEquals(250, blueCamaro.horsePower);

    Camaro redCamaro = (Camaro) carFactory.create(Color.RED);
    assertEquals(Color.RED, redCamaro.color);
    assertEquals(1984, redCamaro.modelYear);
    assertEquals(250, redCamaro.horsePower);
  }
Пример #2
0
  public void testFactoryWithImplicitBindings() {
    Injector injector =
        Guice.createInjector(
            new AbstractModule() {
              @Override
              protected void configure() {
                bind(ColoredCarFactory.class)
                    .toProvider(FactoryProvider.newFactory(ColoredCarFactory.class, Fiat.class));
              }
            });

    ColoredCarFactory coloredCarFactory = injector.getInstance(ColoredCarFactory.class);
    Fiat fiat = (Fiat) coloredCarFactory.create(Color.GREEN);
    assertEquals(Color.GREEN, fiat.color);
    assertNotNull(fiat.steeringWheel);
  }
Пример #3
0
  public void testTypeTokenProviderInjection() {
    Injector injector =
        Guice.createInjector(
            new AbstractModule() {
              @Override
              protected void configure() {
                bind(new TypeLiteral<Set<String>>() {}).toInstance(Collections.singleton("Datsun"));
                bind(ColoredCarFactory.class)
                    .toProvider(FactoryProvider.newFactory(ColoredCarFactory.class, Z.class));
              }
            });
    ColoredCarFactory carFactory = injector.getInstance(ColoredCarFactory.class);

    Z orangeZ = (Z) carFactory.create(Color.ORANGE);
    assertEquals(Color.ORANGE, orangeZ.color);
    assertEquals("Datsun", orangeZ.manufacturersProvider.get().iterator().next());
  }
Пример #4
0
  public void testMethodsDeclaredInObject() {
    Injector injector =
        Guice.createInjector(
            new AbstractModule() {
              @Override
              protected void configure() {
                bind(Double.class).toInstance(5.0d);
                bind(ColoredCarFactory.class)
                    .toProvider(FactoryProvider.newFactory(ColoredCarFactory.class, Mustang.class));
              }
            });

    ColoredCarFactory carFactory = injector.getInstance(ColoredCarFactory.class);

    carFactory.equals(carFactory);
    carFactory.hashCode();
    carFactory.toString();
  }
Пример #5
0
  public void testProviderInjection() {
    Injector injector =
        Guice.createInjector(
            new AbstractModule() {
              @Override
              protected void configure() {
                bind(String.class).toInstance("trans am");
                bind(ColoredCarFactory.class)
                    .toProvider(
                        FactoryProvider.newFactory(ColoredCarFactory.class, Firebird.class));
              }
            });
    ColoredCarFactory carFactory = injector.getInstance(ColoredCarFactory.class);

    Firebird blackFirebird = (Firebird) carFactory.create(Color.BLACK);
    assertEquals(Color.BLACK, blackFirebird.color);
    assertEquals("trans am", blackFirebird.modifiersProvider.get());
  }
Пример #6
0
  public void testAssistedFactory() {
    Injector injector =
        Guice.createInjector(
            new AbstractModule() {
              @Override
              protected void configure() {
                bind(Double.class).toInstance(5.0d);
                bind(ColoredCarFactory.class)
                    .toProvider(FactoryProvider.newFactory(ColoredCarFactory.class, Mustang.class));
              }
            });
    ColoredCarFactory carFactory = injector.getInstance(ColoredCarFactory.class);

    Mustang blueMustang = (Mustang) carFactory.create(Color.BLUE);
    assertEquals(Color.BLUE, blueMustang.color);
    assertEquals(5.0d, blueMustang.engineSize);

    Mustang redMustang = (Mustang) carFactory.create(Color.RED);
    assertEquals(Color.RED, redMustang.color);
    assertEquals(5.0d, redMustang.engineSize);
  }
Пример #7
0
  public void testTypeTokenInjection() {
    Injector injector =
        Guice.createInjector(
            new AbstractModule() {
              @Override
              protected void configure() {
                bind(new TypeLiteral<Set<String>>() {})
                    .toInstance(Collections.singleton("Flux Capacitor"));
                bind(new TypeLiteral<Set<Integer>>() {}).toInstance(Collections.singleton(88));
                bind(ColoredCarFactory.class)
                    .toProvider(
                        FactoryProvider.newFactory(ColoredCarFactory.class, DeLorean.class));
              }
            });
    ColoredCarFactory carFactory = injector.getInstance(ColoredCarFactory.class);

    DeLorean deLorean = (DeLorean) carFactory.create(Color.GRAY);
    assertEquals(Color.GRAY, deLorean.color);
    assertEquals("Flux Capacitor", deLorean.features.iterator().next());
    assertEquals(new Integer(88), deLorean.featureActivationSpeeds.iterator().next());
  }
Пример #8
0
  public void testMethodsAndFieldsGetInjected() {
    Injector injector =
        Guice.createInjector(
            new AbstractModule() {
              @Override
              protected void configure() {
                bind(String.class).toInstance("turbo");
                bind(int.class).toInstance(911);
                bind(double.class).toInstance(50000d);
                bind(ColoredCarFactory.class)
                    .toProvider(FactoryProvider.newFactory(ColoredCarFactory.class, Porshe.class));
              }
            });
    ColoredCarFactory carFactory = injector.getInstance(ColoredCarFactory.class);

    Porshe grayPorshe = (Porshe) carFactory.create(Color.GRAY);
    assertEquals(Color.GRAY, grayPorshe.color);
    assertEquals(50000d, grayPorshe.price);
    assertEquals(911, grayPorshe.model);
    assertEquals("turbo", grayPorshe.name);
  }