From 62d04597ed3fbb198c567463d76104613fb26f91 Mon Sep 17 00:00:00 2001 From: Kopilov Aleksandr Date: Wed, 4 Sep 2024 15:55:13 +0300 Subject: [PATCH] testBigMixedColumn --- .../kotlinx/dataframe/io/ArrowKtTest.kt | 22 +++++++++++++++++++ .../kotlinx/dataframe/io/examplesToWrite.kt | 12 ++++++++++ 2 files changed, 34 insertions(+) diff --git a/dataframe-arrow/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io/ArrowKtTest.kt b/dataframe-arrow/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io/ArrowKtTest.kt index 04c2578f5d..e8e9239ff1 100644 --- a/dataframe-arrow/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io/ArrowKtTest.kt +++ b/dataframe-arrow/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io/ArrowKtTest.kt @@ -498,6 +498,28 @@ internal class ArrowKtTest { DataFrame.readArrowFeather(data) shouldBe dataFrame } + @Test + fun testBigMixedColumn() { + val dataFrame = dataFrameOf(bigMixedColumn) + val warnings = ArrayList() + val writer = dataFrame.arrowWriter( + targetSchema = Schema(listOf( + Field("bigMixedColumn", FieldType.nullable(ArrowType.Int(64, true)), emptyList()) + )), + mode = ArrowWriter.Mode.LOYAL + ) { + warnings.add(it) + } + val stream = ByteArrayOutputStream() + writer.writeArrowFeather(stream) + val data = stream.toByteArray() + + assert(warnings.filterIsInstance().size == 1) + assert(warnings.filterIsInstance().size == 1) + + DataFrame.readArrowFeather(data)["bigMixedColumn"] shouldBe dataFrame[bigMixedColumn].map { it.toString()} + } + @Test fun testTimeStamp() { val dates = listOf( diff --git a/dataframe-arrow/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io/examplesToWrite.kt b/dataframe-arrow/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io/examplesToWrite.kt index e18a8a55ed..09a4bbcb2f 100644 --- a/dataframe-arrow/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io/examplesToWrite.kt +++ b/dataframe-arrow/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io/examplesToWrite.kt @@ -192,3 +192,15 @@ val bigStringColumn = run { } DataColumn.createValueColumn("bigStringColumn", list) } + +val bigMixedColumn = run { + val list = ArrayList() + for (i in 0 .. 32768) { + list.add(i * i) + } + list.add("Dirty data") + for (i in 32768 downTo 0) { + list.add(i * i) + } + DataColumn.createValueColumn("bigMixedColumn", list) +}