From b918f1b08d38482605828c6bf9510ae0df1ed1a7 Mon Sep 17 00:00:00 2001 From: Jolan Rensen Date: Tue, 9 Apr 2024 11:56:22 +0200 Subject: [PATCH] new tests taking sortWithConstructors into account --- .../kotlinx/dataframe/api/JavaPojo.java | 8 +++--- .../kotlinx/dataframe/api/toDataFrame.kt | 28 +++++++++++++------ .../kotlinx/dataframe/api/JavaPojo.java | 8 +++--- .../kotlinx/dataframe/api/toDataFrame.kt | 28 +++++++++++++------ 4 files changed, 48 insertions(+), 24 deletions(-) diff --git a/core/generated-sources/src/test/java/org/jetbrains/kotlinx/dataframe/api/JavaPojo.java b/core/generated-sources/src/test/java/org/jetbrains/kotlinx/dataframe/api/JavaPojo.java index dddcbd5728..34a465ec42 100644 --- a/core/generated-sources/src/test/java/org/jetbrains/kotlinx/dataframe/api/JavaPojo.java +++ b/core/generated-sources/src/test/java/org/jetbrains/kotlinx/dataframe/api/JavaPojo.java @@ -9,7 +9,7 @@ public class JavaPojo { public JavaPojo() {} - public JavaPojo(int a, String b) { + public JavaPojo(String b, int a) { this.a = a; this.b = b; } @@ -51,8 +51,8 @@ public int hashCode() { @Override public String toString() { return "TestPojo{" + - "a=" + a + - ", b='" + b + '\'' + - '}'; + "a=" + a + + ", b='" + b + '\'' + + '}'; } } diff --git a/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/toDataFrame.kt b/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/toDataFrame.kt index 1eebb0bb75..34480a6368 100644 --- a/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/toDataFrame.kt +++ b/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/toDataFrame.kt @@ -193,6 +193,7 @@ class CreateDataFrameTests { fun treatErasedGenericAsAny() { class IncompatibleVersionErrorData(val expected: T, val actual: T) class DeserializedContainerSource(val incompatibility: IncompatibleVersionErrorData<*>) + val functions = listOf(DeserializedContainerSource(IncompatibleVersionErrorData(1, 2))) val df = functions.toDataFrame(maxDepth = 2) @@ -320,11 +321,19 @@ class CreateDataFrameTests { constructor() - constructor(a: Int, b: String) { + constructor(b: String, a: Int) { this.a = a this.b = b } + constructor(b: String) { + this.b = b + } + + constructor(a: Int) { + this.a = a + } + fun getA(): Int = a fun setA(a: Int) { this.a = a @@ -358,18 +367,21 @@ class CreateDataFrameTests { @Test fun `convert POJO to DF`() { - listOf(KotlinPojo(1, "a")).toDataFrame() shouldBe dataFrameOf("a", "b")(1, "a") - listOf(JavaPojo(1, "a")).toDataFrame() shouldBe dataFrameOf("a", "b")(1, "a") + // even though the names b, a, follow the constructor order + listOf(KotlinPojo("bb", 1)).toDataFrame() shouldBe dataFrameOf("b", "a")("bb", 1) + + // cannot read java constructor parameter names with reflection, so sort lexigographically + listOf(JavaPojo("bb", 1)).toDataFrame() shouldBe dataFrameOf("a", "b")(1, "bb") - listOf(KotlinPojo(1, "a")).toDataFrame { properties(KotlinPojo::getA) } shouldBe dataFrameOf("a")(1) - listOf(KotlinPojo(1, "a")).toDataFrame { properties(KotlinPojo::getB) } shouldBe dataFrameOf("b")("a") + listOf(KotlinPojo("bb", 1)).toDataFrame { properties(KotlinPojo::getA) } shouldBe dataFrameOf("a")(1) + listOf(KotlinPojo("bb", 1)).toDataFrame { properties(KotlinPojo::getB) } shouldBe dataFrameOf("b")("bb") - listOf(JavaPojo(1, "a")).toDataFrame { + listOf(JavaPojo("bb", 1)).toDataFrame { properties(JavaPojo::getA) } shouldBe dataFrameOf("a")(1) - listOf(JavaPojo(1, "a")).toDataFrame { + listOf(JavaPojo("bb", 1)).toDataFrame { properties(JavaPojo::getB) - } shouldBe dataFrameOf("b")("a") + } shouldBe dataFrameOf("b")("bb") } } diff --git a/core/src/test/java/org/jetbrains/kotlinx/dataframe/api/JavaPojo.java b/core/src/test/java/org/jetbrains/kotlinx/dataframe/api/JavaPojo.java index dddcbd5728..34a465ec42 100644 --- a/core/src/test/java/org/jetbrains/kotlinx/dataframe/api/JavaPojo.java +++ b/core/src/test/java/org/jetbrains/kotlinx/dataframe/api/JavaPojo.java @@ -9,7 +9,7 @@ public class JavaPojo { public JavaPojo() {} - public JavaPojo(int a, String b) { + public JavaPojo(String b, int a) { this.a = a; this.b = b; } @@ -51,8 +51,8 @@ public int hashCode() { @Override public String toString() { return "TestPojo{" + - "a=" + a + - ", b='" + b + '\'' + - '}'; + "a=" + a + + ", b='" + b + '\'' + + '}'; } } diff --git a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/toDataFrame.kt b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/toDataFrame.kt index 1eebb0bb75..34480a6368 100644 --- a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/toDataFrame.kt +++ b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/toDataFrame.kt @@ -193,6 +193,7 @@ class CreateDataFrameTests { fun treatErasedGenericAsAny() { class IncompatibleVersionErrorData(val expected: T, val actual: T) class DeserializedContainerSource(val incompatibility: IncompatibleVersionErrorData<*>) + val functions = listOf(DeserializedContainerSource(IncompatibleVersionErrorData(1, 2))) val df = functions.toDataFrame(maxDepth = 2) @@ -320,11 +321,19 @@ class CreateDataFrameTests { constructor() - constructor(a: Int, b: String) { + constructor(b: String, a: Int) { this.a = a this.b = b } + constructor(b: String) { + this.b = b + } + + constructor(a: Int) { + this.a = a + } + fun getA(): Int = a fun setA(a: Int) { this.a = a @@ -358,18 +367,21 @@ class CreateDataFrameTests { @Test fun `convert POJO to DF`() { - listOf(KotlinPojo(1, "a")).toDataFrame() shouldBe dataFrameOf("a", "b")(1, "a") - listOf(JavaPojo(1, "a")).toDataFrame() shouldBe dataFrameOf("a", "b")(1, "a") + // even though the names b, a, follow the constructor order + listOf(KotlinPojo("bb", 1)).toDataFrame() shouldBe dataFrameOf("b", "a")("bb", 1) + + // cannot read java constructor parameter names with reflection, so sort lexigographically + listOf(JavaPojo("bb", 1)).toDataFrame() shouldBe dataFrameOf("a", "b")(1, "bb") - listOf(KotlinPojo(1, "a")).toDataFrame { properties(KotlinPojo::getA) } shouldBe dataFrameOf("a")(1) - listOf(KotlinPojo(1, "a")).toDataFrame { properties(KotlinPojo::getB) } shouldBe dataFrameOf("b")("a") + listOf(KotlinPojo("bb", 1)).toDataFrame { properties(KotlinPojo::getA) } shouldBe dataFrameOf("a")(1) + listOf(KotlinPojo("bb", 1)).toDataFrame { properties(KotlinPojo::getB) } shouldBe dataFrameOf("b")("bb") - listOf(JavaPojo(1, "a")).toDataFrame { + listOf(JavaPojo("bb", 1)).toDataFrame { properties(JavaPojo::getA) } shouldBe dataFrameOf("a")(1) - listOf(JavaPojo(1, "a")).toDataFrame { + listOf(JavaPojo("bb", 1)).toDataFrame { properties(JavaPojo::getB) - } shouldBe dataFrameOf("b")("a") + } shouldBe dataFrameOf("b")("bb") } }