@@ -22,6 +22,8 @@ package org.jetbrains.kotlinx.spark.api
2222import  ch.tutteli.atrium.api.fluent.en_GB.* 
2323import  ch.tutteli.atrium.api.verbs.expect 
2424import  io.kotest.core.spec.style.ShouldSpec 
25+ import  io.kotest.matchers.collections.shouldContain 
26+ import  io.kotest.matchers.collections.shouldContainExactly 
2527import  io.kotest.matchers.shouldBe 
2628import  org.apache.spark.sql.Dataset 
2729import  org.apache.spark.sql.types.Decimal 
@@ -208,6 +210,39 @@ class EncodingTest : ShouldSpec({
208210    context("schema") {
209211        withSpark(props = mapOf("spark.sql.codegen.comments" to true)) {
210212
213+             context("Give  proper names to columns of data classe") {
214+                 val  old = KotlinTypeInference .DO_NAME_HACK 
215+                 KotlinTypeInference .DO_NAME_HACK  = true 
216+ 
217+                 should("Be  able to serialize pairs") {
218+                     val  pairs = listOf(
219+                         1 to "1",
220+                         2 to "2",
221+                         3 to "3",
222+                     )
223+                     val  dataset = pairs.toDS()
224+                     dataset.show()
225+                     dataset.collectAsList() shouldBe pairs
226+                     dataset.columns().shouldContainExactly("first", "second")
227+                 }
228+ 
229+                 should("Be  able to serialize pairs of pairs") {
230+                     val  pairs = listOf(
231+                         1 to (1 to "1"),
232+                         2 to (2 to "2"),
233+                         3 to (3 to "3"),
234+                     )
235+                     val  dataset = pairs.toDS()
236+                     dataset.show()
237+                     dataset.printSchema()
238+                     dataset.columns().shouldContainExactly("first", "second")
239+                     dataset.select("second.*").columns().shouldContainExactly("first", "second")
240+                     dataset.collectAsList() shouldBe pairs
241+                 }
242+ 
243+                 KotlinTypeInference .DO_NAME_HACK  = old
244+             }
245+ 
211246            should("handle Scala  Case  class datasets") {
212247                val  caseClasses = listOf(
213248                    tupleOf(1, "1"),
@@ -253,14 +288,14 @@ class EncodingTest : ShouldSpec({
253288            }
254289
255290
256-             xshould ("handle Scala  Option  datasets") {
291+             should ("handle Scala  Option  datasets") {
257292                val  caseClasses = listOf(Some (1), Some (2), Some (3))
258293                val  dataset = caseClasses.toDS()
259294                dataset.show()
260295                dataset.collectAsList() shouldBe caseClasses
261296            }
262297
263-             xshould ("handle Scala  Option  Option  datasets") {
298+             should ("handle Scala  Option  Option  datasets") {
264299                val  caseClasses = listOf(
265300                    Some (Some (1)),
266301                    Some (Some (2)),
@@ -270,7 +305,7 @@ class EncodingTest : ShouldSpec({
270305                dataset.collectAsList() shouldBe caseClasses
271306            }
272307
273-             xshould ("handle data class Scala  Option  datasets") {
308+             should ("handle data class Scala  Option  datasets") {
274309                val  caseClasses = listOf(
275310                    Some (1) to Some (2),
276311                    Some (3) to Some (4),
@@ -280,7 +315,7 @@ class EncodingTest : ShouldSpec({
280315                dataset.collectAsList() shouldBe caseClasses
281316            }
282317
283-             xshould ("handle Scala  Option  data class datasets") {
318+             should ("handle Scala  Option  data class datasets") {
284319                val  caseClasses = listOf(
285320                    Some (1 to 2),
286321                    Some (3 to 4),
@@ -501,7 +536,7 @@ class EncodingTest : ShouldSpec({
501536                expect(result).toContain.inOrder.only.values(5.1 to 6)
502537            }
503538
504-             should("! handle primitive  arrays") {
539+             should("handle boxed  arrays") {
505540                val  result = listOf(arrayOf(1, 2, 3, 4))
506541                    .toDS()
507542                    .map { it.map { ai ->  ai + 1  } }
0 commit comments