1 /* 2 * Copyright (C) 2020 The Dagger Authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package dagger.hilt.android.testing.testinstallin; 18 19 import dagger.Module; 20 import dagger.Provides; 21 import dagger.hilt.InstallIn; 22 import dagger.hilt.components.SingletonComponent; 23 import dagger.hilt.testing.TestInstallIn; 24 25 /** Modules and classes used in TestInstallInFooTest and TestInstallInBarTest. */ 26 final class TestInstallInModules { TestInstallInModules()27 private TestInstallInModules() {} 28 29 static class Foo { 30 Class<?> moduleClass; 31 Foo(Class<?> moduleClass)32 Foo(Class<?> moduleClass) { 33 this.moduleClass = moduleClass; 34 } 35 } 36 37 static class Bar { 38 Class<?> moduleClass; 39 Bar(Class<?> moduleClass)40 Bar(Class<?> moduleClass) { 41 this.moduleClass = moduleClass; 42 } 43 } 44 45 @Module 46 @InstallIn(SingletonComponent.class) 47 interface GlobalFooModule { 48 @Provides provideFoo()49 static Foo provideFoo() { 50 return new Foo(GlobalFooModule.class); 51 } 52 } 53 54 @Module 55 @InstallIn(SingletonComponent.class) 56 interface GlobalBarModule { 57 @Provides provideFoo()58 static Bar provideFoo() { 59 return new Bar(GlobalBarModule.class); 60 } 61 } 62 63 @Module 64 @TestInstallIn(components = SingletonComponent.class, replaces = GlobalFooModule.class) 65 interface GlobalFooTestModule { 66 @Provides provideFoo()67 static Foo provideFoo() { 68 return new Foo(GlobalFooTestModule.class); 69 } 70 } 71 } 72