Pular para o conteúdo

4. Projeto: placar com testes

Construa archer-score, que soma três rodadas e rejeita valores fora do intervalo aceito. Mantenha validação e soma em score.fl, formatação em main.fl e casos de sucesso e falha em score_test.fl.

A qualificação é o projeto: longbow check deve aceitar o grafo completo, longbow test deve cobrir valores-limite e um inválido, e longbow run deve imprimir um resultado estável. Troque uma entrada por valor inválido e confirme que o programa retorna status não zero documentado, sem limitar silenciosamente.

O projeto é pequeno para caber em uma revisão. Seu valor está na separação dos contratos: módulos possuem nomes, funções possuem validação, a entrada possui os diagnósticos e testes possuem a evidência.

Exemplo testado

Transforme uma função pública em pacote testado e exercite a mesma fronteira usada pela publicação.

Trecho em foco

curriculum/fixtures/package-dry-run/src/archer_words_test.fl:1–11

curriculum/fixtures/package-dry-run/src/archer_words_test.fl (excerpt)
module archer_words_test;
@imports
:: root::archer_words
:: lib::std::tests::testing;
test reports_greeting_length(&testing::UnitTest t) {
if archer_words::greeting_length() != 6 {
t->fail();
}
}

Este trecho depende dos outros arquivos do pacote. O código completo compilado está disponível abaixo.

Código completo do pacote (3 arquivos)

longbow.toml

longbow.toml
[package]
name = "archer-words"
registry = "flecha-docs/archer-words"
version = "0.1.0"
kind = "library"
[dependencies]

src/archer_words.fl

src/archer_words.fl
module archer_words;
export i32 greeting_length() {
return 6;
}

src/archer_words_test.fl

src/archer_words_test.fl
module archer_words_test;
@imports
:: root::archer_words
:: lib::std::tests::testing;
test reports_greeting_length(&testing::UnitTest t) {
if archer_words::greeting_length() != 6 {
t->fail();
}
}

O trecho é um módulo de teste dentro de um pacote Longbow. O bundle completo mostra a função pública e o manifesto dos quais o teste depende; os comandos verificam o pacote, não um arquivo isolado.

Comandos

Comandos
longbow check curriculum/fixtures/package-dry-run
longbow test curriculum/fixtures/package-dry-run
longbow build curriculum/fixtures/package-dry-run

Saída esperada

Saída esperada
archer_words_test.fl ............................... OK [1/1] tests passed
status de saída: 0

Referência relacionada: /docs/reference/package_qualification/.

Continue em Intermediário: propriedade, movimentos e empréstimos verificados.