You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -372,26 +372,20 @@ class CodeGenerationTests : BaseTest() {
372
372
373
373
@Test
374
374
fun`check method generateDataClasses`() {
375
-
val code1 = typed.groupBy { name }.toDataFrame().generateDataClasses()
376
-
val code2 = typed.groupBy { name }.toDataFrame().schema().generateDataClasses("Person")
375
+
val df = typed.groupBy { name }.toDataFrame()
376
+
val code1 = df.generateDataClasses()
377
+
val code2 = df.schema().generateDataClasses("Person")
377
378
378
-
@Language("kotlin")
379
-
val expected =
380
-
"""
381
-
@DataSchema
382
-
data class Person1(
383
-
val age: Int,
384
-
val city: String?,
385
-
val name: String,
386
-
val weight: Int?
387
-
)
388
-
389
-
@DataSchema
390
-
data class Person(
391
-
val group: List<Person1>,
392
-
val name: String
393
-
)
394
-
""".trimIndent().toCodeString()
379
+
val expected =CodeGenerator.create(useFqNames =false).generate(
380
+
schema = df.schema(),
381
+
name ="Person",
382
+
fields =true,
383
+
extensionProperties =false,
384
+
isOpen =false,
385
+
asDataClass =true,
386
+
visibility =MarkerVisibility.IMPLICIT_PUBLIC,
387
+
fieldNameNormalizer =NameNormalizer.default,
388
+
).code.declarations.toCodeString()
395
389
396
390
code1 shouldBe expected
397
391
code2 shouldBe expected
@@ -401,57 +395,36 @@ class CodeGenerationTests : BaseTest() {
401
395
fun`DataFrame generateInterfaces`() {
402
396
val code = typed.generateInterfaces()
403
397
404
-
@Language("kotlin")
405
-
val expected =
406
-
"""
407
-
@DataSchema
408
-
interface Person {
409
-
val age: kotlin.Int
410
-
val city: kotlin.String?
411
-
val name: kotlin.String
412
-
val weight: kotlin.Int?
413
-
}
414
-
""".trimIndent()
398
+
val expected =CodeGenerator.create(useFqNames =false).generate(
399
+
schema = df.schema(),
400
+
name ="Person",
401
+
fields =true,
402
+
extensionProperties =false,
403
+
isOpen =true,
404
+
asDataClass =false,
405
+
visibility =MarkerVisibility.IMPLICIT_PUBLIC,
406
+
fieldNameNormalizer =NameNormalizer.default,
407
+
).code.declarations.toCodeString()
415
408
416
-
code.value shouldBe expected
409
+
code shouldBe expected
417
410
}
418
411
419
412
@Test
420
413
fun`DataFrame generateInterfaces - with marker name`() {
421
414
val code = typed.generateInterfaces("CustomInterface")
422
415
423
-
@Language("kotlin")
424
-
val expected =
425
-
"""
426
-
@DataSchema
427
-
interface CustomInterface {
428
-
val age: kotlin.Int
429
-
val city: kotlin.String?
430
-
val name: kotlin.String
431
-
val weight: kotlin.Int?
432
-
}
433
-
""".trimIndent()
434
-
435
-
code.value shouldBe expected
436
-
}
437
-
438
-
@Test
439
-
fun`DataFrame generateDataClasses - with default parameters`() {
440
-
val code = typed.generateDataClasses()
441
-
442
-
@Language("kotlin")
443
-
val expected =
444
-
"""
445
-
@DataSchema
446
-
data class Person(
447
-
val age: Int,
448
-
val city: String?,
449
-
val name: String,
450
-
val weight: Int?
451
-
)
452
-
""".trimIndent()
416
+
val expected =CodeGenerator.create(useFqNames =false).generate(
417
+
schema = df.schema(),
418
+
name ="CustomInterface",
419
+
fields =true,
420
+
extensionProperties =false,
421
+
isOpen =true,
422
+
asDataClass =false,
423
+
visibility =MarkerVisibility.IMPLICIT_PUBLIC,
424
+
fieldNameNormalizer =NameNormalizer.default,
425
+
).code.declarations.toCodeString()
453
426
454
-
code.value shouldBe expected
427
+
code shouldBe expected
455
428
}
456
429
457
430
@Test
@@ -463,70 +436,56 @@ class CodeGenerationTests : BaseTest() {
463
436
useFqNames =true,
464
437
)
465
438
466
-
val packageName ="org.jetbrains.kotlinx.dataframe"
467
-
468
-
@Language("kotlin")
469
-
val expected =
470
-
"""
471
-
@DataSchema
472
-
internal data class CustomDataClass(
473
-
val age: kotlin.Int,
474
-
val city: kotlin.String?,
475
-
val name: kotlin.String,
476
-
val weight: kotlin.Int?
477
-
)
478
-
479
-
internal val $packageName.ColumnsContainer<CustomDataClass>.age: $packageName.DataColumn<kotlin.Int> @JvmName("CustomDataClass_age") get() = this["age"] as $packageName.DataColumn<kotlin.Int>
480
-
internal val $packageName.DataRow<CustomDataClass>.age: kotlin.Int @JvmName("CustomDataClass_age") get() = this["age"] as kotlin.Int
481
-
internal val $packageName.ColumnsContainer<CustomDataClass>.city: $packageName.DataColumn<kotlin.String?> @JvmName("CustomDataClass_city") get() = this["city"] as $packageName.DataColumn<kotlin.String?>
482
-
internal val $packageName.DataRow<CustomDataClass>.city: kotlin.String? @JvmName("CustomDataClass_city") get() = this["city"] as kotlin.String?
483
-
internal val $packageName.ColumnsContainer<CustomDataClass>.name: $packageName.DataColumn<kotlin.String> @JvmName("CustomDataClass_name") get() = this["name"] as $packageName.DataColumn<kotlin.String>
484
-
internal val $packageName.DataRow<CustomDataClass>.name: kotlin.String @JvmName("CustomDataClass_name") get() = this["name"] as kotlin.String
485
-
internal val $packageName.ColumnsContainer<CustomDataClass>.weight: $packageName.DataColumn<kotlin.Int?> @JvmName("CustomDataClass_weight") get() = this["weight"] as $packageName.DataColumn<kotlin.Int?>
486
-
internal val $packageName.DataRow<CustomDataClass>.weight: kotlin.Int? @JvmName("CustomDataClass_weight") get() = this["weight"] as kotlin.Int?
487
-
""".trimIndent()
439
+
val expected =CodeGenerator.create(useFqNames =true).generate(
440
+
schema = df.schema(),
441
+
name ="CustomDataClass",
442
+
fields =true,
443
+
extensionProperties =true,
444
+
isOpen =true,
445
+
asDataClass =true,
446
+
visibility =MarkerVisibility.INTERNAL,
447
+
fieldNameNormalizer =NameNormalizer.default,
448
+
).code.declarations.toCodeString()
488
449
489
-
code.value shouldBe expected
450
+
code shouldBe expected
490
451
}
491
452
492
453
@Test
493
454
fun`DataFrameSchema generateInterfaces`() {
494
455
val schema = typed.schema()
495
456
val code = schema.generateInterfaces("SchemaInterface")
496
457
497
-
@Language("kotlin")
498
-
val expected =
499
-
"""
500
-
@DataSchema
501
-
interface SchemaInterface {
502
-
val age: kotlin.Int
503
-
val city: kotlin.String?
504
-
val name: kotlin.String
505
-
val weight: kotlin.Int?
506
-
}
507
-
""".trimIndent()
458
+
val expected =CodeGenerator.create(useFqNames =false).generate(
459
+
schema = schema,
460
+
name ="SchemaInterface",
461
+
fields =true,
462
+
extensionProperties =false,
463
+
isOpen =true,
464
+
asDataClass =false,
465
+
visibility =MarkerVisibility.IMPLICIT_PUBLIC,
466
+
fieldNameNormalizer =NameNormalizer.default,
467
+
).code.declarations.toCodeString()
508
468
509
-
code.value shouldBe expected
469
+
code shouldBe expected
510
470
}
511
471
512
472
@Test
513
473
fun`DataFrameSchema generateDataClasses - with default parameters`() {
514
474
val schema = typed.schema()
515
475
val code = schema.generateDataClasses("SchemaDataClass")
516
476
517
-
@Language("kotlin")
518
-
val expected =
519
-
"""
520
-
@DataSchema
521
-
data class SchemaDataClass(
522
-
val age: Int,
523
-
val city: String?,
524
-
val name: String,
525
-
val weight: Int?
526
-
)
527
-
""".trimIndent()
477
+
val expected =CodeGenerator.create(useFqNames =false).generate(
478
+
schema = schema,
479
+
name ="SchemaDataClass",
480
+
fields =true,
481
+
extensionProperties =false,
482
+
isOpen =false,
483
+
asDataClass =true,
484
+
visibility =MarkerVisibility.IMPLICIT_PUBLIC,
485
+
fieldNameNormalizer =NameNormalizer.default,
486
+
).code.declarations.toCodeString()
528
487
529
-
code.value shouldBe expected
488
+
code shouldBe expected
530
489
}
531
490
532
491
@Test
@@ -539,52 +498,40 @@ class CodeGenerationTests : BaseTest() {
539
498
useFqNames =false,
540
499
)
541
500
542
-
@Language("kotlin")
543
-
val expected =
544
-
"""
545
-
@DataSchema
546
-
public data class SchemaDataClass(
547
-
public val age: Int,
548
-
public val city: String?,
549
-
public val name: String,
550
-
public val weight: Int?
551
-
)
552
-
553
-
public val ColumnsScope<SchemaDataClass>.age: DataColumn<Int> @JvmName("SchemaDataClass_age") get() = this["age"] as DataColumn<Int>
554
-
public val DataRow<SchemaDataClass>.age: Int @JvmName("SchemaDataClass_age") get() = this["age"] as Int
555
-
public val ColumnsScope<SchemaDataClass>.city: DataColumn<String?> @JvmName("SchemaDataClass_city") get() = this["city"] as DataColumn<String?>
556
-
public val DataRow<SchemaDataClass>.city: String? @JvmName("SchemaDataClass_city") get() = this["city"] as String?
557
-
public val ColumnsScope<SchemaDataClass>.name: DataColumn<String> @JvmName("SchemaDataClass_name") get() = this["name"] as DataColumn<String>
558
-
public val DataRow<SchemaDataClass>.name: String @JvmName("SchemaDataClass_name") get() = this["name"] as String
559
-
public val ColumnsScope<SchemaDataClass>.weight: DataColumn<Int?> @JvmName("SchemaDataClass_weight") get() = this["weight"] as DataColumn<Int?>
560
-
public val DataRow<SchemaDataClass>.weight: Int? @JvmName("SchemaDataClass_weight") get() = this["weight"] as Int?
561
-
""".trimIndent()
501
+
val expected =CodeGenerator.create(useFqNames =false).generate(
502
+
schema = schema,
503
+
name ="SchemaDataClass",
504
+
fields =true,
505
+
extensionProperties =true,
506
+
isOpen =false,
507
+
asDataClass =true,
508
+
visibility =MarkerVisibility.EXPLICIT_PUBLIC,
509
+
fieldNameNormalizer =NameNormalizer.default,
510
+
).code.declarations.toCodeString()
562
511
563
-
code.value shouldBe expected
512
+
code shouldBe expected
564
513
}
565
514
566
515
@Test
567
516
fun`DataFrame generateDataClasses - with name normalizer`() {
568
517
val dfWithSpecialNames = dataFrameOf("my_column", "another column", "third-column")(1, "test", 3.14)
518
+
val nameNormalizer =NameNormalizer { it.toCamelCaseByDelimiters() +"1" }
569
519
val code = dfWithSpecialNames.generateDataClasses(
0 commit comments