generated from GarandPLG/rust-flake-template
Add tests, fix offset logic, and bump dependencies
- Introduce a comprehensive test suite (cli, app, board, tasks, audio) and a new TESTING.md document describing test execution. - Correct vertical offset calculation in `BoardState` to use saturating subtraction and ceiling division. - Clamp initial `Offset` values to the provided maximum in `Offset::new`. - Export `load_audio` from the audio thread module and switch to `LoopedDecoder` for proper OGG looping. - Update several crate versions: clap, ratatui, log, rodio, and bitflags.
This commit is contained in:
1 parent
9bc42dc898
commit
fcdbbaf74c
16 files changed
+817
-246
No files matched your search
@@ -0,0 +1,46 @@
|
||||
# Testy
|
||||
|
||||
Uruchomienie całego zestawu z katalogu głównego:
|
||||
|
||||
```sh
|
||||
nix develop -c cargo test --all-targets
|
||||
```
|
||||
|
||||
Testy korzystają z wbudowanego mechanizmu Rust, Clap i `ratatui::backend::TestBackend`. Nie dodano zależności. Nie wymagają terminala interaktywnego ani urządzenia audio. Test audio używa pliku `soundtracks/default/calm.ogg`, więc zasoby muszą być dostępne w repozytorium.
|
||||
|
||||
## Zakres
|
||||
|
||||
| Plik | Liczba | Zachowania |
|
||||
|---|---:|---|
|
||||
| `tests/cli.rs` | 5 | Domyślne ustawienia, granice wszystkich opcji liczbowych, XP (także NaN i infinity), błędne enumy, flagi audio, uruchomienie binarki z help/version i błędnym argumentem |
|
||||
| `tests/app.rs` | 7 | Nawigacja menu, wybór ekranów, wyjście, ignorowanie zwolnienia klawisza, komendy audio i zamknięty kanał, panel, zoom, ruch, renderowanie wszystkich widoków bez mutacji stanu, wejście przed inicjalizacją |
|
||||
| `tests/board.rs` | 7 | Rozmieszczenie baz/złóż/jednostek, granice kursora i kamery, zatwierdzanie/anulowanie ścieżki, cofanie z powtórzonym polem, duży viewport, resize i zoom |
|
||||
| `tests/tasks.rs` | 3 | Przyrost i limit postępu, reset postępu przy zmianie celu, pusta ścieżka, kolejność zadań górnika |
|
||||
| `tests/audio.rs` | 1 | Zapętlanie rzeczywistego pliku OGG po jego końcu |
|
||||
|
||||
Łącznie: 23 testy. Wszystkie testy znajdują się w `tests/` i sprawdzają publiczne interfejsy biblioteki lub binarkę. Funkcja `load_audio` jest eksportowana przez `app::threads`, dzięki czemu test korzysta z tego samego dekodera co odtwarzanie.
|
||||
|
||||
Wybrane zestawy i pojedynczy przypadek:
|
||||
|
||||
```sh
|
||||
nix develop -c cargo test --test cli
|
||||
nix develop -c cargo test --test app
|
||||
nix develop -c cargo test --test board
|
||||
nix develop -c cargo test --test tasks
|
||||
nix develop -c cargo test --test audio
|
||||
nix develop -c cargo test --test board large_viewport_and_zoom_keep_camera_inside_map
|
||||
```
|
||||
|
||||
Kontrole uzupełniające:
|
||||
|
||||
```sh
|
||||
nix develop -c cargo check --all-targets
|
||||
nix develop -c cargo fmt --all -- --check
|
||||
nix develop -c cargo clippy --all-targets
|
||||
```
|
||||
|
||||
`shellHook` środowiska Nix dodatkowo wykonuje `cargo run -- -h`. Wynik pomocy nie jest wynikiem testów; właściwy raport zawiera podsumowania `test result`.
|
||||
|
||||
## Ograniczenia
|
||||
|
||||
Zestaw nie weryfikuje pełnej rozgrywki ani `advance_turn`, którego wywołanie nadal jest zakomentowane. Nie potwierdza odsłuchu, zużycia CPU, obsługi urządzeń, pakowania Nix ani wszystkich układów małych terminali. Testy renderowania są kontrolą podstawową, bez utrwalania pełnych zrzutów ekranów. Brak konfiguracji CI; polecenia należy wykonywać lokalnie przed zakończeniem zmian.
|
||||
Reference in new issue
Block a user