@@ -5,6 +5,7 @@ import io.kotest.matchers.shouldNotBe
5
5
import org.jetbrains.kotlinx.dataframe.api.FormattingDsl.blue
6
6
import org.jetbrains.kotlinx.dataframe.api.FormattingDsl.red
7
7
import org.jetbrains.kotlinx.dataframe.api.FormattingDsl.rgb
8
+ import org.jetbrains.kotlinx.dataframe.io.DataFrameHtmlData
8
9
import org.jetbrains.kotlinx.dataframe.io.DisplayConfiguration
9
10
import org.jetbrains.kotlinx.dataframe.samples.api.TestBase
10
11
import org.jetbrains.kotlinx.dataframe.samples.api.age
@@ -312,4 +313,29 @@ class FormatTests : TestBase() {
312
313
html.split(" background-color:#00ff00" ).size - 1 shouldBe 5 // Only non-null weight values get formatted
313
314
formatted::class .simpleName shouldBe " FormattedFrame"
314
315
}
316
+
317
+ // Issue #982
318
+ @Suppress(" ktlint:standard:argument-list-wrapping" )
319
+ @Test
320
+ fun `formatting a column shouldn't affect nested columns with the same name` () {
321
+ val df = dataFrameOf(" firstName" , " lastName" , " age" , " city" , " weight" , " isHappy" )(
322
+ " Alice" , " Cooper" , 15 , " London" , 54 , true ,
323
+ " Bob" , " Dylan" , 45 , " Dubai" , 87 , true ,
324
+ " Charlie" , " Daniels" , 20 , " Moscow" , null , false ,
325
+ " Charlie" , " Chaplin" , 40 , " Milan" , null , true ,
326
+ " Bob" , " Marley" , 30 , " Tokyo" , 68 , true ,
327
+ " Alice" , " Wolf" , 20 , null , 55 , false ,
328
+ " Charlie" , " Byrd" , 30 , " Moscow" , 90 , true ,
329
+ ).group(" firstName" , " lastName" ).into(" name" )
330
+ .groupBy(" city" ).toDataFrame()
331
+ .add(" cityCopy" ) { " city" <String >() }
332
+ .group(" city" ).into(" cityGroup" )
333
+ .rename(" cityCopy" ).into(" city" )
334
+
335
+ val formatted = df.format(" city" ).with { bold and italic and textColor(green) }
336
+ val html = formatted.toHtml().toString()
337
+
338
+ html.split(" color:#00ff00" ).size - 1 shouldBe 12
339
+ html.split(" font-style:italic" ).size - 1 shouldBe 6
340
+ }
315
341
}
0 commit comments