Skip to content

Commit dc3eba2

Browse files
ZacSweersevant
authored andcommitted
Add an extra test for scope annotation equality
I wrote this while investigating #431 and figured it was worth still offering up in a PR if you want it!
1 parent eac8619 commit dc3eba2

File tree

1 file changed

+46
-14
lines changed
  • kotlin-inject-compiler/test/src/test/kotlin/me/tatarka/inject/test

1 file changed

+46
-14
lines changed

kotlin-inject-compiler/test/src/test/kotlin/me/tatarka/inject/test/FailureTest.kt

Lines changed: 46 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package me.tatarka.inject.test
22

33
import assertk.all
44
import assertk.assertFailure
5+
import assertk.assertThat
56
import assertk.assertions.contains
67
import assertk.assertions.doesNotContain
8+
import assertk.assertions.isTrue
79
import me.tatarka.inject.ProjectCompiler
810
import me.tatarka.inject.Target
911
import me.tatarka.inject.compiler.Options
@@ -578,6 +580,36 @@ class FailureTest {
578580
}
579581
}
580582

583+
@ParameterizedTest
584+
@EnumSource(Target::class)
585+
fun scopes_with_args_should_match_equality(target: Target) {
586+
val projectCompiler = ProjectCompiler(target, workingDir)
587+
588+
val result = projectCompiler.source(
589+
"MyComponent.kt",
590+
"""
591+
import me.tatarka.inject.annotations.Provides
592+
import me.tatarka.inject.annotations.Component
593+
import me.tatarka.inject.annotations.Scope
594+
import kotlin.reflect.KClass
595+
596+
@Scope
597+
annotation class SingleIn(val scope: KClass<*>)
598+
599+
abstract class AppScope private constructor()
600+
601+
@Component
602+
@SingleIn(AppScope::class)
603+
abstract class MyComponent {
604+
@Provides
605+
@SingleIn(AppScope::class)
606+
fun provideValue(): String = "value"
607+
}
608+
""".trimIndent()
609+
).compile()
610+
assertThat(result.success).isTrue()
611+
}
612+
581613
@ParameterizedTest
582614
@EnumSource(Target::class)
583615
fun fails_if_type_is_missing_arg_even_if_used_as_default_value(target: Target) {
@@ -587,20 +619,20 @@ class FailureTest {
587619
projectCompiler.source(
588620
"MyComponent.kt",
589621
"""
590-
import me.tatarka.inject.annotations.Inject
591-
import me.tatarka.inject.annotations.Component
592-
593-
@Component abstract class MyComponent {
594-
abstract val foo: Foo
595-
}
596-
597-
@Inject class Foo(bar: Bar = Bar(""))
598-
599-
@Inject class Bar(value: String)
600-
601-
@Component abstract class MyChildComponent(@Component val parent: MyParentComponent) {
602-
abstract val foo: String
603-
}
622+
import me.tatarka.inject.annotations.Inject
623+
import me.tatarka.inject.annotations.Component
624+
625+
@Component abstract class MyComponent {
626+
abstract val foo: Foo
627+
}
628+
629+
@Inject class Foo(bar: Bar = Bar(""))
630+
631+
@Inject class Bar(value: String)
632+
633+
@Component abstract class MyChildComponent(@Component val parent: MyParentComponent) {
634+
abstract val foo: String
635+
}
604636
""".trimIndent()
605637
).compile()
606638
}.output().all {

0 commit comments

Comments
 (0)