package roboguice;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import roboguice.activity.RoboActivity;
import com.google.inject.Stage;
import com.google.inject.AbstractModule;
import android.app.Activity;
@RunWith(RobolectricTestRunner.class)
public class RoboGuiceTest {
@Before
public void setup() {
RoboGuice.injectors.clear();
}
@Test
public void destroyInjectorShouldRemoveContext() {
final Activity activity = Robolectric.buildActivity(RoboActivity.class).get();
RoboGuice.getInjector(activity);
assertThat(RoboGuice.injectors.size(), equalTo(1));
RoboGuice.destroyInjector(activity);
assertThat(RoboGuice.injectors.size(), equalTo(1));
RoboGuice.destroyInjector(Robolectric.application);
assertThat(RoboGuice.injectors.size(), equalTo(0));
}
@Test
public void resetShouldRemoveContext() {
final Activity activity = Robolectric.buildActivity(RoboActivity.class).get();
RoboGuice.getInjector(activity);
assertThat(RoboGuice.injectors.size(), equalTo(1));
RoboGuice.Util.reset();
assertThat(RoboGuice.injectors.size(), equalTo(0));
}
// https://github.com/roboguice/roboguice/issues/87
@Test
public void shouldOnlyCallConfigureOnce() {
final int[] i = {0};
RoboGuice.getOrCreateBaseApplicationInjector(Robolectric.application, Stage.DEVELOPMENT, RoboGuice.newDefaultRoboModule(Robolectric.application), new AbstractModule() {
@Override
protected void configure() {
++i[0];
}
});
assertThat(i[0],equalTo(1));
}
}