in plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/PlotFacetsTest.kt [16:141]
fun dataByLevelTuple() {
val b = DataFrame.Builder()
b.putNumeric(
DataFrame.Variable("A"),
listOf(0.0, 0.0, 1.0, 1.0, 2.0, 2.0)
)
b.put(
DataFrame.Variable("B"),
listOf("one", "one", "one", "two", "two", "two")
)
val data = b.build()
// "A" levels as column labels
run {
val varNameAndLevelPairsByTile: List<List<Pair<String, Any>>> = varNameAndLevelPairsByTile(
varNames = listOf("A"),
varLevels = listOf(listOf(0.0, 1.0, 2.0))
)
val dataByLevelA = PlotFacets.levelTupleAndDataPairs(data, varNameAndLevelPairsByTile)
.toMap()
assertEquals(3, dataByLevelA.size)
val extectedKeys = listOf(
listOf(0.0),
listOf(1.0),
listOf(2.0),
)
for (extectedKey in extectedKeys) {
assert(dataByLevelA.containsKey(extectedKey)) { "Key missing: $extectedKey" }
}
val expectedData = listOf(
mapOf(
"A" to listOf(0.0, 0.0),
"B" to listOf("one", "one"),
),
mapOf(
"A" to listOf(1.0, 1.0),
"B" to listOf("one", "two"),
),
mapOf(
"A" to listOf(2.0, 2.0),
"B" to listOf("two", "two"),
),
)
for ((i, extectedKey) in extectedKeys.withIndex()) {
assertEquals(expectedData[i], DataFrameUtil.toMap(dataByLevelA.getValue(extectedKey)))
}
}
// "A" levels as column labels
// "B" levels as row labels
run {
val varNameAndLevelPairsByTile: List<List<Pair<String, Any>>> = varNameAndLevelPairsByTile(
varNames = listOf("A", "B"),
varLevels = listOf(
listOf(0.0, 1.0, 2.0),
listOf("one", "two"),
)
)
val dataByLevelAB = PlotFacets.levelTupleAndDataPairs(
data,
varNameAndLevelPairsByTile,
).toMap()
assertEquals(6, dataByLevelAB.size)
val extectedKeys = listOf(
listOf(0.0, "one"),
listOf(0.0, "two"),
listOf(1.0, "one"),
listOf(1.0, "two"),
listOf(2.0, "one"),
listOf(2.0, "two"),
)
for (extectedKey in extectedKeys) {
assert(dataByLevelAB.containsKey(extectedKey)) { "Key: $extectedKey" }
}
// listOf(0.0, 0.0, 1.0, 1.0, 2.0, 2.0)
// listOf("one", "one", "one", "two", "two", "two")
val expectedData = listOf(
// (0.0, "one")
mapOf(
"A" to listOf(0.0, 0.0),
"B" to listOf("one", "one"),
),
// (0.0, "two")
mapOf(
"A" to listOf(),
"B" to listOf(),
),
//(1.0, "one")
mapOf(
"A" to listOf(1.0),
"B" to listOf("one"),
),
//(1.0, "two")
mapOf(
"A" to listOf(1.0),
"B" to listOf("two"),
),
//(2.0, "one")
mapOf(
"A" to listOf(),
"B" to listOf(),
),
//(2.0, "two")
mapOf(
"A" to listOf(2.0, 2.0),
"B" to listOf("two", "two"),
),
)
for ((i, extectedKey) in extectedKeys.withIndex()) {
assertEquals(expectedData[i], DataFrameUtil.toMap(dataByLevelAB.getValue(extectedKey)))
}
}
}