aboutsummaryrefslogtreecommitdiff
path: root/javatests/dagger/hilt/android/EarlyEntryPointHiltAndroidTestRuntimeTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'javatests/dagger/hilt/android/EarlyEntryPointHiltAndroidTestRuntimeTest.java')
-rw-r--r--javatests/dagger/hilt/android/EarlyEntryPointHiltAndroidTestRuntimeTest.java181
1 files changed, 0 insertions, 181 deletions
diff --git a/javatests/dagger/hilt/android/EarlyEntryPointHiltAndroidTestRuntimeTest.java b/javatests/dagger/hilt/android/EarlyEntryPointHiltAndroidTestRuntimeTest.java
deleted file mode 100644
index 2050d671c..000000000
--- a/javatests/dagger/hilt/android/EarlyEntryPointHiltAndroidTestRuntimeTest.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (C) 2021 The Dagger Authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dagger.hilt.android;
-
-import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
-import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertThrows;
-
-import android.os.Build;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import dagger.hilt.EntryPoint;
-import dagger.hilt.EntryPoints;
-import dagger.hilt.InstallIn;
-import dagger.hilt.android.EarlyEntryPointHiltAndroidTestRuntimeClasses.BarEntryPoint;
-import dagger.hilt.android.EarlyEntryPointHiltAndroidTestRuntimeClasses.EarlyFooEntryPoint;
-import dagger.hilt.android.EarlyEntryPointHiltAndroidTestRuntimeClasses.EarlyMySubcomponentBuilderEntryPoint;
-import dagger.hilt.android.EarlyEntryPointHiltAndroidTestRuntimeClasses.MySubcomponent;
-import dagger.hilt.android.EarlyEntryPointHiltAndroidTestRuntimeClasses.MySubcomponentBuilderEntryPoint;
-import dagger.hilt.android.EarlyEntryPointHiltAndroidTestRuntimeClasses.MySubcomponentScoped;
-import dagger.hilt.android.internal.testing.TestApplicationComponentManager;
-import dagger.hilt.android.testing.HiltAndroidRule;
-import dagger.hilt.android.testing.HiltAndroidTest;
-import dagger.hilt.android.testing.HiltTestApplication;
-import dagger.hilt.components.SingletonComponent;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.annotation.Config;
-
-@HiltAndroidTest
-@RunWith(AndroidJUnit4.class)
-// Robolectric requires Java9 to run API 29 and above, so use API 28 instead
-@Config(sdk = Build.VERSION_CODES.P, application = HiltTestApplication.class)
-public final class EarlyEntryPointHiltAndroidTestRuntimeTest {
- @EntryPoint
- @InstallIn(SingletonComponent.class)
- interface FooEntryPoint {
- Foo foo();
- }
-
- @Singleton
- public static class Foo {
- @Inject
- Foo() {}
- }
-
- @MySubcomponentScoped
- public static class Bar {
- final Foo foo;
- final int id;
-
- @Inject
- Bar(Foo foo, int id) {
- this.foo = foo;
- this.id = id;
- }
- }
-
- @Rule public HiltAndroidRule rule = new HiltAndroidRule(this);
-
- @Test
- public void testEarlyEntryPointsWrongEntryPointFails() throws Exception {
- IllegalStateException exception =
- assertThrows(
- IllegalStateException.class,
- () -> EarlyEntryPoints.get(getApplicationContext(), FooEntryPoint.class));
-
- assertThat(exception)
- .hasMessageThat()
- .contains(
- "FooEntryPoint should be called with EntryPoints.get() rather than "
- + "EarlyEntryPoints.get()");
- }
-
- @Test
- public void testEntryPointsWrongEntryPointFails() throws Exception {
- IllegalStateException exception =
- assertThrows(
- IllegalStateException.class,
- () -> EntryPoints.get(getApplicationContext(), EarlyFooEntryPoint.class));
-
- assertThat(exception)
- .hasMessageThat()
- .contains(
- "Interface, dagger.hilt.android.EarlyEntryPointHiltAndroidTestRuntimeClasses."
- + "EarlyFooEntryPoint, annotated with @EarlyEntryPoint should be called with "
- + "EarlyEntryPoints.get() rather than EntryPoints.get()");
- }
-
- @Test
- public void testComponentInstances() {
- Object componentManager = ((HiltTestApplication) getApplicationContext()).componentManager();
- Object component1 = ((TestApplicationComponentManager) componentManager).generatedComponent();
- Object component2 = ((TestApplicationComponentManager) componentManager).generatedComponent();
- assertThat(component1).isNotNull();
- assertThat(component2).isNotNull();
- assertThat(component1).isEqualTo(component2);
-
- Object earlyComponent1 =
- ((TestApplicationComponentManager) componentManager).earlySingletonComponent();
- Object earlyComponent2 =
- ((TestApplicationComponentManager) componentManager).earlySingletonComponent();
- assertThat(earlyComponent1).isNotNull();
- assertThat(earlyComponent2).isNotNull();
- assertThat(earlyComponent1).isEqualTo(earlyComponent2);
- assertThat(earlyComponent1).isNotEqualTo(component1);
- }
-
- // Test that the early entry point returns a different @Singleton binding instance.
- @Test
- public void testScopedEntryPointValues() {
- Foo foo1 = EntryPoints.get(getApplicationContext(), FooEntryPoint.class).foo();
- Foo foo2 = EntryPoints.get(getApplicationContext(), FooEntryPoint.class).foo();
- Foo earlyFoo1 =
- EarlyEntryPoints.get(getApplicationContext(), EarlyFooEntryPoint.class).foo();
- Foo earlyFoo2 =
- EarlyEntryPoints.get(getApplicationContext(), EarlyFooEntryPoint.class).foo();
-
- assertThat(foo1).isNotNull();
- assertThat(foo2).isNotNull();
- assertThat(earlyFoo1).isNotNull();
- assertThat(earlyFoo2).isNotNull();
-
- assertThat(foo1).isEqualTo(foo2);
- assertThat(earlyFoo1).isEqualTo(earlyFoo2);
- assertThat(earlyFoo1).isNotEqualTo(foo1);
- }
-
- // Test that the a subcomponent of the early component does not need to use EarlyEntryPoints.
- @Test
- public void testSubcomponentEntryPoints() {
- MySubcomponent subcomponent =
- EntryPoints.get(getApplicationContext(), MySubcomponentBuilderEntryPoint.class)
- .mySubcomponentBuilder()
- .id(5)
- .build();
-
- MySubcomponent earlySubcomponent =
- EarlyEntryPoints.get(
- getApplicationContext(), EarlyMySubcomponentBuilderEntryPoint.class)
- .mySubcomponentBuilder()
- .id(11)
- .build();
-
- assertThat(subcomponent).isNotNull();
- assertThat(earlySubcomponent).isNotNull();
- assertThat(subcomponent).isNotEqualTo(earlySubcomponent);
-
- // Test that subcomponents can use EntryPoints
- Bar bar1 = EntryPoints.get(subcomponent, BarEntryPoint.class).bar();
- Bar bar2 = EntryPoints.get(subcomponent, BarEntryPoint.class).bar();
-
- // Test that early subcomponents can use EntryPoints or EarlyEntryPoints
- Bar earlyBar1 = EntryPoints.get(earlySubcomponent, BarEntryPoint.class).bar();
- Bar earlyBar2 = EntryPoints.get(earlySubcomponent, BarEntryPoint.class).bar();
-
- assertThat(bar1).isNotNull();
- assertThat(bar2).isNotNull();
- assertThat(earlyBar1).isNotNull();
- assertThat(earlyBar2).isNotNull();
- assertThat(bar1).isEqualTo(bar2);
- assertThat(earlyBar1).isEqualTo(earlyBar2);
- assertThat(bar1).isNotEqualTo(earlyBar1);
- }
-}