@@ -28,7 +28,7 @@ class KonvertFromITest : KonverterITest() {
2828 code = SourceFile .kotlin(
2929 name = " TestCode.kt" ,
3030 contents =
31- """
31+ """
3232import io.mcarle.konvert.api.KonvertFrom
3333import io.mcarle.konvert.api.Mapping
3434
@@ -66,7 +66,7 @@ class TargetClass(
6666 code = SourceFile .kotlin(
6767 name = " TestCode.kt" ,
6868 contents =
69- """
69+ """
7070import io.mcarle.konvert.api.KonvertFrom
7171import io.mcarle.konvert.api.Mapping
7272
@@ -105,7 +105,7 @@ class TargetClass(
105105 code = SourceFile .kotlin(
106106 name = " TestCode.kt" ,
107107 contents =
108- """
108+ """
109109import io.mcarle.konvert.api.KonvertFrom
110110import io.mcarle.konvert.api.Mapping
111111
@@ -133,7 +133,7 @@ class TargetClass<T>(
133133 code = SourceFile .kotlin(
134134 name = " TestCode.kt" ,
135135 contents =
136- """
136+ """
137137import io.mcarle.konvert.api.KonvertFrom
138138import io.mcarle.konvert.api.Mapping
139139
@@ -159,7 +159,7 @@ class TargetClass(
159159 code = SourceFile .kotlin(
160160 name = " TestCode.kt" ,
161161 contents =
162- """
162+ """
163163import io.mcarle.konvert.api.KonvertFrom
164164import io.mcarle.konvert.api.Mapping
165165
@@ -187,7 +187,7 @@ annotation class TargetClass(
187187 code = SourceFile .kotlin(
188188 name = " TestCode.kt" ,
189189 contents =
190- """
190+ """
191191import io.mcarle.konvert.api.KonvertFrom
192192import io.mcarle.konvert.api.Mapping
193193
@@ -215,7 +215,7 @@ class TargetClass<T>(
215215 code = SourceFile .kotlin(
216216 name = " TestCode.kt" ,
217217 contents =
218- """
218+ """
219219import io.mcarle.konvert.api.KonvertFrom
220220import io.mcarle.konvert.api.Mapping
221221
@@ -243,7 +243,7 @@ object TargetClass {
243243 code = SourceFile .kotlin(
244244 name = " TestCode.kt" ,
245245 contents =
246- """
246+ """
247247import io.mcarle.konvert.api.KonvertFrom
248248import io.mcarle.konvert.api.Mapping
249249
@@ -271,6 +271,43 @@ data class TargetProperty(val value: String) {
271271 assertContains(extensionFunctionCode, " TargetProperty.fromSourceProperty(sourceProperty = sourceClass.sourceProperty)" )
272272 }
273273
274+ @Test
275+ fun useExpression () {
276+ val (compilation) = compileWith(
277+ enabledConverters = listOf (SameTypeConverter ()),
278+ code = SourceFile .kotlin(
279+ name = " TestCode.kt" ,
280+ contents =
281+ """
282+ import io.mcarle.konvert.api.KonvertFrom
283+ import io.mcarle.konvert.api.Mapping
284+
285+ class SourceClass(
286+ val sourceProperty: String
287+ )
288+ @KonvertFrom(SourceClass::class, mappings=[
289+ Mapping(target="targetProperty", expression = "it.sourceProperty.lowercase()"),
290+ ])
291+ class TargetClass(
292+ var targetProperty: String
293+ ) {
294+ companion object
295+ }
296+ """ .trimIndent()
297+ )
298+ )
299+ val extensionFunctionCode = compilation.generatedSourceFor(" TargetClassKonverter.kt" )
300+ println (extensionFunctionCode)
301+
302+ assertSourceEquals(
303+ """
304+ public fun TargetClass.Companion.fromSourceClass(sourceClass: SourceClass): TargetClass = TargetClass(
305+ targetProperty = sourceClass.let { it.sourceProperty.lowercase() }
306+ )
307+ """ .trimIndent(),
308+ extensionFunctionCode
309+ )
310+ }
274311
275312 @Test
276313 fun handleDifferentPackages () {
@@ -280,7 +317,7 @@ data class TargetProperty(val value: String) {
280317 SourceFile .kotlin(
281318 name = " a/SourceClass.kt" ,
282319 contents =
283- """
320+ """
284321package a
285322
286323class SourceClass(val property: String)
@@ -289,7 +326,7 @@ class SourceClass(val property: String)
289326 SourceFile .kotlin(
290327 name = " b/TargetClass.kt" ,
291328 contents =
292- """
329+ """
293330package b
294331
295332import io.mcarle.konvert.api.KonvertFrom
@@ -329,7 +366,7 @@ class TargetClass {
329366 SourceFile .kotlin(
330367 name = " a/SomeClass.kt" ,
331368 contents =
332- """
369+ """
333370package a
334371
335372class SomeClass(val property: String)
@@ -338,7 +375,7 @@ class SomeClass(val property: String)
338375 SourceFile .kotlin(
339376 name = " b/SomeClass.kt" ,
340377 contents =
341- """
378+ """
342379package b
343380import io.mcarle.konvert.api.KonvertFrom
344381
@@ -374,7 +411,7 @@ class SomeClass {
374411 SourceFile .kotlin(
375412 name = " a/SomeClass.kt" ,
376413 contents =
377- """
414+ """
378415package a
379416
380417
@@ -384,7 +421,7 @@ class SomeClass(val property: String)
384421 SourceFile .kotlin(
385422 name = " b/SomeClass.kt" ,
386423 contents =
387- """
424+ """
388425package b
389426
390427import io.mcarle.konvert.api.KonvertFrom
@@ -469,7 +506,7 @@ data class SourceClass(val property: String)
469506 code = SourceFile .kotlin(
470507 name = " TestCode.kt" ,
471508 contents =
472- """
509+ """
473510import io.mcarle.konvert.api.KonvertFrom
474511import io.mcarle.konvert.api.Mapping
475512
@@ -503,7 +540,7 @@ class TargetClass(val children: List<TargetClass>) {
503540 SourceFile .kotlin(
504541 name = " a/Person.kt" ,
505542 contents =
506- """
543+ """
507544package a
508545
509546import io.mcarle.konvert.api.KonvertFrom
@@ -520,7 +557,7 @@ data class Person(val firstName: String, val lastName: String, val age: Int, val
520557 SourceFile .kotlin(
521558 name = " b/PersonDto.kt" ,
522559 contents =
523- """
560+ """
524561package b
525562
526563import io.mcarle.konvert.api.KonvertFrom
@@ -578,7 +615,7 @@ data class PersonDto(val firstName: String, val lastName: String, val age: Int,
578615 SourceFile .kotlin(
579616 name = " a/Target.kt" ,
580617 contents =
581- """
618+ """
582619package a
583620
584621import io.mcarle.konvert.api.KonvertFrom
@@ -602,7 +639,7 @@ data class TargetProperty(val value: String) {
602639 SourceFile .kotlin(
603640 name = " b/Source.kt" ,
604641 contents =
605- """
642+ """
606643package b
607644
608645class SourceClass(
0 commit comments