Skip to content

Commit cad6b07

Browse files
committed
added data schema comparison test
1 parent 18ba918 commit cad6b07

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/MatchSchemeTests.kt

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,19 @@ import org.jetbrains.kotlinx.dataframe.DataRow
66
import org.jetbrains.kotlinx.dataframe.annotations.DataSchema
77
import org.jetbrains.kotlinx.dataframe.api.add
88
import org.jetbrains.kotlinx.dataframe.api.cast
9+
import org.jetbrains.kotlinx.dataframe.api.columnOf
10+
import org.jetbrains.kotlinx.dataframe.api.dataFrameOf
911
import org.jetbrains.kotlinx.dataframe.api.generateCode
12+
import org.jetbrains.kotlinx.dataframe.api.schema
1013
import org.jetbrains.kotlinx.dataframe.impl.codeGen.ReplCodeGenerator
1114
import org.jetbrains.kotlinx.dataframe.io.readJsonStr
15+
import org.jetbrains.kotlinx.dataframe.schema.CompareResult.Equals
16+
import org.jetbrains.kotlinx.dataframe.schema.CompareResult.IsDerived
17+
import org.jetbrains.kotlinx.dataframe.schema.CompareResult.IsSuper
18+
import org.jetbrains.kotlinx.dataframe.schema.CompareResult.None
19+
import org.jetbrains.kotlinx.dataframe.schema.ComparisonMode.LENIENT
20+
import org.jetbrains.kotlinx.dataframe.schema.ComparisonMode.STRICT
21+
import org.jetbrains.kotlinx.dataframe.schema.ComparisonMode.STRICT_FOR_NESTED_SCHEMAS
1222
import org.junit.Test
1323

1424
class MatchSchemeTests {
@@ -99,4 +109,91 @@ class MatchSchemeTests {
99109
val res = df.generateCode(false, true)
100110
println(res)
101111
}
112+
113+
@Test
114+
fun `simple data schema comparison`() {
115+
val scheme1 = dataFrameOf(
116+
"a" to columnOf(1, 2, 3, null),
117+
"b" to columnOf(1.0, 2.0, 3.0, 4.0),
118+
).schema()
119+
120+
val scheme2 = dataFrameOf(
121+
"a" to columnOf(1, 2, 3, 4),
122+
"b" to columnOf(1.0, 2.0, 3.0, 4.0),
123+
).schema()
124+
125+
val scheme3 = dataFrameOf(
126+
"c" to columnOf(1, 2, 3, 4),
127+
).schema()
128+
129+
scheme1.compare(scheme1, LENIENT) shouldBe Equals
130+
scheme2.compare(scheme2, LENIENT) shouldBe Equals
131+
scheme1.compare(scheme2, LENIENT) shouldBe IsSuper
132+
scheme2.compare(scheme1, LENIENT) shouldBe IsDerived
133+
scheme1.compare(scheme3, LENIENT) shouldBe None
134+
135+
scheme1.compare(scheme1, STRICT_FOR_NESTED_SCHEMAS) shouldBe Equals
136+
scheme2.compare(scheme2, STRICT_FOR_NESTED_SCHEMAS) shouldBe Equals
137+
scheme1.compare(scheme2, STRICT_FOR_NESTED_SCHEMAS) shouldBe IsSuper
138+
scheme2.compare(scheme1, STRICT_FOR_NESTED_SCHEMAS) shouldBe IsDerived
139+
scheme1.compare(scheme3, STRICT_FOR_NESTED_SCHEMAS) shouldBe None
140+
141+
scheme1.compare(scheme1, STRICT) shouldBe Equals
142+
scheme2.compare(scheme2, STRICT) shouldBe Equals
143+
scheme1.compare(scheme2, STRICT) shouldBe None
144+
scheme2.compare(scheme1, STRICT) shouldBe None
145+
}
146+
147+
@Test
148+
fun `nested data schema comparison`() {
149+
val scheme1 = dataFrameOf(
150+
"a" to columnOf(
151+
"b" to columnOf(1.0, 2.0, 3.0, null),
152+
),
153+
).schema()
154+
155+
val scheme2 = dataFrameOf(
156+
"a" to columnOf(
157+
"b" to columnOf(1.0, 2.0, 3.0, 4.0),
158+
),
159+
).schema()
160+
161+
val scheme3 = dataFrameOf(
162+
"c" to columnOf(1, 2, 3, 4),
163+
).schema()
164+
165+
val scheme4 = dataFrameOf(
166+
"a" to columnOf(
167+
"b" to columnOf(1.0, 2.0, 3.0, null),
168+
),
169+
"c" to columnOf(1, 2, 3, 4),
170+
).schema()
171+
172+
scheme1.compare(scheme1, LENIENT) shouldBe Equals
173+
scheme2.compare(scheme2, LENIENT) shouldBe Equals
174+
scheme1.compare(scheme2, LENIENT) shouldBe IsSuper
175+
scheme2.compare(scheme1, LENIENT) shouldBe IsDerived
176+
scheme1.compare(scheme3, LENIENT) shouldBe None
177+
178+
scheme1.compare(scheme4, LENIENT) shouldBe IsSuper
179+
scheme4.compare(scheme1, LENIENT) shouldBe IsDerived
180+
181+
scheme1.compare(scheme1, STRICT_FOR_NESTED_SCHEMAS) shouldBe Equals
182+
scheme2.compare(scheme2, STRICT_FOR_NESTED_SCHEMAS) shouldBe Equals
183+
scheme1.compare(scheme2, STRICT_FOR_NESTED_SCHEMAS) shouldBe None
184+
scheme2.compare(scheme1, STRICT_FOR_NESTED_SCHEMAS) shouldBe None
185+
scheme1.compare(scheme3, STRICT_FOR_NESTED_SCHEMAS) shouldBe None
186+
187+
scheme1.compare(scheme4, STRICT_FOR_NESTED_SCHEMAS) shouldBe IsSuper
188+
scheme4.compare(scheme1, STRICT_FOR_NESTED_SCHEMAS) shouldBe IsDerived
189+
scheme2.compare(scheme4, STRICT_FOR_NESTED_SCHEMAS) shouldBe None
190+
scheme4.compare(scheme2, STRICT_FOR_NESTED_SCHEMAS) shouldBe None
191+
192+
scheme1.compare(scheme1, STRICT) shouldBe Equals
193+
scheme2.compare(scheme2, STRICT) shouldBe Equals
194+
scheme1.compare(scheme2, STRICT) shouldBe None
195+
scheme2.compare(scheme1, STRICT) shouldBe None
196+
scheme1.compare(scheme3, STRICT) shouldBe None
197+
scheme3.compare(scheme1, STRICT) shouldBe None
198+
}
102199
}

0 commit comments

Comments
 (0)