aboutsummaryrefslogtreecommitdiff
path: root/crates/nres/README.md
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-02-10 02:15:43 +0300
committerValentin Popov <valentin@popov.link>2026-02-10 02:15:43 +0300
commita24910791e45a9c5ab4f392fc5bd3a1cb0975349 (patch)
treec5abc82efebc3ad11e4fcf1bd0b443cc5c4a942a /crates/nres/README.md
parent371a060eb685a2b76651689689dfa07461f69c7e (diff)
downloadfparkan-a24910791e45a9c5ab4f392fc5bd3a1cb0975349.tar.xz
fparkan-a24910791e45a9c5ab4f392fc5bd3a1cb0975349.zip
feat: добавить README для библиотеки nres с описанием функционала и тестирования
Diffstat (limited to 'crates/nres/README.md')
-rw-r--r--crates/nres/README.md42
1 files changed, 42 insertions, 0 deletions
diff --git a/crates/nres/README.md b/crates/nres/README.md
new file mode 100644
index 0000000..8b9dfb5
--- /dev/null
+++ b/crates/nres/README.md
@@ -0,0 +1,42 @@
+# nres
+
+Rust-библиотека для работы с архивами формата **NRes**.
+
+## Что умеет
+
+- Открытие архива из файла (`open_path`) и из памяти (`open_bytes`).
+- Поддержка `raw_mode` (весь файл как единый ресурс).
+- Чтение метаданных и итерация по записям.
+- Поиск по имени без учёта регистра (`find`).
+- Чтение данных ресурса (`read`, `read_into`, `raw_slice`).
+- Редактирование архива через `Editor`:
+- `add`, `replace_data`, `remove`.
+- `commit` с пересчётом `sort_index`, выравниванием по 8 байт и атомарной записью файла.
+
+## Модель ошибок
+
+Библиотека возвращает типизированные ошибки (`InvalidMagic`, `UnsupportedVersion`, `TotalSizeMismatch`, `DirectoryOutOfBounds`, `EntryDataOutOfBounds`, и др.) без паник в production-коде.
+
+## Покрытие тестами
+
+### Реальные файлы
+
+- Рекурсивный прогон по `testdata/nres/**`.
+- Сейчас в наборе: **120 архивов**.
+- Для каждого архива проверяется:
+- чтение всех записей;
+- `read`/`read_into`/`raw_slice`;
+- `find`;
+- `unpack -> repack (Editor::commit)` с проверкой **byte-to-byte**.
+
+### Синтетические тесты
+
+- Проверка основных сценариев редактирования (`add/replace/remove/commit`).
+- Проверка валидации и ошибок:
+- `InvalidMagic`, `UnsupportedVersion`, `TotalSizeMismatch`, `InvalidEntryCount`, `DirectoryOutOfBounds`, `NameTooLong`, `EntryDataOutOfBounds`, `EntryIdOutOfRange`, `NameContainsNul`.
+
+## Быстрый запуск тестов
+
+```bash
+cargo test -p nres -- --nocapture
+```