Skip to content

Commit 3ebe918

Browse files
KON-629 Add providers for all common combinations of interface, object and class (#1260)
* add KoClassAndInterfaceDeclaration and KoClassAndInterfaceProvider * add tests * extract KoClassAndInterfaceAndObjectDeclaration * add first tests * add tests * add tests * add tests * upd code * add KoClassAndInterfaceDeclaration * upd code * add tests * add KoClassAndObjectDeclaration * add tests * clean code * add KoInterfaceAndObjectDeclaration * add tests * clean code * clean code * add missing Konsist test * upd kdocs * add comment * clean code * add KoClassAndInterfaceAndObjectProviderListExt and tests * add KoClassAndInterfaceProviderListExt and tests * add KoClassAndObjectProviderListExt and tests * add KoInterfaceAndObjectProviderListExt and tests * rename tests * clean code * improve konsist tests * fix dokka error * fix after merge * clean code
1 parent d063c70 commit 3ebe918

File tree

131 files changed

+9164
-448
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

131 files changed

+9164
-448
lines changed

gradle.properties

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

22
org.gradle.parallel=true
33
org.gradle.daemon=true
4+
org.gradle.jvmargs=-Xmx4096M
45

56
konsist.version=0.16.0
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
package com.lemonappdev.konsist.core.container
2+
3+
import com.lemonappdev.konsist.TestSnippetProvider
4+
import org.amshove.kluent.shouldBeEqualTo
5+
import org.junit.jupiter.api.Test
6+
import org.junit.jupiter.params.provider.Arguments.arguments
7+
8+
class KoScopeForKoClassAndInterfaceAndObjectDeclarationTest {
9+
@Test
10+
fun `scope-contains-no-class-and-interface-and-object`() {
11+
// given
12+
val sut = getSnippetFile("scope-contains-no-class-and-interface-and-object")
13+
14+
// then
15+
sut
16+
.classesAndInterfacesAndObjects()
17+
.shouldBeEqualTo(emptyList())
18+
}
19+
20+
@Test
21+
fun `scope-contains-nested-and-local-classes-and-interfaces-and-objects includeNested true includeLocal true`() {
22+
// given
23+
val sut = getSnippetFile("scope-contains-nested-and-local-classes-and-interfaces-and-objects")
24+
25+
// then
26+
val expected =
27+
listOf(
28+
"SampleLocalClass",
29+
"SampleClassNestedInsideObject",
30+
"SampleInterfaceNestedInsideObject",
31+
"SampleObject",
32+
"SampleObjectNestedInsideObject",
33+
)
34+
35+
sut.classesAndInterfacesAndObjects(includeNested = true, includeLocal = true)
36+
.map { it.name }
37+
.shouldBeEqualTo(expected)
38+
}
39+
40+
@Test
41+
fun `scope-contains-nested-and-local-classes-and-interfaces-and-objects includeNested true includeLocal false`() {
42+
// given
43+
val sut = getSnippetFile("scope-contains-nested-and-local-classes-and-interfaces-and-objects")
44+
45+
// then
46+
val expected =
47+
listOf(
48+
"SampleClassNestedInsideObject",
49+
"SampleInterfaceNestedInsideObject",
50+
"SampleObject",
51+
"SampleObjectNestedInsideObject",
52+
)
53+
54+
sut.classesAndInterfacesAndObjects(includeNested = true, includeLocal = false)
55+
.map { it.name }
56+
.shouldBeEqualTo(expected)
57+
}
58+
59+
@Test
60+
fun `scope-contains-nested-and-local-classes-and-interfaces-and-objects includeNested false includeLocal true`() {
61+
// given
62+
val sut = getSnippetFile("scope-contains-nested-and-local-classes-and-interfaces-and-objects")
63+
64+
// then
65+
val expected = listOf("SampleLocalClass", "SampleObject")
66+
67+
sut.classesAndInterfacesAndObjects(includeNested = false, includeLocal = true)
68+
.map { it.name }
69+
.shouldBeEqualTo(expected)
70+
}
71+
72+
@Test
73+
fun `scope-contains-nested-and-local-classes-and-interfaces-and-objects includeNested false includeLocal false`() {
74+
// given
75+
val sut = getSnippetFile("scope-contains-nested-and-local-classes-and-interfaces-and-objects")
76+
77+
// then
78+
val expected = listOf("SampleObject")
79+
80+
sut.classesAndInterfacesAndObjects(includeNested = false, includeLocal = false)
81+
.map { it.name }
82+
.shouldBeEqualTo(expected)
83+
}
84+
85+
private fun getSnippetFile(fileName: String) =
86+
TestSnippetProvider.getSnippetKoScope("core/container/snippet/forkoclassandinterfaceandobjectdeclaration/", fileName)
87+
88+
companion object {
89+
@Suppress("unused")
90+
@JvmStatic
91+
fun provideValues() =
92+
listOf(
93+
arguments(
94+
false,
95+
false,
96+
listOf("SampleClass"),
97+
),
98+
arguments(
99+
true,
100+
false,
101+
listOf(
102+
"SampleClass",
103+
"SampleNestedClass1",
104+
"SampleNestedClass2",
105+
),
106+
),
107+
arguments(
108+
false,
109+
true,
110+
listOf("SampleClass"),
111+
),
112+
arguments(
113+
true,
114+
true,
115+
listOf(
116+
"SampleClass",
117+
"SampleLocalClass",
118+
"SampleNestedClass1",
119+
"SampleNestedClass2",
120+
),
121+
),
122+
)
123+
}
124+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
package com.lemonappdev.konsist.core.container
2+
3+
import com.lemonappdev.konsist.TestSnippetProvider
4+
import com.lemonappdev.konsist.api.declaration.combined.KoClassAndInterfaceDeclaration
5+
import org.amshove.kluent.shouldBeEqualTo
6+
import org.junit.jupiter.api.Test
7+
import org.junit.jupiter.params.provider.Arguments.arguments
8+
9+
class KoScopeForKoClassAndInterfaceDeclarationTest {
10+
@Test
11+
fun `scope-contains-no-class-and-interface`() {
12+
// given
13+
val sut = getSnippetFile("scope-contains-no-class-and-interface")
14+
15+
// then
16+
sut
17+
.classesAndInterfaces()
18+
.shouldBeEqualTo(emptyList())
19+
}
20+
21+
@Test
22+
fun `scope-contains-nested-and-local-classes-and-interfaces includeNested true includeLocal true`() {
23+
// given
24+
val sut = getSnippetFile("scope-contains-nested-and-local-classes-and-interfaces")
25+
26+
// then
27+
val expected =
28+
listOf(
29+
"SampleLocalClass",
30+
"SampleClassNestedInsideObject",
31+
"SampleInterfaceNestedInsideObject",
32+
)
33+
34+
sut.classesAndInterfaces(includeNested = true, includeLocal = true)
35+
.map { it.name }
36+
.shouldBeEqualTo(expected)
37+
}
38+
39+
@Test
40+
fun `scope-contains-nested-and-local-classes-and-interfaces includeNested true includeLocal false`() {
41+
// given
42+
val sut = getSnippetFile("scope-contains-nested-and-local-classes-and-interfaces")
43+
44+
// then
45+
val expected =
46+
listOf(
47+
"SampleClassNestedInsideObject",
48+
"SampleInterfaceNestedInsideObject",
49+
)
50+
51+
sut.classesAndInterfaces(includeNested = true, includeLocal = false)
52+
.map { it.name }
53+
.shouldBeEqualTo(expected)
54+
}
55+
56+
@Test
57+
fun `scope-contains-nested-and-local-classes-and-interfaces includeNested false includeLocal true`() {
58+
// given
59+
val sut = getSnippetFile("scope-contains-nested-and-local-classes-and-interfaces")
60+
61+
// then
62+
val expected = listOf("SampleLocalClass")
63+
64+
sut.classesAndInterfaces(includeNested = false, includeLocal = true)
65+
.map { it.name }
66+
.shouldBeEqualTo(expected)
67+
}
68+
69+
@Test
70+
fun `scope-contains-nested-and-local-classes-and-interfaces includeNested false includeLocal false`() {
71+
// given
72+
val sut = getSnippetFile("scope-contains-nested-and-local-classes-and-interfaces")
73+
74+
// then
75+
val expected = emptyList<KoClassAndInterfaceDeclaration>()
76+
77+
sut.classesAndInterfaces(includeNested = false, includeLocal = false)
78+
.map { it.name }
79+
.shouldBeEqualTo(expected)
80+
}
81+
82+
private fun getSnippetFile(fileName: String) =
83+
TestSnippetProvider.getSnippetKoScope("core/container/snippet/forkoclassandinterfacedeclaration/", fileName)
84+
85+
companion object {
86+
@Suppress("unused")
87+
@JvmStatic
88+
fun provideValues() =
89+
listOf(
90+
arguments(
91+
false,
92+
false,
93+
listOf("SampleClass"),
94+
),
95+
arguments(
96+
true,
97+
false,
98+
listOf(
99+
"SampleClass",
100+
"SampleNestedClass1",
101+
"SampleNestedClass2",
102+
),
103+
),
104+
arguments(
105+
false,
106+
true,
107+
listOf("SampleClass"),
108+
),
109+
arguments(
110+
true,
111+
true,
112+
listOf(
113+
"SampleClass",
114+
"SampleLocalClass",
115+
"SampleNestedClass1",
116+
"SampleNestedClass2",
117+
),
118+
),
119+
)
120+
}
121+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
package com.lemonappdev.konsist.core.container
2+
3+
import com.lemonappdev.konsist.TestSnippetProvider
4+
import org.amshove.kluent.shouldBeEqualTo
5+
import org.junit.jupiter.api.Test
6+
import org.junit.jupiter.params.provider.Arguments.arguments
7+
8+
class KoScopeForKoClassAndObjectDeclarationTest {
9+
@Test
10+
fun `scope-contains-no-class-and-object`() {
11+
// given
12+
val sut = getSnippetFile("scope-contains-no-class-and-object")
13+
14+
// then
15+
sut
16+
.classesAndObjects()
17+
.shouldBeEqualTo(emptyList())
18+
}
19+
20+
@Test
21+
fun `scope-contains-nested-and-local-classes-and-objects includeNested true includeLocal true`() {
22+
// given
23+
val sut = getSnippetFile("scope-contains-nested-and-local-classes-and-objects")
24+
25+
// then
26+
val expected =
27+
listOf(
28+
"SampleLocalClass",
29+
"SampleClassNestedInsideObject",
30+
"SampleObject",
31+
"SampleObjectNestedInsideObject",
32+
)
33+
34+
sut.classesAndObjects(includeNested = true, includeLocal = true)
35+
.map { it.name }
36+
.shouldBeEqualTo(expected)
37+
}
38+
39+
@Test
40+
fun `scope-contains-nested-and-local-classes-and-objects includeNested true includeLocal false`() {
41+
// given
42+
val sut = getSnippetFile("scope-contains-nested-and-local-classes-and-objects")
43+
44+
// then
45+
val expected =
46+
listOf(
47+
"SampleClassNestedInsideObject",
48+
"SampleObject",
49+
"SampleObjectNestedInsideObject",
50+
)
51+
52+
sut.classesAndObjects(includeNested = true, includeLocal = false)
53+
.map { it.name }
54+
.shouldBeEqualTo(expected)
55+
}
56+
57+
@Test
58+
fun `scope-contains-nested-and-local-classes-and-objects includeNested false includeLocal true`() {
59+
// given
60+
val sut = getSnippetFile("scope-contains-nested-and-local-classes-and-objects")
61+
62+
// then
63+
val expected = listOf("SampleLocalClass", "SampleObject")
64+
65+
sut.classesAndObjects(includeNested = false, includeLocal = true)
66+
.map { it.name }
67+
.shouldBeEqualTo(expected)
68+
}
69+
70+
@Test
71+
fun `scope-contains-nested-and-local-classes-and-objects includeNested false includeLocal false`() {
72+
// given
73+
val sut = getSnippetFile("scope-contains-nested-and-local-classes-and-objects")
74+
75+
// then
76+
val expected = listOf("SampleObject")
77+
78+
sut.classesAndObjects(includeNested = false, includeLocal = false)
79+
.map { it.name }
80+
.shouldBeEqualTo(expected)
81+
}
82+
83+
private fun getSnippetFile(fileName: String) =
84+
TestSnippetProvider.getSnippetKoScope("core/container/snippet/forkoclassandobjectdeclaration/", fileName)
85+
86+
companion object {
87+
@Suppress("unused")
88+
@JvmStatic
89+
fun provideValues() =
90+
listOf(
91+
arguments(
92+
false,
93+
false,
94+
listOf("SampleClass"),
95+
),
96+
arguments(
97+
true,
98+
false,
99+
listOf(
100+
"SampleClass",
101+
"SampleNestedClass1",
102+
"SampleNestedClass2",
103+
),
104+
),
105+
arguments(
106+
false,
107+
true,
108+
listOf("SampleClass"),
109+
),
110+
arguments(
111+
true,
112+
true,
113+
listOf(
114+
"SampleClass",
115+
"SampleLocalClass",
116+
"SampleNestedClass1",
117+
"SampleNestedClass2",
118+
),
119+
),
120+
)
121+
}
122+
}

lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/container/KoScopeForKoFileDeclarationTest.kt

+4
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,15 @@ class KoScopeForKoFileDeclarationTest {
2121
listOf(
2222
"KoScopeCreatorTest",
2323
"KoScopeForKoAnnotationDeclarationTest",
24+
"KoScopeForKoClassAndInterfaceAndObjectDeclarationTest",
25+
"KoScopeForKoClassAndInterfaceDeclarationTest",
26+
"KoScopeForKoClassAndObjectDeclarationTest",
2427
"KoScopeForKoClassDeclarationTest",
2528
"KoScopeForKoDeclarationTest",
2629
"KoScopeForKoFileDeclarationTest",
2730
"KoScopeForKoFunctionDeclarationTest",
2831
"KoScopeForKoImportDeclarationTest",
32+
"KoScopeForKoInterfaceAndObjectDeclarationTest",
2933
"KoScopeForKoInterfaceDeclarationTest",
3034
"KoScopeForKoObjectDeclarationTest",
3135
"KoScopeForKoPackagesDeclarationTest",

0 commit comments

Comments
 (0)