X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Ftest%2FGuice.kt;h=c8f241757461e074689969644ab17bb9dfbfb67c;hp=2fc4a9649da154c4a54ab87d7795d8a7f4d674d9;hb=04709e23f38e9d447337682ba27201da5dc19bd9;hpb=c12bed3557f3f1d80c9694a778fcaf3429b04073 diff --git a/src/test/kotlin/net/pterodactylus/sone/test/Guice.kt b/src/test/kotlin/net/pterodactylus/sone/test/Guice.kt index 2fc4a96..c8f2417 100644 --- a/src/test/kotlin/net/pterodactylus/sone/test/Guice.kt +++ b/src/test/kotlin/net/pterodactylus/sone/test/Guice.kt @@ -1,11 +1,10 @@ package net.pterodactylus.sone.test -import com.google.inject.Injector -import com.google.inject.Module +import com.google.inject.* import com.google.inject.name.* import org.mockito.* import javax.inject.Provider -import kotlin.reflect.KClass +import kotlin.reflect.* fun KClass.isProvidedBy(instance: T) = Module { it.bind(this.java).toProvider(Provider { instance }) } fun KClass.withNameIsProvidedBy(instance: T, name: String) = Module { it.bind(this.java).annotatedWith(Names.named(name)).toProvider(Provider { instance }) } @@ -14,7 +13,9 @@ fun KClass.isProvidedBy(provider: KClass>) = Module inline fun KClass.isProvidedByMock() = Module { it.bind(this.java).toProvider(Provider { mock() }) } inline fun KClass.isProvidedByDeepMock() = Module { it.bind(this.java).toProvider(Provider { deepMock() }) } -inline fun Injector.getInstance() = getInstance(T::class.java)!! +inline fun Injector.getInstance(annotation: Annotation? = null): T = annotation + ?.let { getInstance(Key.get(object : TypeLiteral() {}, it)) } + ?: getInstance(Key.get(object : TypeLiteral() {})) fun supply(javaClass: Class): Source = object : Source { override fun fromInstance(instance: T) = Module { it.bind(javaClass).toInstance(instance) }