From a231681883935e0bee2f453b2a4ef3d798ed3534 Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Tue, 25 Aug 2026 22:55:02 +0200 Subject: Wer verweist, wird gelesen, auch wenn ihm nicht gefolgt wird MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit „Die Inhaltsübersicht wird entsprechend der vorstehenden Nummer 8 Buchst. a geändert.“ Ein Befehl, der seinen Inhalt nicht nennt, sondern auf einen anderen Punkt desselben Artikels verweist. Er galt bislang als nicht erkannt. Zwei Prüfungen haben ergeben, dass die naheliegende Abhilfe nicht trägt. Die Inhaltsübersicht wird nicht selbsttätig mitgeführt — der Anwender rührt sie bei einer Umnummerierung oder Neufassung nicht an —, und das rheinland-pfälzische Stammgesetz führt überhaupt keine Inhaltsübersicht. Den Befehl als „bereits bewirkt“ zu quittieren wäre also aktenwidrig; ihn auszuführen verlangte, dass der Anwender die Befehlsliste zurückliest und das Ziel umdeutet („Überschrift des § 13“ wird zur Titelspalte einer Übersichtszeile). Das ist ein eigenes Vorhaben. Er wird deshalb gelesen und ausdrücklich als Grenze gerügt. Der Unterschied ist kein kosmetischer: Der Rest wandert von „Befehl nicht erkannt“ zu „Nicht unterstützt“ und damit in die Gruppe, die das Handbuch für die bewusst gezogenen Grenzen führt. Die Synopse sagt fortan, dass hier das Erzeugnis die Grenze zieht, und nennt dabei den Verweis; sie sagt nicht mehr, die Vorlage sei unverständlich. Das Muster ist auf den ganzen Satz verankert, damit ein bloß adverbiales „entsprechend“ nicht mitgerissen wird. Damit sind sämtliche 23 Befehle des rheinland-pfälzischen Heftes erschlossen. Geprüft: 388 Tests (zuvor 386). Change-Id: I70d5ac52676310bf9bc2c95ab921bd74155a16b7 --- src/test/java/eu/mulk/aendggner/EndToEndTest.java | 24 +++++++++++------ .../aenderung/parse/BefehlErkennerTest.java | 30 ++++++++++++++++++++++ 2 files changed, 46 insertions(+), 8 deletions(-) (limited to 'src/test') diff --git a/src/test/java/eu/mulk/aendggner/EndToEndTest.java b/src/test/java/eu/mulk/aendggner/EndToEndTest.java index d0273ad..8cd867e 100644 --- a/src/test/java/eu/mulk/aendggner/EndToEndTest.java +++ b/src/test/java/eu/mulk/aendggner/EndToEndTest.java @@ -10,6 +10,7 @@ import eu.mulk.aendggner.aenderung.Aenderungsbefehl.Ersetzung; import eu.mulk.aendggner.aenderung.Aenderungsbefehl.Sammelbefehl; import eu.mulk.aendggner.aenderung.Aenderungsbefehl.StrukturEinfuegung; import eu.mulk.aendggner.aenderung.Aenderungsbefehl.UnbekannterBefehl; +import eu.mulk.aendggner.aenderung.Aenderungsbefehl.VerweisenderBefehl; import eu.mulk.aendggner.aenderung.Aenderungsbefehl.WortAnker; import eu.mulk.aendggner.aenderung.parse.AenderungsantragParser; import eu.mulk.aendggner.aenderung.parse.AenderungsgesetzParser; @@ -19,6 +20,7 @@ import eu.mulk.aendggner.aenderung.parse.SuperskriptModus; import eu.mulk.aendggner.aenderung.parse.TextBereiniger; import eu.mulk.aendggner.aenderung.parse.ZitatExtraktor; import eu.mulk.aendggner.anwendung.BefehlAnwender; +import eu.mulk.aendggner.anwendung.Grund; import eu.mulk.aendggner.anwendung.Nachfassungsabgleich; import eu.mulk.aendggner.gesetz.Absatz; import eu.mulk.aendggner.gesetz.Gesetz; @@ -1889,14 +1891,20 @@ class EndToEndTest { assertThat(befehlAn(parseErgebnis, "5. a) aa)")).isInstanceOf(Sammelbefehl.class); assertThat(befehlAn(parseErgebnis, "7. a) aa)")).isInstanceOf(Ersetzung.class); - // Eine benannte Grenze bleibt: 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("12."); + // Kein Befehl des Heftes bleibt mehr ungelesen. + assertThat(parseErgebnis.befehle()).noneMatch(b -> b instanceof UnbekannterBefehl); + + // Die Verweisung auf einen anderen Punkt desselben Artikels wird gelesen, aber bewusst nicht + // ausgeführt. Der Unterschied ist kein kosmetischer: Die Synopse sagt fortan, dass das + // Erzeugnis hier die Grenze zieht, und nicht, dass die Vorlage unverständlich sei. + var verweisung = befehlAn(parseErgebnis, "12."); + assertThat(verweisung).isInstanceOf(VerweisenderBefehl.class); + assertThat(((VerweisenderBefehl) verweisung).verweis()).isEqualTo("Nummer 8 Buchst. a"); + + var anwendung = BefehlAnwender.anwenden(gesetz, List.of(verweisung)); + assertThat(anwendung.protokoll().get(0).grund()).isEqualTo(Grund.NICHT_UNTERSTUETZT); + assertThat(anwendung.protokoll().get(0).begruendung()) + .contains("verweist auf „Nummer 8 Buchst. a“"); } private static Aenderungsbefehl befehlAn( diff --git a/src/test/java/eu/mulk/aendggner/aenderung/parse/BefehlErkennerTest.java b/src/test/java/eu/mulk/aendggner/aenderung/parse/BefehlErkennerTest.java index 80234b8..327c8db 100644 --- a/src/test/java/eu/mulk/aendggner/aenderung/parse/BefehlErkennerTest.java +++ b/src/test/java/eu/mulk/aendggner/aenderung/parse/BefehlErkennerTest.java @@ -15,6 +15,7 @@ import eu.mulk.aendggner.aenderung.Aenderungsbefehl.Streichung; import eu.mulk.aendggner.aenderung.Aenderungsbefehl.StrukturEinfuegung; import eu.mulk.aendggner.aenderung.Aenderungsbefehl.StrukturErsetzung; import eu.mulk.aendggner.aenderung.Aenderungsbefehl.Umnummerierung; +import eu.mulk.aendggner.aenderung.Aenderungsbefehl.VerweisenderBefehl; import eu.mulk.aendggner.aenderung.Aenderungsbefehl.WoerterEinfuegung; import eu.mulk.aendggner.aenderung.Aenderungsbefehl.WortAnker; import eu.mulk.aendggner.aenderung.Aenderungsbefehl.WortlautZuAbsatz; @@ -1514,4 +1515,33 @@ class BefehlErkennerTest { assertThat(ersetzung.alt()).isEqualTo(";"); assertThat(ersetzung.neu()).isEqualTo(","); } + + /** + * Die Verweisung auf einen anderen Punkt desselben Artikels wird gelesen, aber nicht ausgeführt. + * Erkannt zu werden ist gleichwohl mehr als gar nichts: Die Rüge sagt dann, dass das Erzeugnis + * die Grenze zieht, und nicht, dass die Vorlage unverständlich sei. + */ + @Test + void erkenntDieVerweisungAufEinenAnderenPunkt() { + var befehl = + erkenne( + "Die Inhaltsübersicht wird entsprechend der vorstehenden Nummer 8 Buchst. a geändert.", + Stelle.LEER); + + assertThat(befehl).containsInstanceOf(VerweisenderBefehl.class); + var verweisung = (VerweisenderBefehl) befehl.orElseThrow(); + assertThat(verweisung.verweis()).isEqualTo("Nummer 8 Buchst. a"); + assertThat(verweisung.stelle().betrifftInhaltsuebersicht()).isTrue(); + } + + /** Ein bloß adverbiales „entsprechend“ wird davon nicht mitgerissen. */ + @Test + void adverbialesEntsprechendIstKeineVerweisung() { + var befehl = + erkenne( + "In § 5 werden die Wörter „entsprechend der Anlage“ durch die Wörter „nach der" + + " Anlage“ ersetzt.", + Stelle.LEER); + assertThat(befehl).containsInstanceOf(Ersetzung.class); + } } -- cgit v1.2.1