blob: ad5f6cc9f8892348a11b602a05360db54fd44e24 [file] [log] [blame]
package com.github.shyiko.ktlint.ruleset.standard
import com.github.shyiko.ktlint.core.LintError
import com.github.shyiko.ktlint.test.format
import com.github.shyiko.ktlint.test.lint
import org.assertj.core.api.Assertions.assertThat
import org.testng.annotations.Test
class NoUnusedImportsRuleTest {
@Test
fun testLint() {
assertThat(NoUnusedImportsRule().lint(
"""
import p.a
import p.B6
import java.nio.file.Paths
import p.B as B12
import p2.B
import p.C
import p.a.*
import escaped.`when`
import escaped.`foo`
import p.infixfunc
fun main() {
println(a())
C.call(B())
1 infixfunc 2
`when`()
}
""".trimIndent()
)).isEqualTo(listOf(
LintError(2, 1, "no-unused-imports", "Unused import"),
LintError(3, 1, "no-unused-imports", "Unused import"),
LintError(4, 1, "no-unused-imports", "Unused import"),
LintError(9, 1, "no-unused-imports", "Unused import")
))
assertThat(NoUnusedImportsRule().lint(
"""
import rx.lang.kotlin.plusAssign
fun main() {
v += 1
}
""".trimIndent()
)).isEmpty()
}
@Test
fun testLintIssue204() {
assertThat(NoUnusedImportsRule().lint(
"""
package com.example.another
import com.example.anotherThing
class Foo {
val bar = anotherThing
}
""".trimIndent()
)).isEmpty()
}
@Test
fun testLintDestructuringAssignment() {
assertThat(NoUnusedImportsRule().lint(
"""
import p.component6
fun main() {
val (one, two, three, four, five, six) = someList
}
""".trimIndent()
)).isEmpty()
assertThat(NoUnusedImportsRule().lint(
"""
import p.component6
import p.component2
import p.component100
import p.component
import p.component12woohoo
fun main() {
val (one, two, three, four, five, six) = someList
}
""".trimIndent()
)).isEqualTo(listOf(
LintError(4, 1, "no-unused-imports", "Unused import"),
LintError(5, 1, "no-unused-imports", "Unused import")
))
}
@Test
fun testLintKDocLinkImport() {
assertThat(NoUnusedImportsRule().lint(
"""
package kdoc
import DRef
import p.PDRef
import DRef2
import p.PDRef2
import p.DRef3
import p.PDRef3
import p.PDRef4
import p.PDRef5
import p.O
/**
* [DRef] DRef2
* [O.method]
* [p.PDRef] p.PDRef2
* [PDRef3](p.DRef3) p.PDRef4 PDRef5
* [] text
*/
fun main() {}
""".trimIndent()
)).isEqualTo(listOf(
LintError(4, 1, "no-unused-imports", "Unused import"),
LintError(5, 1, "no-unused-imports", "Unused import"),
LintError(6, 1, "no-unused-imports", "Unused import"),
LintError(7, 1, "no-unused-imports", "Unused import"),
LintError(8, 1, "no-unused-imports", "Unused import"),
LintError(9, 1, "no-unused-imports", "Unused import"),
LintError(10, 1, "no-unused-imports", "Unused import")
))
}
@Test
fun testSamePackageImport() {
assertThat(NoUnusedImportsRule().lint(
"""
import C1
import C1 as C1X
import `C2`
import `C2` as C2X
import C3.method
fun main() {
println(C1, C1X, C2, C2X, method)
}
""".trimIndent()
)).isEqualTo(listOf(
LintError(3, 1, "no-unused-imports", "Unnecessary import"),
LintError(5, 1, "no-unused-imports", "Unnecessary import")
))
assertThat(NoUnusedImportsRule().lint(
"""
package p
import p.C1
import p.C1 as C1X
import p.`C2`
import p.`C2` as C2X
import p.C3.method
fun main() {
println(C1, C1X, C2, C2X, method)
}
""".trimIndent()
)).isEqualTo(listOf(
LintError(3, 1, "no-unused-imports", "Unnecessary import"),
LintError(5, 1, "no-unused-imports", "Unnecessary import")
))
}
@Test
fun testFormat() {
assertThat(NoUnusedImportsRule().format(
"""
import p.a
import p.B6
import p.B as B12
import p2.B as B2
import p.C
import escaped.`when`
import escaped.`foo`
fun main() {
println(a())
C.call()
fn(B2.NAME)
`when`()
}
""".trimIndent()
)).isEqualTo(
"""
import p.a
import p2.B as B2
import p.C
import escaped.`when`
fun main() {
println(a())
C.call()
fn(B2.NAME)
`when`()
}
""".trimIndent()
)
}
@Test
fun testFormatKDocLinkImport() {
assertThat(NoUnusedImportsRule().format(
"""
package kdoc
import DRef
import p.PDRef
import DRef2
import p.PDRef2
import p.DRef3
import p.PDRef3
import p.PDRef4
import p.PDRef5
/**
* [DRef] DRef2
* [p.PDRef] p.PDRef2
* [PDRef3](p.DRef3) p.PDRef4 PDRef5
*/
fun main() {}
""".trimIndent()
)).isEqualTo(
"""
package kdoc
import DRef
/**
* [DRef] DRef2
* [p.PDRef] p.PDRef2
* [PDRef3](p.DRef3) p.PDRef4 PDRef5
*/
fun main() {}
""".trimIndent()
)
}
}