@@ -2,8 +2,10 @@ package me.tatarka.inject.test
2
2
3
3
import assertk.all
4
4
import assertk.assertFailure
5
+ import assertk.assertThat
5
6
import assertk.assertions.contains
6
7
import assertk.assertions.doesNotContain
8
+ import assertk.assertions.isTrue
7
9
import me.tatarka.inject.ProjectCompiler
8
10
import me.tatarka.inject.Target
9
11
import me.tatarka.inject.compiler.Options
@@ -578,6 +580,36 @@ class FailureTest {
578
580
}
579
581
}
580
582
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
+
581
613
@ParameterizedTest
582
614
@EnumSource(Target ::class )
583
615
fun fails_if_type_is_missing_arg_even_if_used_as_default_value (target : Target ) {
@@ -587,20 +619,20 @@ class FailureTest {
587
619
projectCompiler.source(
588
620
" MyComponent.kt" ,
589
621
"""
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
+ }
604
636
""" .trimIndent()
605
637
).compile()
606
638
}.output().all {
0 commit comments