Tests für modules/basemap_stilvorlagen.py – lokale Stilvorlagen des Basemap-Layers (Basis #88).
TestStilvorlagen 8
flowchart TD
root(["test_basemap_stilvorlagen.py"])
class root rootnode
root --> g1["TestStilvorlagen (8)"]
diff --git a/docs/tests/testkatalog.md b/docs/tests/testkatalog.md
index 23d6be2..61ea24d 100644
--- a/docs/tests/testkatalog.md
+++ b/docs/tests/testkatalog.md
@@ -9,17 +9,17 @@ selbst (Docstrings) und aus der Testbaseline.
Stand der Baseline: `docs/status/testbaseline.json` (SHA-256 `aeabc946a7f3`)
-Gesamt: 3 Pakete, 55 Testdateien, 648 Testfälle – 605 grün, 35 rot (Baseline), 8 übersprungen.
-Mit Beschreibung (Docstring): 503 von 648 (78 %).
+Gesamt: 3 Pakete, 56 Testdateien, 656 Testfälle – 613 grün, 35 rot (Baseline), 8 übersprungen.
+Mit Beschreibung (Docstring): 511 von 656 (78 %).
## Zusammenfassung
| Paket | Testdateien | Testfälle | grün | rot (Baseline) | übersprungen | mit Beschreibung |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
-| `sn_basis` | 38 | 396 | 396 | 0 | 0 | 396 von 396 (100 %) |
+| `sn_basis` | 39 | 404 | 404 | 0 | 0 | 404 von 404 (100 %) |
| `sn_verfahrensgebiet` | 12 | 208 | 166 | 34 | 8 | 106 von 208 (51 %) |
| `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) |
-| **Summe** | **55** | **648** | **605** | **35** | **8** | **503 von 648 (78 %)** |
+| **Summe** | **56** | **656** | **613** | **35** | **8** | **511 von 656 (78 %)** |
### Legende
@@ -31,7 +31,7 @@ Mit Beschreibung (Docstring): 503 von 648 (78 %).
## Paket `sn_basis`
-Plattform-Plugin, Ordner `Plugin_SN_Basis` – 38 Testdateien mit 396 Testfällen (396 grün, 0 rot, 0 übersprungen).
+Plattform-Plugin, Ordner `Plugin_SN_Basis` – 39 Testdateien mit 404 Testfällen (404 grün, 0 rot, 0 übersprungen).
### `Plugin_SN_Basis/tests/test_base_dockwidget.py`
@@ -57,7 +57,7 @@ Testgruppen:
- `TestMehrfachauswahl` (1 Testfälle): — (Docstring fehlt)
- `TestDruckanbindung` (4 Testfälle): — (Docstring fehlt)
-- `TestBasemapBereich` (8 Testfälle): — (Docstring fehlt)
+- `TestBasemapBereich` (10 Testfälle): — (Docstring fehlt)
| Testfall | prüft | Status |
| --- | --- | --- |
@@ -73,6 +73,8 @@ Testgruppen:
| `TestBasemapBereich.test_stil_laden_bricht_bei_fremder_vorlage_ab` | Prüft, dass eine Vorlage mit unbekannten Styles nur nach Bestätigung geladen wird. | grün |
| `TestBasemapBereich.test_vorhandene_vorlage_wird_nur_nach_rueckfrage_ersetzt` | Prüft, dass eine gleichnamige Stilvorlage ohne Bestätigung nicht überschrieben wird. | grün |
| `TestBasemapBereich.test_speichern_mit_aktueller_legendenauswahl` | Prüft, dass eine neue Stilvorlage zusammen mit der aktuellen Legendenauswahl gespeichert wird. | grün |
+| `TestBasemapBereich.test_punktlinien_korrigieren_meldet_anzahl` | Prüft, dass „Punktlinien korrigieren“ den Basemap-Layer korrigiert und die Anzahl korrigierter Styles meldet. | grün |
+| `TestBasemapBereich.test_punktlinien_ohne_basemap_layer_warnt` | Prüft, dass ohne Basemap-Layer nichts korrigiert, sondern gewarnt wird. | grün |
| `TestBasemapBereich.test_stil_speichern_ohne_basemap_layer_warnt` | Prüft, dass ohne Basemap-Layer keine Stilvorlage gespeichert, sondern gewarnt wird. | grün |
### `Plugin_SN_Basis/tests/test_basemap_kacheln.py`
@@ -174,6 +176,24 @@ Testgruppen:
| `TestPlatzierung.test_mehrspaltig_wenn_hoehe_nicht_reicht` | Prüft, dass die Legende zwei- oder dreispaltig wird, wenn sie einspaltig nicht zwischen Hauptlegende und Quellenangabe passt. | grün |
| `TestPlatzierung.test_nie_breiter_als_der_seitenrand_mit_hinweis` | Prüft, dass keine Spaltenzahl gewählt wird, die über den Seitenrand ragt, und dann ein Hinweis kommt. | grün |
+### `Plugin_SN_Basis/tests/test_basemap_stilkorrektur.py`
+
+Worum es in der Datei geht: Tests für modules/basemap_stilkorrektur.py – Punktlinien des Basemap-Layers sichtbar machen (Basis #90).
+
+Testgruppen:
+
+- `TestMusterUndAusdruck` (2 Testfälle): — (Docstring fehlt)
+- `TestLayerkorrektur` (4 Testfälle): — (Docstring fehlt)
+
+| Testfall | prüft | Status |
+| --- | --- | --- |
+| `TestMusterUndAusdruck.test_strichlaenge_null_im_festen_muster` | Prüft, dass Strichlängen 0 (gerade Positionen) im Strichmuster ersetzt und Lücken der Länge 0 nicht verändert werden. | grün |
+| `TestMusterUndAusdruck.test_strichlaenge_null_im_zoomabhaengigen_ausdruck` | Prüft, dass jede Strichlänge 0 in den array(...)-Mustern des Konverter-Ausdrucks ersetzt wird und der übrige Ausdruck gleich bleibt. | grün |
+| `TestLayerkorrektur.test_punktlinien_werden_korrigiert_andere_styles_nicht` | Prüft, dass nur Styles mit Strichlänge 0 korrigiert werden – Muster und Ausdruck – und die Anzahl zurückkommt. | grün |
+| `TestLayerkorrektur.test_zweiter_lauf_korrigiert_nichts` | Prüft, dass ein zweiter Lauf keine Styles mehr korrigiert und nicht neu zeichnen lässt. | grün |
+| `TestLayerkorrektur.test_nur_ausdruck_ohne_festes_muster` | Prüft, dass auch ein Style korrigiert wird, dessen Strichlänge 0 nur im zoomabhängigen Ausdruck steht. | grün |
+| `TestLayerkorrektur.test_layer_ohne_renderer` | Prüft, dass ein Layer ohne Renderer 0 korrigierte Styles liefert. | grün |
+
### `Plugin_SN_Basis/tests/test_basemap_stilvorlagen.py`
Worum es in der Datei geht: Tests für modules/basemap_stilvorlagen.py – lokale Stilvorlagen des Basemap-Layers (Basis #88).
@@ -1388,7 +1408,7 @@ Arbeitsliste: Diese Testfälle haben keinen Docstring; was sie fachlich prüfen,
aus dem Quelltext erschließen. Jeder Eintrag braucht eine einzeilige Beschreibung im Testfall,
dann verschwindet er hier von selbst.
-### `sn_basis` – 0 von 396 Testfällen ohne Beschreibung
+### `sn_basis` – 0 von 404 Testfällen ohne Beschreibung
Keine Lücken.
diff --git a/docs/wissen/fallstricke.md b/docs/wissen/fallstricke.md
index 1c11907..83bc28f 100644
--- a/docs/wissen/fallstricke.md
+++ b/docs/wissen/fallstricke.md
@@ -53,6 +53,12 @@ Kurz, konkret, mit Datum und Quelle. Neue Einträge oben in der passenden Rubrik
## Daten und Dienste
+- **Punktlinien aus Mapbox-Styles sind in QGIS unsichtbar.** basemap.de (wie viele MapLibre-Stile) zeichnet Punktlinien
+ als `line-dasharray` mit Strichlänge 0 und `line-cap: round`. QGIS übernimmt das beim Import 1:1, Qt zeichnet
+ Striche der Länge 0 aber gar nicht – auch nicht als Punkt, weder in der Karte noch in der Legende. Betroffen
+ sind bei basemap.de 12 Styles (Baumreihe, Hecke, Durchlass, Seilbahnen …). Abhilfe: Strichlänge 0 durch 0,01
+ ersetzen (`sn_basis.modules.basemap_stilkorrektur`). Beim Prüfen solcher Effekte die Beschriftung abschalten –
+ sonst zählen Labels als „sichtbare Pixel“. (02.10.2026, QGIS 3.44 / PyQt 5.15, Basis #90; QGIS 4 ungeprüft)
- **basemap.de-Vektorkacheln (Basis #88):** QGIS zeigt für Vektorkachel-Layer keine Legende. Objekte im Gebiet
liefert `QgsVectorTileLayer.selectByGeometry()` (lädt die Kacheln selbst; `getRawTile` ist in Python gesperrt).
Kacheln enden bei Zoom 15. Der Renderer prüft Styles mit `scaleToZoomLevel(maßstab, False)` und setzt