io.specmatic.core.pattern.Examples.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of specmatic-core Show documentation
Show all versions of specmatic-core Show documentation
Turn your contracts into executable specifications. Contract Driven Development - Collaboratively Design & Independently Deploy MicroServices & MicroFrontends.
package io.specmatic.core.pattern
import io.cucumber.messages.types.Examples
import io.cucumber.messages.types.TableRow
import java.util.*
data class Examples(val columnNames: List = emptyList(), val rows: List = listOf()) {
val isEmpty: Boolean
get() = rows.isEmpty()
companion object {
fun examplesFrom(examplesList: List): List = examplesList.map { examplesFrom(it) }
fun examplesFrom(examples: Examples): io.specmatic.core.pattern.Examples {
val columns = getColumnNames(examples)
val rows = examples.tableBody.map { Row(columns, getValues(it)) }
return Examples(columns, rows)
}
private fun getColumnNames(examples: Examples) = getValues(examples.tableHeader)
private fun getValues(row: TableRow): ArrayList = ArrayList(row.cells.map { it.value })
}
}