tdd-demo
Nesse hands-on teremos uma dinâmica introdutória a Test Driven Development (TDD), ou desenvolvimento orientado por testes.
instruções
1 - Clonar esse projeto
2 - abrir na sua IDE de preferência (recomenda-se o intellij community editiion)
3 - executar o teste presente na classe Quadratic, na raiz do módulo tests. Esse teste deve passar.
Se você conseguiu executar com sucesso o teste, seu ambiente está pronto para a aula.
sobre Kotlin
Iremos utilizar Kotlin, uma linguagem multi-paradigma, inter-operável com Java, mas que possibilita construção de códigos mais idiomáticos e com menos escrita de boiler plate.
Para uma rápida introdução a kotlin, acesse o seguinte tutorial: https://play.kotlinlang.org/byExample/01_introduction
Para efeitos dessa aula, o conteúdo da introdução deve ser suficiente, principalmente para quem já conhece Java.
A maior parte do código que iremos escrever é bem parecida com Java.
Funções
Funções mais simples, que podem ser definidas em 1 linha, podem ser feitas nesse formato
fun sum(a: Integer, val b: Integer) = a + b
Ou você pode adotar um estilo mais parecido com java
fun sum(a: Integer, val b: Integer) : Integer { return a + b }
Operações com BigDecimals
Soma
val result = BigDecimal(10).plus(BigDecimal(5)) // 15
Subtração
val result = BigDecimal(10).minus(BigDecimal(5)) // 5
Multiplicação
val result = BigDecimal(2).multiply(BigDecimal(4)) // 8
Divisão
val result = BigDecimal(8).divide(BigDecimal(2)) // 4
Raiz quadrada
val result = BigDecimal(16).sqrt(MathContext(10)) // 4
Potência
val result = BigDecimal(3).number.pow(2) // 9
Esse resuminho tem 90% do kotlin que precisará ser escrito nessa aula!
A Dinâmica
Iremos juntos explocar como usar TDD de acordo com 2 técnicas: Abordagem Londres e Detroit.
Para isso iremos utilizar um caso clássico de matemática fundamental: Equações completas de segundo grau. Iremos codificar a fórmula de Bhaskara utilizando ambas abordagens.
lista de raízes para equações completas de segundo grau
Para uso na aula. Não se preocupe com isso antes ;)
Duas raízez (Delta > 0)
a = 1
b = -1
c = -12
Resultado esperado = [4,-3]
a = 1
b = -5
c = 6
Resultado esperado = [3,2]
Uma raíz (Delta = 0)
a = 4
b = -4
c= 1
Resultado esperado = [0.5]
Nenhuma raiz real (Delta < 0)
a = 1
b = -4
c = 5
Resultado esperado = []