Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KON-168 Extract Api To Separate Package #106

Merged
merged 33 commits into from
May 3, 2023
Merged
Changes from 1 commit
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
3c7129a
Extract KoScope interface
igorwojda May 3, 2023
1f45d04
Rename API entry point
igorwojda May 3, 2023
8f75014
Make KoScope internal
igorwojda May 3, 2023
5dbd3d2
Move const to api
igorwojda May 3, 2023
cc6975e
Rename enums
igorwojda May 3, 2023
1b2bcb9
Move ext to api package
igorwojda May 3, 2023
6862817
Rename To Impl
igorwojda May 3, 2023
e60a6e4
Extract Declaration interfaces
igorwojda May 3, 2023
2befaa0
Extract Declaration interfaces
igorwojda May 3, 2023
55c7040
Make exceptions internal
igorwojda May 3, 2023
01c8517
Extract Declaration interfaces
igorwojda May 3, 2023
b9cec85
Upd Declaration hierarchy
igorwojda May 3, 2023
0304941
Upd Declaration PRoviders
igorwojda May 3, 2023
094d070
Upd KoScope APi
igorwojda May 3, 2023
89f3161
Make internal
igorwojda May 3, 2023
cf82897
Upd KoScope Api
igorwojda May 3, 2023
149b7b6
Upd Sequence Extension Api
igorwojda May 3, 2023
8d20b3e
Make internal
igorwojda May 3, 2023
2b3ae88
Add KoDocTagDeclaration interfaces
igorwojda May 3, 2023
1f9f06c
Move Interfaces to API
igorwojda May 3, 2023
b9b0d08
Moved sequence and add refied extensions
igorwojda May 3, 2023
8a84fda
Clean up internal modifiers
igorwojda May 3, 2023
94dcf72
Move Sequence Tests
igorwojda May 3, 2023
920e377
Rename Tests
igorwojda May 3, 2023
3777cfb
Rename Test
igorwojda May 3, 2023
b5c89f2
Added Extensions tests
igorwojda May 3, 2023
5700854
Rename file
igorwojda May 3, 2023
fd90986
Rename snippet
igorwojda May 3, 2023
ff9c979
Update Tests
igorwojda May 3, 2023
bd4d7ee
Update Tests
igorwojda May 3, 2023
027b886
Improve tests
igorwojda May 3, 2023
42d6042
Fix detekt and spotless
igorwojda May 3, 2023
967042c
Upd folder name
igorwojda May 3, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Improve tests
igorwojda committed May 3, 2023
commit 027b886d3ac16e7d9d87077e3b5f3ffc403774de
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.lemonappdev.konsist.api.ext.declaration.koparameterDeclaration

import com.lemonappdev.konsist.TestSnippetProvider.getSnippetKoScope
import com.lemonappdev.konsist.api.ext.declaration.representsTypeOf
import com.lemonappdev.konsist.testdata.SampleType
import org.amshove.kluent.assertSoftly
import org.amshove.kluent.shouldBeEqualTo
import org.junit.jupiter.api.Test

class KoParameterDeclarationExtTest {
@Test
fun `parameter-represents-type-of-type`() {
// given
val sut = getSnippetFile("parameter-represents-type-of-type")
.functions()
.first()
.parameters
.first()

// then
assertSoftly(sut) {
it.representsTypeOf<SampleType>() shouldBeEqualTo true
}
}

private fun getSnippetFile(fileName: String) = getSnippetKoScope("api/ext/declaration/koparameterdeclaration/snippet/", fileName)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import com.lemonappdev.konsist.testdata.SampleType

inline fun sampleInlineFunction(crossinline sampleParameter: SampleType) {}
Original file line number Diff line number Diff line change
@@ -217,5 +217,20 @@ class KoParameterDeclarationTest {
}
}

@Test
fun `parameter-represents-type`() {
// given
val sut = getSnippetFile("parameter-represents-type")
.functions()
.first()
.parameters
.first()

// then
assertSoftly(sut) {
it.representsType("SampleType") shouldBeEqualTo true
}
}

private fun getSnippetFile(fileName: String) = getSnippetKoScope("core/declaration/koparameterdeclaration/snippet/", fileName)
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
import com.lemonappdev.konsist.testdata.SampleType

inline fun sampleInlineFunction(crossinline sampleProperty: () -> SampleType) {}
inline fun sampleInlineFunction(crossinline sampleParameter: () -> SampleType) {}
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
import com.lemonappdev.konsist.testdata.SampleType

inline fun sampleInlineFunction(noinline sampleProperty: () -> SampleType) {}
inline fun sampleInlineFunction(noinline sampleParameter: () -> SampleType) {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import com.lemonappdev.konsist.testdata.SampleType

inline fun sampleInlineFunction(crossinline sampleParameter: SampleType) {}
Original file line number Diff line number Diff line change
@@ -13,5 +13,5 @@ interface KoParameterDeclaration : KoDeclaration {

fun hasDefaultValue(value: String? = null): Boolean

fun hasType(type: String): Boolean
fun representsType(type: String): Boolean
}
Original file line number Diff line number Diff line change
@@ -2,4 +2,4 @@ package com.lemonappdev.konsist.api.ext.declaration

import com.lemonappdev.konsist.api.declaration.KoParameterDeclaration

inline fun <reified T> KoParameterDeclaration.hasTypeOf() = T::class.simpleName == type.name
inline fun <reified T> KoParameterDeclaration.representsTypeOf() = T::class.simpleName == type.name
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.lemonappdev.konsist.api.ext.sequence

import com.lemonappdev.konsist.api.declaration.KoParameterDeclaration
import com.lemonappdev.konsist.api.ext.declaration.hasTypeOf
import com.lemonappdev.konsist.api.ext.declaration.representsTypeOf
import kotlin.reflect.KClass

fun Sequence<KoParameterDeclaration>.withVarargModifier() = filter { it.hasVarargModifier() }
@@ -31,29 +31,29 @@ fun Sequence<KoParameterDeclaration>.withoutDefaultValue(vararg values: String)
}

fun Sequence<KoParameterDeclaration>.withType(vararg types: String) = filter {
types.any { type -> it.hasType(type) }
types.any { type -> it.representsType(type) }
}

fun Sequence<KoParameterDeclaration>.withoutType(vararg types: String) = filter {
types.none { type -> it.hasType(type) }
types.none { type -> it.representsType(type) }
}

fun Sequence<KoParameterDeclaration>.withTypeOf(vararg types: KClass<*>) = filter {
types.any { kClass ->
kClass
.simpleName
?.let { name -> it.hasType(name) } ?: false
?.let { name -> it.representsType(name) } ?: false
}
}

fun Sequence<KoParameterDeclaration>.withoutTypeOf(vararg types: KClass<*>) = filter {
types.none { kClass ->
kClass
.simpleName
?.let { name -> it.hasType(name) } ?: false
?.let { name -> it.representsType(name) } ?: false
}
}

inline fun <reified T> Sequence<KoParameterDeclaration>.withTypeOf() = filter { it.hasTypeOf<T>() }
inline fun <reified T> Sequence<KoParameterDeclaration>.withTypeOf() = filter { it.representsTypeOf<T>() }

inline fun <reified T> Sequence<KoParameterDeclaration>.withoutTypeOf() = filterNot { it.hasTypeOf<T>() }
inline fun <reified T> Sequence<KoParameterDeclaration>.withoutTypeOf() = filterNot { it.representsTypeOf<T>() }
Original file line number Diff line number Diff line change
@@ -52,7 +52,7 @@ internal class KoParameterDeclarationImpl private constructor(private val ktPara
else -> defaultValue == value
}

override fun hasType(type: String) = this.type.name == type || this.type.fullyQualifiedName == type
override fun representsType(type: String) = this.type.name == type || this.type.fullyQualifiedName == type

internal companion object {
private val cache = KoDeclarationCache<KoParameterDeclarationImpl>()
Original file line number Diff line number Diff line change
@@ -212,16 +212,16 @@ class KoParameterDeclarationSequenceExtTest {
val typeName1 = "SampleType1"
val typeName2 = "SampleType2"
val parameter1: KoParameterDeclarationImpl = mockk {
every { hasType(typeName1) } returns true
every { hasType(typeName2) } returns false
every { representsType(typeName1) } returns true
every { representsType(typeName2) } returns false
}
val parameter2: KoParameterDeclarationImpl = mockk {
every { hasType(typeName1) } returns false
every { hasType(typeName2) } returns true
every { representsType(typeName1) } returns false
every { representsType(typeName2) } returns true
}
val parameter3: KoParameterDeclarationImpl = mockk {
every { hasType(typeName1) } returns false
every { hasType(typeName2) } returns false
every { representsType(typeName1) } returns false
every { representsType(typeName2) } returns false
}
val parameters = sequenceOf(parameter1, parameter2, parameter3)

@@ -238,16 +238,16 @@ class KoParameterDeclarationSequenceExtTest {
val typeName1 = "SampleType1"
val typeName2 = "SampleType2"
val parameter1: KoParameterDeclarationImpl = mockk {
every { hasType(typeName1) } returns true
every { hasType(typeName2) } returns false
every { representsType(typeName1) } returns true
every { representsType(typeName2) } returns false
}
val parameter2: KoParameterDeclarationImpl = mockk {
every { hasType(typeName1) } returns false
every { hasType(typeName2) } returns true
every { representsType(typeName1) } returns false
every { representsType(typeName2) } returns true
}
val parameter3: KoParameterDeclarationImpl = mockk {
every { hasType(typeName1) } returns false
every { hasType(typeName2) } returns false
every { representsType(typeName1) } returns false
every { representsType(typeName2) } returns false
}
val parameters = sequenceOf(parameter1, parameter2, parameter3)

@@ -264,16 +264,16 @@ class KoParameterDeclarationSequenceExtTest {
val typeName1 = "SampleType1"
val typeName2 = "SampleType2"
val parameter1: KoParameterDeclarationImpl = mockk {
every { hasType(typeName1) } returns true
every { hasType(typeName2) } returns false
every { representsType(typeName1) } returns true
every { representsType(typeName2) } returns false
}
val parameter2: KoParameterDeclarationImpl = mockk {
every { hasType(typeName1) } returns false
every { hasType(typeName2) } returns true
every { representsType(typeName1) } returns false
every { representsType(typeName2) } returns true
}
val parameter3: KoParameterDeclarationImpl = mockk {
every { hasType(typeName1) } returns false
every { hasType(typeName2) } returns false
every { representsType(typeName1) } returns false
every { representsType(typeName2) } returns false
}
val parameters = sequenceOf(parameter1, parameter2, parameter3)

@@ -290,16 +290,16 @@ class KoParameterDeclarationSequenceExtTest {
val typeName1 = "SampleType1"
val typeName2 = "SampleType2"
val parameter1: KoParameterDeclarationImpl = mockk {
every { hasType(typeName1) } returns true
every { hasType(typeName2) } returns false
every { representsType(typeName1) } returns true
every { representsType(typeName2) } returns false
}
val parameter2: KoParameterDeclarationImpl = mockk {
every { hasType(typeName1) } returns false
every { hasType(typeName2) } returns true
every { representsType(typeName1) } returns false
every { representsType(typeName2) } returns true
}
val parameter3: KoParameterDeclarationImpl = mockk {
every { hasType(typeName1) } returns false
every { hasType(typeName2) } returns false
every { representsType(typeName1) } returns false
every { representsType(typeName2) } returns false
}
val parameters = sequenceOf(parameter1, parameter2, parameter3)