val data: = listOf(
(listOf ("buy" to 2)) to (listOf(50, 465, 100, 8, 557) to "I have enough resources, making you a coffee!"),
(listOf("buy" to 2, "buy" to 2)) to (listOf(50, 465, 100, 8, 557) to "Sorry, not enough water!"),
(listOf("buy" to 2, "buy" to 2, "fill" to listOf(1000, 0, 0, 0)) to (listOf(1050, 465, 100, 8, 557) to ""),
(listOf("buy" to 2, "buy" to 2, "fill" to listOf(1000, 0, 0, 0)), "buy" to 2) to (listOf(700, 390, 80, 7, 564) to "I have enough resources, making you a coffee!")
// (listOf("buy" to 2, "buy" to 2, "fill" to listOf(1000, 0, 0, 0)), "buy" to 2, "take" to "") to (listOf(700, 390, 80, 7, 564) to "I gave you $564"),
)
здесь уже то ли я не могу уследить за скобками, то ли котлин путается и не может сконструировать то, что я хочу
Есть запрос на DSL для тестовых данных
Чем здесь в котлине для меня богато?
Я уже в принципе ответил на это в старте. И собственно вы уперлись ровно в ту стенку, о которой я предупреждал. Динамическое сопоставление всего со всем - это комбинаторный взрыв. Попробуйте продумать логику.
Логика состоит в том, что мне нужен максимально компактный (ради человекочитаемости и быстрых правок) DSL для динамического сопоставления expected и actual в короткоживущих тестах. Раз уж идеоматический to не масштабируется В принципе, data классы тоже такой DSL - только компактностью он не отличается.. Для моих целей так, середнячок. Я верю, что в не предназначенном для поддержки коде возможно ужать лучше
можете сделать как-то так.я не смог понять что у вас там в тестах именно нужно, поэтому имена возможно не подходящие для вашего кейса, но идея есть val data = tests { test(...) { ... } expect ... }.toRaw() Upd.: сначала я подумал, что у вас там дата, сейчас лучше. Ну и если не нужно List<...> получать в итоге в дате, то можно прям так по дсл моделям и смотреть
Благодарю. Можно вот это "можно прям так по дсл моделям и смотреть" - развернуть для новичка? Я котлин только начал ковырять в этом уходящем месяце
ну вы хотите из этого собирать List по которому потом индекс делаете, это что-то типа List<List<Pair<*, *>>>. в когда вы будете делать dsl, у вас будут какие-то модели, которые вы будете настраивать, типо class MyDsl { val tests: MutableList<Test> = ... fun test(builder: Test.() -> Unit) { tests += Test().apply(builder) } }
Дело в том, что я никогда ещё не делал никаких dsl-ей. Только слышал buzzwords "Kotlin DSL" и видел единственный результат движухи: build.gradle.kts Безусловно, я не прочь добраться до их делания, спасибо: по "kotlin dsl model" уже нагугливается что-то кроме градла. Но тестовыми данными жонглировать я хочу вот прям сейчас, потому искал готовый DSL на эту тему. Ну нет так нет...
так а зачем гуглить, если есть дока
Обсуждают сегодня