diff options
Diffstat (limited to 'common-util/src/test/kotlin/com/google/devtools/ksp')
-rw-r--r-- | common-util/src/test/kotlin/com/google/devtools/ksp/MemoizedSequenceTest.kt | 27 | ||||
-rw-r--r-- | common-util/src/test/kotlin/com/google/devtools/ksp/processing/impl/CodeGeneratorImplTest.kt | 128 |
2 files changed, 155 insertions, 0 deletions
diff --git a/common-util/src/test/kotlin/com/google/devtools/ksp/MemoizedSequenceTest.kt b/common-util/src/test/kotlin/com/google/devtools/ksp/MemoizedSequenceTest.kt new file mode 100644 index 00000000..52ac4b2a --- /dev/null +++ b/common-util/src/test/kotlin/com/google/devtools/ksp/MemoizedSequenceTest.kt @@ -0,0 +1,27 @@ +package com.google.devtools.ksp + +import org.junit.Assert +import org.junit.Test + +class MemoizedSequenceTest { + @Test + fun testConcurrentRead() { + val memoized = MemoizedSequence( + sequenceOf(1, 2, 3, 4, 5, 6) + ) + val s1 = memoized.iterator() + val s2 = memoized.iterator() + val s1read = mutableListOf<Int>() + val s2read = mutableListOf<Int>() + while (s1.hasNext() || s2.hasNext()) { + if (s1.hasNext()) { + s1read.add(s1.next()) + } + if (s2.hasNext()) { + s2read.add(s2.next()) + } + } + Assert.assertEquals(listOf(1, 2, 3, 4, 5, 6), s1read) + Assert.assertEquals(listOf(1, 2, 3, 4, 5, 6), s2read) + } +} diff --git a/common-util/src/test/kotlin/com/google/devtools/ksp/processing/impl/CodeGeneratorImplTest.kt b/common-util/src/test/kotlin/com/google/devtools/ksp/processing/impl/CodeGeneratorImplTest.kt new file mode 100644 index 00000000..cd958f97 --- /dev/null +++ b/common-util/src/test/kotlin/com/google/devtools/ksp/processing/impl/CodeGeneratorImplTest.kt @@ -0,0 +1,128 @@ +package com.google.devtools.ksp.processing.impl + +import com.google.devtools.ksp.AnyChanges +import com.google.devtools.ksp.processing.Dependencies +import org.junit.Assert +import org.junit.Before +import org.junit.Test +import java.io.File +import java.nio.file.Files + +class CodeGeneratorImplTest { + + lateinit var codeGenerator: CodeGeneratorImpl + lateinit var baseDir: File + + @Before + fun setup() { + baseDir = Files.createTempDirectory("project").toFile() + val classesDir = File(baseDir, "classes") + classesDir.mkdir() + val javaDir = File(baseDir, "java") + javaDir.mkdir() + val kotlinDir = File(baseDir, "kotlin") + kotlinDir.mkdir() + val resourcesDir = File(baseDir, "resources") + resourcesDir.mkdir() + codeGenerator = CodeGeneratorImpl( + classesDir, + javaDir, + kotlinDir, + resourcesDir, + baseDir, + AnyChanges(baseDir), + emptyList(), + true + ) + } + + @Test + fun testCreatingAFile() { + codeGenerator.createNewFile(Dependencies.ALL_FILES, "a.b.c", "Test", "java") + codeGenerator.createNewFile(Dependencies.ALL_FILES, "a.b.c", "Test", "kt") + codeGenerator.createNewFile(Dependencies.ALL_FILES, "a.b.c", "Test", "class") + codeGenerator.createNewFile(Dependencies.ALL_FILES, "a.b.c", "Test", "") + + val files = codeGenerator.generatedFile.toList() + Assert.assertEquals(File(baseDir, "java/a/b/c/Test.java"), files[0]) + Assert.assertEquals(File(baseDir, "kotlin/a/b/c/Test.kt"), files[1]) + Assert.assertEquals(File(baseDir, "classes/a/b/c/Test.class"), files[2]) + Assert.assertEquals(File(baseDir, "resources/a/b/c/Test"), files[3]) + + try { + codeGenerator.outputs + } catch (e: Exception) { + Assert.fail("Failed to get outputs: ${e.message}") + } + } + + @Test + fun testCreatingAFileWithSlash() { + codeGenerator.createNewFile(Dependencies.ALL_FILES, "a/b/c", "Test", "java") + codeGenerator.createNewFile(Dependencies.ALL_FILES, "a/b/c", "Test", "kt") + codeGenerator.createNewFile(Dependencies.ALL_FILES, "a/b/c", "Test", "class") + codeGenerator.createNewFile(Dependencies.ALL_FILES, "a/b/c", "Test", "") + + val files = codeGenerator.generatedFile.toList() + Assert.assertEquals(File(baseDir, "java/a/b/c/Test.java"), files[0]) + Assert.assertEquals(File(baseDir, "kotlin/a/b/c/Test.kt"), files[1]) + Assert.assertEquals(File(baseDir, "classes/a/b/c/Test.class"), files[2]) + Assert.assertEquals(File(baseDir, "resources/a/b/c/Test"), files[3]) + + try { + codeGenerator.outputs + } catch (e: Exception) { + Assert.fail("Failed to get outputs: ${e.message}") + } + } + + @Test + fun testCreatingAFileWithPath() { + codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/Test", "java") + codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/Test") + codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/Test", "class") + codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/Test", "") + + val files = codeGenerator.generatedFile.toList() + Assert.assertEquals(File(baseDir, "java/a/b/c/Test.java"), files[0]) + Assert.assertEquals(File(baseDir, "kotlin/a/b/c/Test.kt"), files[1]) + Assert.assertEquals(File(baseDir, "classes/a/b/c/Test.class"), files[2]) + Assert.assertEquals(File(baseDir, "resources/a/b/c/Test"), files[3]) + + try { + codeGenerator.outputs + } catch (e: Exception) { + Assert.fail("Failed to get outputs: ${e.message}") + } + } + + @Test + fun testCreatingAFileWithPathAndDots() { + codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/dir.with.dot/Test", "java") + codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/dir.with.dot/Test") + codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/dir.with.dot/Test", "class") + codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/dir.with.dot/Test", "") + + val files = codeGenerator.generatedFile.toList() + Assert.assertEquals(File(baseDir, "java/a/b/c/dir.with.dot/Test.java"), files[0]) + Assert.assertEquals(File(baseDir, "kotlin/a/b/c/dir.with.dot/Test.kt"), files[1]) + Assert.assertEquals(File(baseDir, "classes/a/b/c/dir.with.dot/Test.class"), files[2]) + Assert.assertEquals(File(baseDir, "resources/a/b/c/dir.with.dot/Test"), files[3]) + + try { + codeGenerator.outputs + } catch (e: Exception) { + Assert.fail("Failed to get outputs: ${e.message}") + } + } + + @Test + fun testCreatingAFileByPathWithInvalidPath() { + try { + codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "../../b/c/Test", "java") + Assert.fail() + } catch (e: java.lang.IllegalStateException) { + Assert.assertEquals(e.message, "requested path is outside the bounds of the required directory") + } + } +} |