Skip to content

Commit 4627c60

Browse files
new test
1 parent a19d523 commit 4627c60

File tree

2 files changed

+15
-7
lines changed
  • core/src
    • main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api
    • test/kotlin/org/jetbrains/kotlinx/dataframe/api

2 files changed

+15
-7
lines changed

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/move.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ internal fun <T, C> MoveClause<T, C>.moveTo(columnIndex: Int, insideGroup: Boole
157157
referenceAndSiblingsPaths.get(columnIndex)
158158
}
159159

160-
// two cases : columns are before, or after, the reference
160+
// two cases : columns to move are before, or after, the reference
161161
val columnsBeforeReferenceToMove = mutableListOf<ColumnPath>()
162162
val columnsAfterReferenceToMove = mutableListOf<ColumnPath>()
163163
val columnsToMovePath = columnsToMove.map { it.path }
@@ -175,14 +175,11 @@ internal fun <T, C> MoveClause<T, C>.moveTo(columnIndex: Int, insideGroup: Boole
175175
}
176176
}
177177

178-
//don't move reference
179-
//val effectiveColsBeforeRef = columnsBeforeReference.filter { it.path.last() != reference.path.last() }
180-
//val effectiveColsAfterRef = columnsAfterReference.filter { it.path.last() != reference.path.last() }
181-
182-
//move cols before reference after reference itself ; move cols after reference before reference itself
178+
// move columns
183179
if (columnsBeforeReferenceToMove.isNotEmpty() && columnsAfterReferenceToMove.isNotEmpty()) {
184180
val intermediateDf = df.move { columnsBeforeReferenceToMove.toColumnSet() }.after { reference }
185-
val finalDf = intermediateDf.move { columnsAfterReferenceToMove.toColumnSet() }.before { reference }
181+
val newReference = columnsBeforeReferenceToMove.last()
182+
val finalDf = intermediateDf.move { columnsAfterReferenceToMove.toColumnSet() }.after { newReference }
186183
return finalDf
187184
}
188185
if (columnsBeforeReferenceToMove.isNotEmpty())

core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/move.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,17 @@ class MoveTests {
272272
df["b"].asColumnGroup().columnNames() shouldBe listOf("c", "d", "r")
273273
}
274274

275+
@Test
276+
fun `move multiple non bordering nested columns`() {
277+
// creating an appropriate df for the test
278+
val groupedModified = grouped.move("r" , "q").before { "b"["c"] }
279+
groupedModified["b"].asColumnGroup().columnNames() shouldBe listOf("r", "q", "c", "d")
280+
// test itself
281+
val df = groupedModified.move { "b"["r"] and "b"["d"] }.to(1, true)
282+
df.columnNames() shouldBe listOf("a", "b", "w", "e")
283+
df["b"].asColumnGroup().columnNames() shouldBe listOf("q", "r", "d", "c")
284+
}
285+
275286
@Test
276287
fun `move single top level column to the start`() {
277288
val df = grouped.move("e").to(0, true)

0 commit comments

Comments
 (0)