diff options
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/java/eu/mulk/aendggner/EndToEndTest.java | 24 | ||||
| -rw-r--r-- | src/test/java/eu/mulk/aendggner/aenderung/parse/BefehlErkennerTest.java | 30 |
2 files changed, 46 insertions, 8 deletions
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); + } } |
