https://kotlinlang.org logo
#brazil
Title
# brazil
v

Vinicius Araujo

11/12/2019, 11:50 PM
@LeoColman vi que foi vc que contribuiu com alguns assertions no kotlintest, pq optou por nao colocar as functions como infix? Saiu um pouco do padrao
l

LeoColman

11/12/2019, 11:55 PM
Não sei, sempre coloco infix
Contribuí com tipi metade do módulo de assertions kkk
Se quiser abrir uma issue lá, deixamos as assertions infix
Só falar quais são
v

Vinicius Araujo

11/13/2019, 1:13 AM
beleza, eu vi que tem varias que só recebem um parametro, daí quando é assim pode ser infix.
Outra coisa que queria ver contigo, tentei replicar os testes
Copy code
"f:test json equality" {

            val json1 = """ { "name" : "sam", "location" : "london" } """
            val json2 = """ { "location": "london", "name" : "sam" } """
            val json3 = """ { "location": "chicago", "name" : "sam" } """

            json1.shouldMatchJson(json2)
            json1.shouldNotMatchJson(json3)
        }
só que deu uma exception:
l.jackson.module.kotlin.KotlinModule.<init>(IZZILkotlin/jvm/internal/DefaultConstructorMarker;)V
to usando a versao 2.10.0 do jackson, incompatibilidade?
l

LeoColman

11/13/2019, 1:27 AM
beleza, eu vi que tem varias que só recebem um parametro, daí quando é assim pode ser infix.
Com certeza! Inclusive, a maioria é. Se algum foi esquecido devemos corrigir
incompatibilidade
Parece provável... Tenta remover a dependência do Jackson do Kotlintest (dar override com a sua)
v

Vinicius Araujo

11/13/2019, 1:42 AM
Exemplos, essas
Copy code
fun String.shouldMatchJson(json: String) = this should matchJson(json)
fun String.shouldNotMatchJson(json: String) = this shouldNot matchJson(json)
poderiam ser infix, certo?
l

LeoColman

11/13/2019, 1:43 AM
Corretíssimo
Inclusive
Se quiser, pode resolver essa issue 🙂
Enquanto isso, vi que você tem comentado lá pelo #kotlintest sobre a versão do Jackson, parece ser o que você disse de incompatibilidade mesmo
✔️ 1
v

Vinicius Araujo

11/13/2019, 1:47 AM
boa, vou pegar essa
@LeoColman sobre o jackson, qual lib vc usa pra serializar? gostava do gson mas converti meus enum pra sealed class e só o jack (com muita amarração) me deu o resultado esperado
porém não gosto de outros comportamentos do jackson, principalmente atrabalhar com annotations
l

LeoColman

11/13/2019, 7:41 PM
Ah, eu uso bem o Jackson
Com o módulo Kotlin
c

cjmartinkoski

11/14/2019, 1:59 PM
O uso de annotations no jackson é opcional, a unica coisa que não consegui eliminar foi as annotations de polimorfismo, mas mesmo isso consegue trabalhar com configurações mais globais
praticamente tudo pode ir no objectmapper
v

Vinicius Araujo

11/14/2019, 5:16 PM
sim, como sealed classes é baseado em poliformismo, então não achei outra forma de fzer sem ser annotations, exemplo:
Copy code
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "value")
sealed class TipoInscricao(override val displayName: String) : SelectField() {
    @JsonTypeName("Pj")
    object Pj : TipoInscricao("CNPJ")
    @JsonTypeName("Pf")
    object Pf : TipoInscricao("CPF")
}
c

cjmartinkoski

11/14/2019, 6:32 PM
vc pode propagar o classname, aí teria polimorfismo sem se preocupar com annotation
ou poderia trabalhar com converters pra tipos especificos
eu uso a abordagem dos converters em varios VOs
tipo MonetaryValue, Barcode, etc..
2 Views