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
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
[package]name = "archer-words"registry = "flecha-docs/archer-words"version = "0.1.0"kind = "library"
[dependencies]src/archer_words.fl
module archer_words;
export i32 greeting_length() { return 6;}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
longbow check curriculum/fixtures/package-dry-runlongbow test curriculum/fixtures/package-dry-runlongbow build curriculum/fixtures/package-dry-runSaída esperada
archer_words_test.fl ............................... OK [1/1] tests passedstatus de saída: 0Referência relacionada: /docs/reference/package_qualification/.
Trilha concluída
Seção intitulada “Trilha concluída”Continue em Intermediário: propriedade, movimentos e empréstimos verificados.