diff options
Diffstat (limited to 'src/test/java/eu')
3 files changed, 46 insertions, 0 deletions
diff --git a/src/test/java/eu/mulk/aendggner/EndToEndTest.java b/src/test/java/eu/mulk/aendggner/EndToEndTest.java index 19a7c8c..b3bea08 100644 --- a/src/test/java/eu/mulk/aendggner/EndToEndTest.java +++ b/src/test/java/eu/mulk/aendggner/EndToEndTest.java @@ -597,5 +597,27 @@ class EndToEndTest { assertThat(ergebnis.befehle()) .extracting(b -> b.stelle().anzeigeText()) .containsExactly("§ 2 Satz 1 Nummer 2", "§ 2 Satz 1 Nummer 2"); + + // Artikel 1 ändert die unnummerierte, nach ihrer Vorschrift benannte Anlage („Die Anlage zu + // § 2 Absatz 4 Satz 1 wird wie folgt geändert“). Der Zusatz benennt die Anlage nur — er darf + // nicht als Ziel „§ 2“ gelesen werden; die Punkte erben „Anlage“ als Kontext. + var asog = + new Gesetz( + "ASOG Bln", "Allgemeines Sicherheits- und Ordnungsgesetz", null, List.of()); + var artikel1 = new AenderungsgesetzParser().parse(text, asog, null); + assertThat(artikel1.artikel()).containsExactly("1"); + assertThat(artikel1.befehle()) + .extracting(b -> b.stelle().anzeigeText()) + .containsExactly( + "§ 67 Absatz 2", + "Anlage Nummer 6 Absatz 2", + "Anlage Nummer 23 Absatz 4a", + "Anlage Nummer 23"); + // Bekannte Grenze: „Vor den Wörtern „…“ wird folgender Absatz 5 eingefügt“ — eine + // Struktureinfügung, deren Position ein Wortanker statt einer Stelle bestimmt. + assertThat(artikel1.befehle().stream().filter(b -> b instanceof UnbekannterBefehl).toList()) + .singleElement() + .extracting(b -> b.provenienz().gliederungsPfad()) + .isEqualTo("2. b) bb)"); } } diff --git a/src/test/java/eu/mulk/aendggner/aenderung/parse/StellenParserTest.java b/src/test/java/eu/mulk/aendggner/aenderung/parse/StellenParserTest.java index f15b98f..d5b960a 100644 --- a/src/test/java/eu/mulk/aendggner/aenderung/parse/StellenParserTest.java +++ b/src/test/java/eu/mulk/aendggner/aenderung/parse/StellenParserTest.java @@ -110,6 +110,21 @@ class StellenParserTest { } @Test + void parstUnnummerierteBenannteAnlage() { + // Ein Gesetz mit einer einzigen Anlage benennt sie nach der Vorschrift, zu der sie gehört. + // Der Zusatz identifiziert die Anlage und ist nicht selbst Ziel — sonst würde das darin + // genannte „§ 2“ als Ziel gelesen und die falsche Norm geändert. + var anlage = StellenParser.parse("Die Anlage zu § 2 Absatz 4 Satz 1").orElseThrow(); + assertThat(anlage.anzeigeText()).isEqualTo("Anlage"); + assertThat(anlage.anlagenEnbez()).contains("Anlage"); + assertThat(anlage.paragraph()).isEmpty(); + + // Nummerierte Anlagen bleiben unverändert. + assertThat(StellenParser.parse("Anlage 8 Nummer 1 Buchstabe b").orElseThrow().anzeigeText()) + .isEqualTo("Anlage 8 Nummer 1 Buchstabe b"); + } + + @Test void ignoriertChapeauZusatz() { // „in der Angabe vor Nummer 1“ ist ein verfeinernder Zusatz ohne eigene Komponente. assertThat(StellenParser.parse("Absatz 1 in der Angabe vor Nummer 1").orElseThrow().anzeigeText()) diff --git a/src/test/java/eu/mulk/aendggner/aenderung/parse/TextBereinigerTest.java b/src/test/java/eu/mulk/aendggner/aenderung/parse/TextBereinigerTest.java index 5ed8b93..5b7e850 100644 --- a/src/test/java/eu/mulk/aendggner/aenderung/parse/TextBereinigerTest.java +++ b/src/test/java/eu/mulk/aendggner/aenderung/parse/TextBereinigerTest.java @@ -224,6 +224,15 @@ class TextBereinigerTest { } @Test + void entferntSteuerzeichenUndRepariertZerrisseneBefehlsvokabeln() { + // Im GVBl. für Berlin trägt der Einzug der Aufzählungsglieder ein U+0007; es steht unsichtbar + // vor dem Befehl und ließ dessen Zeilenanfangs-Anker ins Leere greifen. Im selben Heft ist + // „eingefügt“ als „ein ge-“ + „fügt“ gesetzt — ein Leerzeichen mitten in der Befehlsvokabel. + assertThat(TextBereiniger.bereinige("a)\t Nach Nummer 6 wird folgender Absatz ein ge-\nfügt:")) + .isEqualTo("a)\t Nach Nummer 6 wird folgender Absatz eingefügt:"); + } + + @Test void schneidetDenBerlinerSeitenkopfAusDemFliesstext() { // Im GVBl. für Berlin steht der laufende Seitenkopf nicht auf einer eigenen Zeile, sondern // klebt samt Seitenzahl mitten im Text der folgenden Spalte. |
