Skip to content

Commit 94db706

Browse files
committed
Merge branch 'release/0.0.7'
2 parents 09d4ea3 + 1ceb459 commit 94db706

File tree

101 files changed

+1461
-418
lines changed

Some content is hidden

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

101 files changed

+1461
-418
lines changed

_build/parent/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>io.toolisticon.kotlin.generation._</groupId>
77
<artifactId>kotlin-code-generation-root</artifactId>
8-
<version>0.0.6</version>
8+
<version>0.0.7</version>
99
<relativePath>../../pom.xml</relativePath>
1010
</parent>
1111

_build/report-generator/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>io.toolisticon.kotlin.generation._</groupId>
77
<artifactId>kotlin-code-generation-parent</artifactId>
8-
<version>0.0.6</version>
8+
<version>0.0.7</version>
99
<relativePath>../parent/pom.xml</relativePath>
1010
</parent>
1111

_itest/builder-itest/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>io.toolisticon.kotlin.generation._</groupId>
77
<artifactId>kotlin-code-generation-itest-root</artifactId>
8-
<version>0.0.6</version>
8+
<version>0.0.7</version>
99
</parent>
1010

1111
<groupId>io.toolisticon.kotlin.generation.itest</groupId>

_itest/builder-itest/src/main/kotlin/MyCustomAnnotationSpec.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
@file:OptIn(ExperimentalKotlinPoetApi::class)
21

32
package io.toolisticon.kotlin.generation.itest
43

@@ -9,6 +8,7 @@ import io.toolisticon.kotlin.generation.KotlinCodeGeneration.buildFile
98
import io.toolisticon.kotlin.generation.itest.KotlinCodeGenerationITestConfig.ROOT_PACKAGE
109

1110

11+
@OptIn(ExperimentalKotlinPoetApi::class)
1212
object MyCustomAnnotationSpec {
1313
val name = ClassName(ROOT_PACKAGE, "MyCustomAnnotation")
1414

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package io.toolisticon.kotlin.generation.itest
2+
3+
import com.squareup.kotlinpoet.ExperimentalKotlinPoetApi
4+
import com.tschuchort.compiletesting.KotlinCompilation
5+
import io.toolisticon.kotlin.generation.KotlinCodeGeneration
6+
import io.toolisticon.kotlin.generation.itest.KotlinCodeGenerationITestConfig.ROOT_PACKAGE
7+
import io.toolisticon.kotlin.generation.spec.toFileSpec
8+
import io.toolisticon.kotlin.generation.test.KotlinCodeGenerationTest
9+
import io.toolisticon.kotlin.generation.test.model.KotlinCompilationCommand
10+
import org.assertj.core.api.Assertions.assertThat
11+
import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
12+
import org.junit.jupiter.api.Test
13+
import kotlin.reflect.KClass
14+
import kotlin.reflect.full.primaryConstructor
15+
import io.toolisticon.kotlin.generation.test.KotlinCodeGenerationTest.assertThat as compileAssertThat
16+
17+
@Suppress("UNCHECKED_CAST")
18+
@OptIn(ExperimentalKotlinPoetApi::class, ExperimentalCompilerApi::class)
19+
internal class DelegateStringListITest {
20+
21+
@Test
22+
fun `create and use string list`() {
23+
val list = KotlinCodeGeneration.buildDelegateListValueClass(ROOT_PACKAGE, "StringList", String::class) {
24+
propertyName("list")
25+
}.toFileSpec()
26+
27+
val result = KotlinCodeGenerationTest.compile(KotlinCompilationCommand(list))
28+
29+
30+
compileAssertThat(result).errorMessages().isEmpty()
31+
compileAssertThat(result).hasExitCode(KotlinCompilation.ExitCode.OK)
32+
33+
val klass: KClass<out Any> = result.loadClass(list.className)
34+
35+
val values = listOf("a", "b", "c")
36+
37+
val instance: List<String> = klass.primaryConstructor!!.call(values) as List<String>
38+
39+
assertThat(instance).hasToString("StringList(list=[a, b, c])")
40+
}
41+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package io.toolisticon.kotlin.generation.itest
2+
3+
import com.squareup.kotlinpoet.ExperimentalKotlinPoetApi
4+
import com.squareup.kotlinpoet.asTypeName
5+
import com.tschuchort.compiletesting.KotlinCompilation
6+
import io.toolisticon.kotlin.generation.KotlinCodeGeneration
7+
import io.toolisticon.kotlin.generation.itest.KotlinCodeGenerationITestConfig.ROOT_PACKAGE
8+
import io.toolisticon.kotlin.generation.spec.toFileSpec
9+
import io.toolisticon.kotlin.generation.test.KotlinCodeGenerationTest
10+
import io.toolisticon.kotlin.generation.test.model.KotlinCompilationCommand
11+
import org.assertj.core.api.Assertions.assertThat
12+
import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
13+
import org.junit.jupiter.api.Test
14+
import kotlin.reflect.KClass
15+
import kotlin.reflect.full.primaryConstructor
16+
import io.toolisticon.kotlin.generation.test.KotlinCodeGenerationTest.assertThat as compileAssertThat
17+
18+
@Suppress("UNCHECKED_CAST")
19+
@OptIn(ExperimentalKotlinPoetApi::class, ExperimentalCompilerApi::class)
20+
internal class DelegateStringLongMapITest {
21+
22+
@Test
23+
fun `create and use string long map`() {
24+
val map = KotlinCodeGeneration.buildDelegateMapValueClass(
25+
packageName = ROOT_PACKAGE,
26+
simpleName = "StringLongMap",
27+
valueType = Long::class.asTypeName()
28+
) {
29+
propertyName("map")
30+
}.toFileSpec()
31+
32+
val result = KotlinCodeGenerationTest.compile(KotlinCompilationCommand(map))
33+
compileAssertThat(result).errorMessages().isEmpty()
34+
compileAssertThat(result).hasExitCode(KotlinCompilation.ExitCode.OK)
35+
36+
val klass: KClass<out Any> = result.loadClass(map.className)
37+
38+
val values = mapOf("a" to 1, "b" to 2, "c" to 3)
39+
40+
val instance: Map<String, Long> = klass.primaryConstructor!!.call(values) as Map<String, Long>
41+
42+
assertThat(instance).hasToString("StringLongMap(map={a=1, b=2, c=3})")
43+
}
44+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package io.toolisticon.kotlin.generation.itest
2+
3+
import com.squareup.kotlinpoet.ExperimentalKotlinPoetApi
4+
import com.tschuchort.compiletesting.KotlinCompilation
5+
import io.toolisticon.kotlin.generation.KotlinCodeGeneration.buildRuntimeExceptionClass
6+
import io.toolisticon.kotlin.generation.itest.KotlinCodeGenerationITestConfig.ROOT_PACKAGE
7+
import io.toolisticon.kotlin.generation.spec.toFileSpec
8+
import io.toolisticon.kotlin.generation.test.KotlinCodeGenerationTest
9+
import io.toolisticon.kotlin.generation.test.model.KotlinCompilationCommand
10+
import org.assertj.core.api.Assertions.assertThat
11+
import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
12+
import org.junit.jupiter.api.Test
13+
import kotlin.reflect.KClass
14+
import kotlin.reflect.KProperty1
15+
import kotlin.reflect.full.memberProperties
16+
import kotlin.reflect.full.primaryConstructor
17+
import io.toolisticon.kotlin.generation.test.KotlinCodeGenerationTest.assertThat as compileAssertThat
18+
19+
@OptIn(ExperimentalKotlinPoetApi::class, ExperimentalCompilerApi::class)
20+
internal class DummyExceptionITest {
21+
22+
@Test
23+
fun `generate and create dummy exception`() {
24+
val exceptionFile = buildRuntimeExceptionClass(ROOT_PACKAGE, "DummyException") {
25+
messageTemplate("Dummy exception: expected: \$expected, actual: '\$actual'.")
26+
addConstructorProperty("expected", Boolean::class)
27+
addParameter("actual", String::class)
28+
includeCause()
29+
}.toFileSpec()
30+
31+
32+
val result = KotlinCodeGenerationTest.compile(KotlinCompilationCommand(exceptionFile))
33+
34+
compileAssertThat(result).errorMessages().isEmpty()
35+
compileAssertThat(result).hasExitCode(KotlinCompilation.ExitCode.OK)
36+
37+
val c: KClass<out Any> = result.loadClass(exceptionFile.className)
38+
39+
val cause = IllegalStateException("foo")
40+
val e: RuntimeException = c.primaryConstructor!!.call(true, "false", cause) as RuntimeException
41+
42+
assertThat(e.localizedMessage).isEqualTo("Dummy exception: expected: true, actual: 'false'.")
43+
44+
// TODO try to get value via pure kotlin without falling back to java
45+
val expectedProperty: KProperty1<out Any, *> = c.memberProperties.single { it.name == "expected" }
46+
val field = c.java.getDeclaredField("expected").apply { isAccessible = true }
47+
48+
val expectedValue = field.get(e) as Boolean
49+
50+
assertThat(expectedValue).isTrue()
51+
}
52+
}

_itest/builder-itest/src/test/kotlin/HelloWorldExampleITest.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
@file:OptIn(ExperimentalKotlinPoetApi::class, ExperimentalCompilerApi::class)
21

32
package io.toolisticon.kotlin.generation.itest
43

@@ -14,6 +13,7 @@ import org.assertj.core.api.Assertions.assertThat
1413
import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
1514
import org.junit.jupiter.api.Test
1615

16+
@OptIn(ExperimentalKotlinPoetApi::class, ExperimentalCompilerApi::class)
1717
internal class HelloWorldExampleITest {
1818

1919
@Test
@@ -34,7 +34,6 @@ internal class HelloWorldExampleITest {
3434
val file = buildFile(name) {
3535
addType(type)
3636
}
37-
println(file.code)
3837

3938
assertThat(file.packageName).isEqualTo("foo.bar")
4039

_itest/builder-itest/src/test/kotlin/KotlinFileSpecITest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
@file:OptIn(ExperimentalKotlinPoetApi::class, ExperimentalCompilerApi::class)
21
package io.toolisticon.kotlin.generation.itest
32

43
import com.squareup.kotlinpoet.ClassName
@@ -8,6 +7,7 @@ import io.toolisticon.kotlin.generation.builder.KotlinFileSpecBuilder
87
import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
98
import org.junit.jupiter.api.Test
109

10+
@OptIn(ExperimentalKotlinPoetApi::class, ExperimentalCompilerApi::class)
1111
internal class KotlinFileSpecITest {
1212

1313
@Target(AnnotationTarget.FILE)

_itest/builder-itest/src/test/kotlin/MyCustomAnnotationSpecITest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
@file:OptIn(ExperimentalKotlinPoetApi::class, ExperimentalCompilerApi::class)
21

32
package io.toolisticon.kotlin.generation.itest
43

@@ -17,6 +16,7 @@ import org.junit.jupiter.api.Test
1716
import kotlin.reflect.KClass
1817
import io.toolisticon.kotlin.generation.test.KotlinCodeGenerationTest.assertThat as assertThatCompilation
1918

19+
@OptIn(ExperimentalKotlinPoetApi::class, ExperimentalCompilerApi::class)
2020
internal class MyCustomAnnotationSpecITest {
2121

2222
@Test

0 commit comments

Comments
 (0)