Lisp-Unit-Tests fuer reine Standardfunktionen + run_tests.bat --lisp

- tests/test_unit.lsp: Mini-Test-Framework (tu-eq/tu-eqf/tu-true/tu-nil)
  und Testfaelle fuer reine Funktionen aus ssg_core, ssg_lang, ssg_id,
  vf_core, export, Gefaellestrecke, OmniModulInsert, KreiselInsert.
  Befehl TEST_UNIT schreibt tests/output/unit_results.txt.
- tests/test_unit.scr: Headless-Startskript (laedt SSG_LIB, ruft
  TEST_UNIT, beendet BricsCAD), pfadunabhaengig ueber DXFMAKRO.
- bin/run_tests.bat: Schalter --lisp startet BricsCAD headless, wertet
  den Report aus (RESULT: OK/FAIL) und setzt den Exit-Code.
- tests/README.md: Abschnitt zu den LISP-Unit-Tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-23 14:44:11 +02:00
parent 52264f1531
commit 3f7074f06b
4 changed files with 491 additions and 2 deletions
+37
View File
@@ -39,6 +39,43 @@ tests/output/ |
test_foerderer.py
```
## LISP-Unit-Tests fuer reine Standardfunktionen (`--lisp`)
Neben den zeichnungsbasierten Integrationstests gibt es **Unit-Tests fuer einfache
LISP-Standardfunktionen** — reine Funktionen ohne Zeichnungsdatenbank, Auswahlsaetze,
Dialoge oder Blockdateien (String-/Zahl-/Vektor-/Alist-Helfer). Sie funktionieren
analog zu den Python-Unittests: jeder Testfall vergleicht einen Funktionsaufruf gegen
ein erwartetes Ergebnis.
- **Testrunner**: `tests/test_unit.lsp` — Befehl `TEST_UNIT`, Mini-Framework mit
`tu-eq` (exakt), `tu-eqf` (Fliesskomma-Toleranz), `tu-true`, `tu-nil`.
- **Startskript**: `tests/test_unit.scr` — laedt SSG_LIB + die Tests, ruft `TEST_UNIT`
auf und beendet BricsCAD (pfadunabhaengig ueber `DXFMAKRO`).
- **Ergebnis**: Konsole (PASS/FAIL je Test) und `tests/output/unit_results.txt`
(letzte Zeile `RESULT: OK` / `RESULT: FAIL`).
Ausfuehrung ueber die Kommandozeile (startet BricsCAD headless):
```cmd
bin\run_tests.bat --lisp
```
`run_tests.bat --lisp` loescht das alte Ergebnis, startet BricsCAD mit `test_unit.scr`,
gibt danach `unit_results.txt` aus und liefert Exit-Code 1, wenn ein Test fehlschlaegt
oder kein Report erzeugt wurde.
Direkt in BricsCAD (SSG_LIB geladen):
```lisp
(load (strcat (getenv "DXFMAKRO") "/tests/test_unit.lsp"))
TEST_UNIT
```
Getestete Module: `ssg_core`, `ssg_lang`, `ssg_id`, `vf_core`, `export`,
`Gefaellestrecke`, `OmniModulInsert`, `KreiselInsert`.
## Zeichnungsbasierte Integrationstests
**Jedes Testmodul laeuft in einer eigenen, neuen Zeichnung** (statt die aktuelle zu
leeren/wiederzuverwenden). `SSG_RUN_ALL_TESTS` fragt beim Start interaktiv nach
dem gewuenschten Modus: