assert

Pequenos auxiliares de asserção para escrever testes em Bern.

import assert

Cada asserção devolve uma string terminada em PASS ou FAIL, nomeada para você ler uma coluna de resultados de relance. Elas nunca lançam exceção - você coleta e imprime os resultados.

Igualdade

assert_equals(nome, obtido, esperado) → string

Compara dois valores com ==.

assert_equals("Teste de soma", 2 + 2, 4)
-- Saída: "Teste de soma PASS"

assert_equals("Teste errado", 2 + 2, 5)
-- Saída: "Teste errado FAIL"

Igualdade aproximada

approx_eq(a, b, tolerância) → booleano

Se a e b estão dentro de tolerância um do outro - o auxiliar por trás de assert_approx.

approx_eq(3.14159, 3.14, 0.01)
-- Saída: true
assert_approx(nome, obtido, esperado, tolerância) → string

Como assert_equals, mas passa quando os dois números estão perto o suficiente - ideal para resultados de ponto flutuante.

assert_approx("Teste de Pi", 3.14159, 3.14, 0.01)
-- Saída: "Teste de Pi PASS"

Juntando tudo

Um arquivo de testes geralmente reúne uma lista de resultados e os imprime. Aqui assert se une à math para checar alguns cálculos de uma vez:

Uma pequena suíte de testes

import assert
import core
import math

results = [
    assert_equals("sum",      sum([1, 2, 3, 4]), 10),
    assert_equals("reverse",  reverse([1, 2, 3]), [3, 2, 1]),
    assert_approx("sqrt(2)",  sqrt(2), 1.41421, 0.001),
    assert_approx("sin(0)",   sin(0), 0.0, 0.0001)
]

loop r : results do
    r
end
-- Saída:
-- "sum PASS"
-- "reverse PASS"
-- "sqrt(2) PASS"
-- "sin(0) PASS"