Size: a a a

Kotlin Community

2020 December 27

L

LevT in Kotlin Community
юзаю так

internal class MainKtTest {
   val data =  ...

   @TestFactory
   fun `parsing?_interpreting?`() = data
       .map { (input, expected) ->
           DynamicTest.dynamicTest(input.toString()) {
               assertEquals(
                   expected, input.interpret()
               )
           }
       }
}
источник

L

LevT in Kotlin Community
Подозреваю что начать с гугления Kotlin DSL - значит изобретать велосипед... продираясь через шум по поводу градла.
источник

AN

Alexander Nozik in Kotlin Community
LevT
Переслано от LevT
Да, я дошёл до некоего предела,

    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 для тестовых данных
Чем здесь в котлине для меня богато?
Я уже в принципе ответил на это в старте. И собственно вы уперлись ровно в ту стенку, о которой я предупреждал. Динамическое сопоставление всего со всем - это комбинаторный взрыв. Попробуйте продумать логику.
источник
2020 December 28

L

LevT in Kotlin Community
Alexander Nozik
Я уже в принципе ответил на это в старте. И собственно вы уперлись ровно в ту стенку, о которой я предупреждал. Динамическое сопоставление всего со всем - это комбинаторный взрыв. Попробуйте продумать логику.
Логика состоит в том, что мне нужен максимально компактный (ради человекочитаемости и быстрых правок) DSL для динамического сопоставления expected и actual в короткоживущих тестах.
Раз уж идеоматический to не масштабируется

В принципе, data классы тоже такой DSL - только компактностью он не отличается..
Для моих целей так, середнячок.
Я верю, что в не предназначенном для поддержки коде возможно ужать лучше
источник

V

Vladimir in Kotlin Community
пачки listOf и так не человекочитаемы
источник

с#

саша сок #KotlinGang... in Kotlin Community
LevT
Переслано от LevT
Да, я дошёл до некоего предела,

    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 для тестовых данных
Чем здесь в котлине для меня богато?
можете сделать как-то так.я не смог понять что у вас там в тестах именно нужно, поэтому имена возможно не подходящие для вашего кейса, но идея есть


val data = tests {
   test(...) {
       ...
   } expect ...
}.toRaw()

Upd.: сначала я подумал, что у вас там дата, сейчас лучше. Ну и если не нужно List<...> получать в итоге в дате, то можно прям так по дсл моделям и смотреть
источник

S

Sekky in Kotlin Community
Извините за тупой вопрос, он первый и последний на долгое время.. правильно ли изучать kotlin(как первый язык) через документацию, или же найти книжку?
источник

AL

Alexander Levin in Kotlin Community
Sekky
Извините за тупой вопрос, он первый и последний на долгое время.. правильно ли изучать kotlin(как первый язык) через документацию, или же найти книжку?
Не думаю, что есть какой-то правильный подход. Если для вас это не первый язык, то большой шанс, что доки хватит за глаза. Если это совсем первый язык - есть большой шанс, что не хватит. В любом случае, в FAQ были какие-то дополнительные ссылки на курсы и книжки, если доки не хватит. Но дока бесплатная и хорошая, чего бы не попробовать :)
источник

AL

Alexander Levin in Kotlin Community
Пропустил уточнение, что как первый язык. Ну т.е. как и сказал выше, я думаю, что может не хватить одной доки (она не прямо про обучение сама по себе), но попытаться и если не получится, то посмотреть на курсы и книги
источник

S

Sekky in Kotlin Community
Спасибо)
источник

L

LevT in Kotlin Community
саша сок #KotlinGang
можете сделать как-то так.я не смог понять что у вас там в тестах именно нужно, поэтому имена возможно не подходящие для вашего кейса, но идея есть


val data = tests {
   test(...) {
       ...
   } expect ...
}.toRaw()

Upd.: сначала я подумал, что у вас там дата, сейчас лучше. Ну и если не нужно List<...> получать в итоге в дате, то можно прям так по дсл моделям и смотреть
Благодарю.
Можно вот это
"можно прям так по дсл моделям и смотреть"

- развернуть для новичка?
Я котлин только начал ковырять в этом уходящем месяце
источник

с#

саша сок #KotlinGang... in Kotlin Community
LevT
Благодарю.
Можно вот это
"можно прям так по дсл моделям и смотреть"

- развернуть для новичка?
Я котлин только начал ковырять в этом уходящем месяце
ну вы хотите из этого собирать List по которому потом индекс делаете, это что-то типа List<List<Pair<*, *>>>.
в когда вы будете делать dsl, у вас будут какие-то модели, которые вы будете настраивать, типо

class MyDsl {
   val tests: MutableList<Test> = ...
   fun test(builder: Test.() -> Unit) {
       tests += Test().apply(builder)
   }
}
источник

с#

саша сок #KotlinGang... in Kotlin Community
и вы можете не приводить это в какую-то структуру (не делать метод toRaw), а просто что-то такое

val myDsl = ...
for(test in myDsl.tests)
   ...
источник

L

LevT in Kotlin Community
саша сок #KotlinGang
ну вы хотите из этого собирать 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 на эту тему.
Ну нет так нет...
источник

IP

Iaroslav Postovalov in Kotlin Community
LevT
Дело в том, что я никогда ещё не делал никаких dsl-ей.
Только слышал buzzwords "Kotlin DSL" и видел единственный результат движухи:  build.gradle.kts

Безусловно, я не прочь добраться до их делания, спасибо: по "kotlin dsl model" уже нагугливается что-то кроме градла.

Но тестовыми данными жонглировать я хочу вот прям сейчас, потому искал готовый DSL на эту тему.
Ну нет так нет...
так а зачем гуглить, если есть дока
источник

IP

Iaroslav Postovalov in Kotlin Community
источник

D

Denys in Kotlin Community
> Hey, so people been asking me (and virtually everyone working on Compose) for awhile: "Compose in browser when?"
And the answer is....

https://twitter.com/shikasd_/status/1343350375248760832
источник

QH

Quantum Harmonizer in Kotlin Community
Чуть не принял за спам.
источник

AN

Alexander Nozik in Kotlin Community
Клевая штука. Для того, чтобы можно было прямо юзать не хватает возможности вытягивания DOM елемента внутри композирования, чтобы можно было внешние компоненты подцеплять
источник

D

Denys in Kotlin Community
Alexander Nozik
Клевая штука. Для того, чтобы можно было прямо юзать не хватает возможности вытягивания DOM елемента внутри композирования, чтобы можно было внешние компоненты подцеплять
Так понимаю, что это ранний доступ к наработкам. И много пока нет.
источник