Pruebas por tabla en Go
El estilo de la casa en Go: un slice de casos, un subtest cada uno.
func Stars(tpm, target int) int {
switch {
case tpm >= target:
return 3
case tpm >= target*8/10:
return 2
default:
return 1
}
}
func TestStars(t *testing.T) {
cases := []struct {
name string
tpm int
target int
want int
}{
{"at the bar", 100, 100, 3},
{"just under", 85, 100, 2},
{"slow", 40, 100, 1},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
if got := Stars(c.tpm, c.target); got != c.want {
t.Errorf("Stars(%d, %d) = %d, want %d",
c.tpm, c.target, got, c.want)
}
})
}
}
Cómo funciona
- Cada caso es un struct con un nombre y los datos.
t.Runda a cada caso su propio nombre en la salida.- Agregar un caso es una línea, no una función.
Palabras clave y builtins usados aquí
casedefaultforfuncifintrangereturnstringstructswitch
El intento, en números
- Líneas
- 32
- Caracteres a escribir
- 501
- Tokens
- 163
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 98 segundos.
Paso 2 de 4 en Escribir pruebas; paso 2 de 13 en Pruebas.