From b83698a58e74d813a4556a2b6a2a869fc4ef3a64 Mon Sep 17 00:00:00 2001 From: Maikel Steneker Date: Mon, 12 Nov 2018 11:12:49 +0100 Subject: [PATCH] Added test cases for Kotlin support for CPD. --- .../sourceforge/pmd/LanguageVersionTest.java | 27 +++++++++ .../pmd/cpd/KotlinTokenizerTest.java | 56 +++++++++++++++++++ .../net/sourceforge/pmd/cpd/comment.kt | 27 +++++++++ .../net/sourceforge/pmd/cpd/imports.kt | 4 ++ .../net/sourceforge/pmd/cpd/increment.kt | 25 +++++++++ 5 files changed, 139 insertions(+) create mode 100644 pmd-kotlin/src/test/java/net/sourceforge/pmd/LanguageVersionTest.java create mode 100644 pmd-kotlin/src/test/java/net/sourceforge/pmd/cpd/KotlinTokenizerTest.java create mode 100644 pmd-kotlin/src/test/resources/net/sourceforge/pmd/cpd/comment.kt create mode 100644 pmd-kotlin/src/test/resources/net/sourceforge/pmd/cpd/imports.kt create mode 100644 pmd-kotlin/src/test/resources/net/sourceforge/pmd/cpd/increment.kt diff --git a/pmd-kotlin/src/test/java/net/sourceforge/pmd/LanguageVersionTest.java b/pmd-kotlin/src/test/java/net/sourceforge/pmd/LanguageVersionTest.java new file mode 100644 index 0000000000..a60ae63ecc --- /dev/null +++ b/pmd-kotlin/src/test/java/net/sourceforge/pmd/LanguageVersionTest.java @@ -0,0 +1,27 @@ +/** + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +package net.sourceforge.pmd; + +import java.util.Arrays; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + +import net.sourceforge.pmd.lang.LanguageRegistry; +import net.sourceforge.pmd.lang.LanguageVersion; +import net.sourceforge.pmd.lang.kotlin.KotlinLanguageModule; + +public class LanguageVersionTest extends AbstractLanguageVersionTest { + + public LanguageVersionTest(String name, String terseName, String version, LanguageVersion expected) { + super(name, terseName, version, expected); + } + + @Parameters + public static Collection data() { + return Arrays.asList(new Object[][] { { KotlinLanguageModule.NAME, KotlinLanguageModule.TERSE_NAME, "1.3", + LanguageRegistry.getLanguage(KotlinLanguageModule.NAME).getDefaultVersion(), }, }); + } +} diff --git a/pmd-kotlin/src/test/java/net/sourceforge/pmd/cpd/KotlinTokenizerTest.java b/pmd-kotlin/src/test/java/net/sourceforge/pmd/cpd/KotlinTokenizerTest.java new file mode 100644 index 0000000000..6d45a5bc8b --- /dev/null +++ b/pmd-kotlin/src/test/java/net/sourceforge/pmd/cpd/KotlinTokenizerTest.java @@ -0,0 +1,56 @@ +/** + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +package net.sourceforge.pmd.cpd; + +import java.io.IOException; +import java.util.Arrays; +import java.util.Collection; + +import org.apache.commons.io.IOUtils; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import net.sourceforge.pmd.testframework.AbstractTokenizerTest; + +@RunWith(Parameterized.class) +public class KotlinTokenizerTest extends AbstractTokenizerTest { + + private final String filename; + private final int nExpectedTokens; + + public KotlinTokenizerTest(String filename, int nExpectedTokens) { + this.filename = filename; + this.nExpectedTokens = nExpectedTokens; + } + + @Parameterized.Parameters + public static Collection data() { + return Arrays.asList( + new Object[] { "comment.kt", 5 }, + new Object[] { "increment.kt", 185 }, + new Object[] { "imports.kt", 1 } + ); + } + + @Before + @Override + public void buildTokenizer() throws IOException { + this.tokenizer = new KotlinTokenizer(); + this.sourceCode = new SourceCode(new SourceCode.StringCodeLoader(this.getSampleCode(), this.filename)); + } + + @Override + public String getSampleCode() throws IOException { + return IOUtils.toString(KotlinTokenizer.class.getResourceAsStream(this.filename)); + } + + @Test + public void tokenizeTest() throws IOException { + this.expectedTokenCount = nExpectedTokens; + super.tokenizeTest(); + } +} diff --git a/pmd-kotlin/src/test/resources/net/sourceforge/pmd/cpd/comment.kt b/pmd-kotlin/src/test/resources/net/sourceforge/pmd/cpd/comment.kt new file mode 100644 index 0000000000..3f0e783d82 --- /dev/null +++ b/pmd-kotlin/src/test/resources/net/sourceforge/pmd/cpd/comment.kt @@ -0,0 +1,27 @@ +package com.github.shyiko.ktlint.internal + +var x = 0 + +/* +fun increment1() { x += 1 } +fun increment2() { x += 1 } +fun increment3() { x += 1 } +fun increment4() { x += 1 } +fun increment5() { x += 1 } +fun increment6() { x += 1 } +fun increment7() { x += 1 } +fun increment8() { x += 1 } +fun increment9() { x += 1 } +fun increment10() { x += 1 } +fun increment11() { x += 1 } +fun increment12() { x += 1 } +fun increment13() { x += 1 } +fun increment14() { x += 1 } +fun increment15() { x += 1 } +fun increment16() { x += 1 } +fun increment17() { x += 1 } +fun increment18() { x += 1 } +fun increment19() { x += 1 } +fun increment20() { x += 1 } +*/ + diff --git a/pmd-kotlin/src/test/resources/net/sourceforge/pmd/cpd/imports.kt b/pmd-kotlin/src/test/resources/net/sourceforge/pmd/cpd/imports.kt new file mode 100644 index 0000000000..3f284aa546 --- /dev/null +++ b/pmd-kotlin/src/test/resources/net/sourceforge/pmd/cpd/imports.kt @@ -0,0 +1,4 @@ +import java.math.BigInteger +import java.math.BigInteger as BigInt +import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm +import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm.* diff --git a/pmd-kotlin/src/test/resources/net/sourceforge/pmd/cpd/increment.kt b/pmd-kotlin/src/test/resources/net/sourceforge/pmd/cpd/increment.kt new file mode 100644 index 0000000000..58bd764e53 --- /dev/null +++ b/pmd-kotlin/src/test/resources/net/sourceforge/pmd/cpd/increment.kt @@ -0,0 +1,25 @@ +package com.github.shyiko.ktlint.internal + +var x = 0 + +fun increment1() { x += 1 } +fun increment2() { x += 1 } +fun increment3() { x += 1 } +fun increment4() { x += 1 } +fun increment5() { x += 1 } +fun increment6() { x += 1 } +fun increment7() { x += 1 } +fun increment8() { x += 1 } +fun increment9() { x += 1 } +fun increment10() { x += 1 } +fun increment11() { x += 1 } +fun increment12() { x += 1 } +fun increment13() { x += 1 } +fun increment14() { x += 1 } +fun increment15() { x += 1 } +fun increment16() { x += 1 } +fun increment17() { x += 1 } +fun increment18() { x += 1 } +fun increment19() { x += 1 } +fun increment20() { x += 1 } +