Package junit3_tdtc.tutorial_0_basic

Source Code of junit3_tdtc.tutorial_0_basic.Example2ScopesTest

package junit3_tdtc.tutorial_0_basic;

import com.google.common.testing.junit3.TearDownTestCase;
import com.google.guiceberry.GuiceBerryModule;
import com.google.guiceberry.TestScoped;
import com.google.guiceberry.junit3.AutoTearDownGuiceBerry;
import com.google.inject.AbstractModule;
import com.google.inject.BindingAnnotation;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Scopes;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

public class Example2ScopesTest extends TearDownTestCase {

  @Override
  protected void setUp() throws Exception {
    super.setUp();
    AutoTearDownGuiceBerry.setUp(this, Env.class);
  }

  @Inject
  @UnscopedIncrementingNumber
  private Provider<Integer> unscopedIncrementingNumber;

  @Inject
  @TestScopedIncrementingNumber
  private Provider<Integer> testScopedIncrementingNumber;

  @Inject
  @SingletonScopedIncrementingNumber
  private Provider<Integer> singletonScopedIncrementingNumber;

  public void testOne() throws Exception {
    assertEquals(300, singletonScopedIncrementingNumber.get().intValue());
    assertEquals(300, singletonScopedIncrementingNumber.get().intValue());

    assertEquals(200, testScopedIncrementingNumber.get().intValue());
    assertEquals(200, testScopedIncrementingNumber.get().intValue());

    assertEquals(100, unscopedIncrementingNumber.get().intValue());
    assertEquals(101, unscopedIncrementingNumber.get().intValue());
  }

  public void testTwo() throws Exception {
    assertEquals(300, singletonScopedIncrementingNumber.get().intValue());
    assertEquals(300, singletonScopedIncrementingNumber.get().intValue());

    assertEquals(201, testScopedIncrementingNumber.get().intValue());
    assertEquals(201, testScopedIncrementingNumber.get().intValue());

    assertEquals(102, unscopedIncrementingNumber.get().intValue());
    assertEquals(103, unscopedIncrementingNumber.get().intValue());
  }

  public static final class Env extends AbstractModule {
    private static final class IncrementingProvider implements Provider<Integer> {
      private int number;

      public IncrementingProvider(int seed) {
        this.number = seed;
      }

      public Integer get() {
        return number++;
      }
    }

    @Override
    protected void configure() {
      install(new GuiceBerryModule());
      IncrementingProvider unscopedIncrementingNumberProvider =
        new IncrementingProvider(100);
      IncrementingProvider testScopedIncrementingNumberProvider =
        new IncrementingProvider(200);
      IncrementingProvider singletonScopedIncrementingNumberProvider =
        new IncrementingProvider(300);
      bind(Integer.class)
        .annotatedWith(UnscopedIncrementingNumber.class)
        .toProvider(unscopedIncrementingNumberProvider);
      bind(Integer.class)
        .annotatedWith(TestScopedIncrementingNumber.class)
        .toProvider(testScopedIncrementingNumberProvider)
        .in(TestScoped.class);
      bind(Integer.class)
        .annotatedWith(SingletonScopedIncrementingNumber.class)
        .toProvider(singletonScopedIncrementingNumberProvider)
        .in(Scopes.SINGLETON);
    }
  }

  @Retention(RetentionPolicy.RUNTIME)
  @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER})
  @BindingAnnotation
  private @interface UnscopedIncrementingNumber {}

  @Retention(RetentionPolicy.RUNTIME)
  @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER})
  @BindingAnnotation
  private @interface TestScopedIncrementingNumber {}

  @Retention(RetentionPolicy.RUNTIME)
  @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER})
  @BindingAnnotation
  private @interface SingletonScopedIncrementingNumber {}
}
TOP

Related Classes of junit3_tdtc.tutorial_0_basic.Example2ScopesTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.