diff options
| author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2026-08-24 21:32:26 +0200 |
|---|---|---|
| committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2026-08-24 21:32:26 +0200 |
| commit | 751860690d2b74252ba3126d51cd37aa1c9ed0eb (patch) | |
| tree | 60a6040602bfd0f62410eb6aaf9bb7ae7ea05d8f /src/test/java | |
| parent | e8213085ebb446081cfe6ce45f047d6862e1a755 (diff) | |
Rheinland-Pfalz schreibt Worte, nicht Wörter
Die Erste Landesverordnung zur Änderung der Ausbildungs- und Prüfungsordnung der
Unfallkasse (GVBl. 2026 Nr. 21) kommt als Erkennungsfall in den Bestand — nicht
als Akzeptanzfall, und der Grund liegt in der Quelle: Das rheinland-pfälzische
Landesrechtsportal führt keine früheren Gesamtausgaben, ebensowenig das
saarländische und das sachsen-anhaltische. Die Fassungsliste, über die Hessen,
Schleswig-Holstein, Berlin und Baden-Württemberg jede Fassung datierbar ausgeben,
gibt es dort nicht. Ohne Vorfassung kein Vergleich; der Stamm ist hier die
Nachfassung, und die neun „Zieltext nicht vorhanden“ sind gerade der Beleg dafür,
dass die Befehle dort bereits vollzogen sind.
Zwei allgemeine Funde hat der Fall trotzdem gebracht. Das Land schreibt „die
Worte“, wo das Handbuch der Rechtsförmlichkeit „die Wörter“ setzt — der Erkenner
nimmt die Nebenform jetzt überall an, ohne sie blieben sieben der 23 Befehle
unerkannt. Und der Seitenfuß des dortigen Gesetzblattes steht im Inhaltsstrom und
zerschneidet das Zitat einer Neufassung („§ 18 erhält folgende Fassung:“ /
Fußzeile / „„§ 18 …““); er wird nun herausgeschnitten wie die Füße der
Gesetzblätter Berlins, Thüringens und Baden-Württembergs.
Drei Idiome bleiben benannt offen: die Satzzeichen-Ersetzung im Verbund mit einer
Halbsatz-Anfügung („durch einen Strichpunkt ersetzt und folgender Halbsatz
angefügt“), „In der Einleitung“ als Ziel, und die Verweisung auf einen anderen
Punkt („entsprechend der vorstehenden Nummer 8 Buchst. a“).
Nebenbei ein besserer Beschaffungsweg, in RheinlandPfalz/SOURCES festgehalten:
Der Portaltext wird im Browser als Blob zum Herunterladen angeboten und landet
unmittelbar als Datei im Dateisystem, statt stückweise durch die Textausgabe der
Browsersteuerung zu gehen. Der PDF-Verweis der Dokumentansicht taugt dafür nicht
— er ist an die Sitzung gebunden.
Geprüft: 350 Tests, REUSE 188/188.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I317f2d368b734c1152cd47cc09356de60f5dfb35
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/eu/mulk/aendggner/EndToEndTest.java | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/test/java/eu/mulk/aendggner/EndToEndTest.java b/src/test/java/eu/mulk/aendggner/EndToEndTest.java index 7aa1727..a2199f9 100644 --- a/src/test/java/eu/mulk/aendggner/EndToEndTest.java +++ b/src/test/java/eu/mulk/aendggner/EndToEndTest.java @@ -1816,4 +1816,69 @@ class EndToEndTest { assertThat(synopse.anzahlAngewandt()).isEqualTo(4); assertThat(synopse.html()).doesNotContain("tritt gestaffelt in Kraft"); } + + /** + * Rheinland-Pfalz: die Erste Landesverordnung zur Änderung der Ausbildungs- und Prüfungsordnung + * für den Zugang zum dritten Einstiegsamt bei der Unfallkasse (GVBl. 2026 Nr. 21). + * + * <p>Die Prüfung reicht bis zur Befehlserkennung, nicht bis zur Anwendung, und zwar aus einem + * Grund, der in der Quelle liegt: Das rheinland-pfälzische Landesrechtsportal führt + * <em>keine</em> früheren Gesamtausgaben — anders als Hessen, Schleswig-Holstein, Berlin und + * Baden-Württemberg kennt es nur die aktuelle. Ebenso das saarländische und das + * sachsen-anhaltische Portal. Der Stamm ist deshalb die <em>Nachfassung</em>; die neun Meldungen + * „Zieltext nicht vorhanden“ sind gerade der Beleg dafür, dass die Befehle dort bereits vollzogen + * sind. Die Verkündungsplattform verkuendung.rlp.de gibt die Hefte seit dem 1. Juli 2026 als + * freie PDF aus, das Änderungsblatt ist also frei zugänglich — es fehlt allein die Vorfassung. + * + * <p>Zwei allgemeine Funde hat der Fall gleichwohl gebracht (beide behoben): + * + * <ol> + * <li>Rheinland-Pfalz schreibt „die <b>Worte</b>“, wo das Handbuch der Rechtsförmlichkeit „die + * Wörter“ setzt. Der Befehlserkenner nimmt die Nebenform nun überall an; ohne sie blieben + * sieben der dreiundzwanzig Befehle unerkannt. + * <li>Der Seitenfuß des GVBl. steht im Inhaltsstrom und zerschneidet das Zitat einer Neufassung + * („§ 18 erhält folgende Fassung:“ / Fußzeile / „„§ 18 …““). + * </ol> + */ + @Test + void unfallkassenAusbildungsVORheinlandPfalz() throws Exception { + var stamm = SAMPLEDATA.resolve("RheinlandPfalz/UKAPOGS-E3-neu.txt"); + var pdf = SAMPLEDATA.resolve("RheinlandPfalz/GVBl-2026-21_UKAPOGS-E3-AendVO.pdf"); + assumeTrue(Files.exists(stamm) && Files.exists(pdf), "RLP-Beispieldaten fehlen"); + + var gesetz = new eu.mulk.aendggner.gesetz.land.LandesRechtLoader().load(stamm); + assertThat(gesetz.jurabk()).isEqualTo("UKAPOGS-E3"); + assertThat(gesetz.normen()).hasSize(22); + + var text = TextBereiniger.bereinige(new PatchTextExtraktor().extrahiere(pdf)); + // Der Seitenfuß ist heraus; ohne ihn steht das Zitat der Neufassung wieder zusammenhängend da. + assertThat(text).doesNotContain("Gesetz- und Verordnungsblatt für das Land Rheinland-Pfalz -"); + assertThat(text.replaceAll("\\s+", " ")) + .contains("§ 18 erhält folgende Fassung: „§ 18 Bestehen der Laufbahnprüfung"); + + var parseErgebnis = new AenderungsgesetzParser().parse(text, gesetz, null); + assertThat(parseErgebnis.artikel()).containsExactly("1"); + assertThat(parseErgebnis.befehle()).hasSize(23); + + // Die Nebenform „die Worte“ wird wie „die Wörter“ gelesen. + var wortbefehle = + parseErgebnis.befehle().stream() + .filter(b -> b.provenienz().originalText().contains("die Worte")) + .toList(); + assertThat(wortbefehle).hasSizeGreaterThanOrEqualTo(7); + assertThat(wortbefehle).filteredOn(b -> b instanceof UnbekannterBefehl).hasSize(1); + + // Drei benannte Idiom-Grenzen, alle im Wortlaut festgehalten: + // 5. a) aa) — Satzzeichen-Ersetzung im Verbund mit einer Halbsatz-Anfügung („wird der Punkt + // durch einen Strichpunkt ersetzt und folgender Halbsatz angefügt“). + // 7. a) aa) — „In der Einleitung“ als Ziel, also der Chapeau eines Satzes mit Nummern. + // 12. — die Verweisung auf einen anderen Punkt desselben Artikels („Die Inhaltsübersicht wird + // entsprechend der vorstehenden Nummer 8 Buchst. a geändert“). + var unerkannt = + parseErgebnis.befehle().stream() + .filter(b -> b instanceof UnbekannterBefehl) + .map(b -> b.provenienz().gliederungsPfad()) + .toList(); + assertThat(unerkannt).containsExactly("5. a) aa)", "7. a) aa)", "12."); + } } |
