Testroutinen auf kseinaus umbenannt und aktualisiert

test_ks.lsp in test_kseinaus.lsp umbenannt und alle Testroutinen
(foerderer, kreisel, omniflo) sowie run_tests.bat und README
entsprechend angepasst.
This commit is contained in:
2026-06-19 21:00:45 +02:00
parent 21682576c4
commit c01dad28f3
7 changed files with 421 additions and 180 deletions
+65 -24
View File
@@ -10,13 +10,22 @@ Die Tests folgen einer **zweistufigen Architektur**:
```
BricsCAD Kommandozeile
| |
| TEST_KREISEL |
| TEST_OMNIFLO_EXPORT |
| SSG_RUN_ALL_TESTS |
| (TEST_KREISEL, |
| TEST_FOERDERER, |
| TEST_KSEINAUS, |
| TEST_OMNIFLO) |
| | |
v v |
tests/output/ |
kreisel_results.json |
kreisel_tests.dxf |
foerderer_results.json |
foerderer_tests.dxf |
kseinaus_results.json |
kseinaus_tests.dxf |
omniflo_results.json |
omniflo_tests.dxf |
omniflo_export.csv |
|
bin\run_tests.bat --runall
@@ -44,17 +53,26 @@ tests/
conftest.py # Gemeinsame pytest-Fixtures (Pfade, JSON/DXF-Laden)
create_testbase.py # Erzeugt Basis-DXF (optional, wird nicht mehr benoetigt)
requirements.txt # Python-Abhaengigkeiten (ezdxf, pytest)
test_run_all.lsp # Fuehrt alle Tests aus: C:SSG_RUN_ALL_TESTS
test_kreisel.lsp # LISP-Testrunner: C:TEST_KREISEL
test_kreisel.py # pytest-Validierung der Kreisel-Ergebnisse
test_omniflo.lsp # LISP-Testrunner: C:TEST_OMNIFLO_EXPORT
test_foerderer.lsp # LISP-Testrunner: C:TEST_FOERDERER
test_kseinaus.lsp # LISP-Testrunner: C:TEST_KSEINAUS
test_omniflo.lsp # LISP-Testrunner: C:TEST_OMNIFLO
test_omniflo.py # pytest-Validierung der Omniflo-Ergebnisse
testdata/
kreisel_tests.json # Testfall-Definitionen fuer Kreisel
omniflo_tests.json # Testfall-Definitionen fuer Omniflo
output/ # Ergebnisse aus BricsCAD (nicht in Git)
kreisel_results.json
kreisel_tests.dxf
omniflo_export.csv
kreisel_results.json # JSON-Ergebnisse pro Testmodul
kreisel_tests.dxf # DXF-Zeichnung pro Testmodul
foerderer_results.json
foerderer_tests.dxf
kseinaus_results.json
kseinaus_tests.dxf
omniflo_results.json
omniflo_tests.dxf
omniflo_export.csv # CSV-Export (Omniflo-spezifisch)
reference/ # Abgenommene Referenzdaten (in Git)
kreisel_ref.dxf
...
@@ -70,22 +88,30 @@ BricsCAD starten (ueber `bin\start_briscad.bat`) und Module laden:
(load (strcat (getenv "DXFMAKRO") "/Lisp/ssg_load.lsp"))
```
Dann den gewuenschten Testrunner laden und ausfuehren:
Dann alle Tests auf einmal ausfuehren:
```lisp
;; Kreisel-Test
(load (strcat (getenv "DXFMAKRO") "/tests/test_kreisel.lsp"))
TEST_KREISEL
;; Omniflo-Test
(load (strcat (getenv "DXFMAKRO") "/tests/test_omniflo.lsp"))
TEST_OMNIFLO_EXPORT
;; Alle Tests ausfuehren (empfohlen)
(load (strcat (getenv "DXFMAKRO") "/tests/test_run_all.lsp"))
SSG_RUN_ALL_TESTS
```
Die Testrunner:
- Lesen Testfaelle aus `testdata/*.json`
- Fuegen Bloecke per Script-Funktionen ein (ohne User-Interaktion)
- Speichern Ergebnisse nach `output/`
Oder einen einzelnen Test:
```lisp
;; Einzeltest (z.B. Kreisel)
(load (strcat (getenv "DXFMAKRO") "/tests/test_kreisel.lsp"))
TEST_KREISEL
;; Ergebnisse manuell exportieren:
(kreisel:export-results (strcat (getenv "DXFMAKRO") "/tests/output"))
```
`SSG_RUN_ALL_TESTS` fuehrt fuer jedes Modul in `*test-module*` folgendes aus:
- Zeichnung leeren (ERASE + PURGE)
- Testdatei laden und Befehl ausfuehren
- JSON-Export aufrufen (`<name>:export-results`)
- DXF speichern (`<name>_tests.dxf`)
- Bei Fehler: weiter mit naechstem Test (vl-catch-all-apply)
### 2. Python-Validierung ausfuehren
@@ -167,6 +193,19 @@ Fuer ein neues Modul eine neue `.lsp`-Datei erstellen nach dem Muster:
```lisp
;; test_<modul>.lsp
;; Konvention: Basisname <modul> bestimmt Befehl, DXF und Export-Funktion
;; Export-Funktion (wird von test_run_all.lsp aufgerufen)
(defun <modul>:export-results (tests-out-dir / out-json f first)
(if (null *<modul>-test-results*)
(princ "\n Keine <modul>-Ergebnisse vorhanden.")
(progn
(vl-mkdir tests-out-dir)
(setq out-json (strcat tests-out-dir "/<modul>_results.json"))
;; ... JSON-Array schreiben ...
)
)
)
(defun c:TEST_<MODUL> (/ ...)
(ssg-start "TEST_<MODUL>" '(("OSMODE") ("ATTREQ") ("ATTDIA")))
@@ -183,17 +222,19 @@ Fuer ein neues Modul eine neue `.lsp`-Datei erstellen nach dem Muster:
;; ... Script-Funktion aufrufen, Ergebnis pruefen ...
)
;; 3. Ergebnisse als JSON speichern
(setq out-json (strcat (getenv "DXFMAKRO") "/tests/output/<modul>_results.json"))
;; ... JSON schreiben ...
;; 4. DXF speichern
(command "_.SAVEAS" "DXF" out-dxf)
;; 3. Ergebnisse in globaler Variable speichern
(setq *<modul>-test-results* (reverse results-list))
(ssg-end)
)
```
Dann den Basisnamen in `*test-module*` (in `test_run_all.lsp`) eintragen:
```lisp
(setq *test-module* '("kreisel" "foerderer" "kseinaus" "omniflo" "<modul>"))
```
Wichtig:
- `omni:load-json` erwartet ein **flaches JSON-Array** mit flachen Objekten (kein Nesting)
- `omni:val` liest Werte aus den geladenen Eintraegen