diff options
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/java/eu/mulk/aendggner/EndToEndTest.java | 4 | ||||
| -rw-r--r-- | src/test/java/eu/mulk/aendggner/aenderung/parse/BefehlErkennerTest.java | 15 | ||||
| -rw-r--r-- | src/test/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParserTest.java (renamed from src/test/java/eu/mulk/aendggner/gesetz/bayern/BayRechtTextParserTest.java) | 64 |
3 files changed, 71 insertions, 12 deletions
diff --git a/src/test/java/eu/mulk/aendggner/EndToEndTest.java b/src/test/java/eu/mulk/aendggner/EndToEndTest.java index 2e19090..0e90584 100644 --- a/src/test/java/eu/mulk/aendggner/EndToEndTest.java +++ b/src/test/java/eu/mulk/aendggner/EndToEndTest.java @@ -230,7 +230,7 @@ class EndToEndTest { assumeTrue(Files.exists(alt) && Files.exists(pdf), "BayJG-Beispieldaten fehlen"); // 1. Stammgesetz laden (Art.-gegliedert, amtliche Satznummern als Superskripte). - var gesetz = new eu.mulk.aendggner.gesetz.bayern.BayRechtLoader().load(alt); + var gesetz = new eu.mulk.aendggner.gesetz.land.LandesRechtLoader().load(alt); assertThat(gesetz.jurabk()).isEqualTo("BayJG"); assertThat(gesetz.langue()).isEqualTo("Bayerisches Jagdgesetz"); assertThat(gesetz.norm("Art. 1").orElseThrow().absaetze().get(0).text()) @@ -295,7 +295,7 @@ class EndToEndTest { var pdf = SAMPLEDATA.resolve("BayJG/Ltg-Drs-19-9707_Gesetzentwurf.pdf"); assumeTrue(Files.exists(alt) && Files.exists(pdf), "BayJG-Beispieldaten fehlen"); - var gesetz = new eu.mulk.aendggner.gesetz.bayern.BayRechtLoader().load(alt); + var gesetz = new eu.mulk.aendggner.gesetz.land.LandesRechtLoader().load(alt); var text = TextBereiniger.bereinige( new PatchTextExtraktor(eu.mulk.aendggner.aenderung.parse.SuperskriptModus.BEHALTEN) 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 8cf9eea..d89c898 100644 --- a/src/test/java/eu/mulk/aendggner/aenderung/parse/BefehlErkennerTest.java +++ b/src/test/java/eu/mulk/aendggner/aenderung/parse/BefehlErkennerTest.java @@ -91,6 +91,21 @@ class BefehlErkennerTest { } @Test + void erkenntNeufassungMitErhaeltFolgendeFassung() { + // „… erhält folgende Fassung:“ ist die Neufassungsform in Schleswig-Holstein und Niedersachsen. + var befehl = + erkenne( + "§ 34a Absatz 1 erhält folgende Fassung: „(1) Durch Hauptsatzung kann bestimmt" + + " werden, dass Gemeindevertreterinnen und Gemeindevertreter teilnehmen.“", + Stelle.LEER); + + assertThat(befehl).containsInstanceOf(Neufassung.class); + var neufassung = (Neufassung) befehl.orElseThrow(); + assertThat(neufassung.stelle().anzeigeText()).isEqualTo("§ 34a Absatz 1"); + assertThat(neufassung.neuerText()).startsWith("(1) Durch Hauptsatzung"); + } + + @Test void erkenntParagraphEinfuegung() { // Echter Befehl aus Art. 1 Nr. 17 des Dritten Bevölkerungsschutzgesetzes. var befehl = diff --git a/src/test/java/eu/mulk/aendggner/gesetz/bayern/BayRechtTextParserTest.java b/src/test/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParserTest.java index a5fc67a..3354255 100644 --- a/src/test/java/eu/mulk/aendggner/gesetz/bayern/BayRechtTextParserTest.java +++ b/src/test/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParserTest.java @@ -1,13 +1,14 @@ -package eu.mulk.aendggner.gesetz.bayern; +package eu.mulk.aendggner.gesetz.land; import static org.assertj.core.api.Assertions.assertThat; import eu.mulk.aendggner.gesetz.Gliederung; import org.junit.jupiter.api.Test; -class BayRechtTextParserTest { +class LandesRechtTextParserTest { - private static final String BEISPIEL = + // Bayern: Gliederung in „Art.“, amtliche Satznummern als Superskript. + private static final String BAYERN = """ BayJG: Bayerisches Jagdgesetz (BayJG) Vom 13. Oktober 1978 (BayRS V S. 595) BayRS 792-1-W (Art. 1–64) @@ -51,17 +52,38 @@ class BayRechtTextParserTest { (1) Dieses Gesetz tritt am 1. Januar 1979 in Kraft. """; + // Übriges Landesrecht: Gliederung in „§“ (wie der Bund), hier mit amtlichen Satznummern. + private static final String PARAGRAPHEN = + """ + Gemeindeordnung für das Land Nordrhein-Westfalen + (GO NRW) + Vom 14. Juli 1994 + I. Teil Grundlagen der Gemeindeverfassung + § 1 Wesen der Gemeinde + + (1) ¹Die Gemeinden sind die Grundlage des demokratischen Staatsaufbaus. ²Sie fördern das Wohl der Einwohner. + (2) Die Gemeinden verwalten ihre Angelegenheiten selbst. + § 2 Aufgaben + + Die Gemeinden erfüllen die Aufgaben der örtlichen Gemeinschaft. + § 3 (weggefallen) + + § 4 Satzungen + + (1) Die Gemeinden können ihre Angelegenheiten durch Satzung regeln. + """; + @Test - void parstTitelblock() { - var gesetz = BayRechtTextParser.parse(BEISPIEL); + void parstBayerischenTitelblock() { + var gesetz = LandesRechtTextParser.parse(BAYERN); assertThat(gesetz.jurabk()).isEqualTo("BayJG"); assertThat(gesetz.langue()).isEqualTo("Bayerisches Jagdgesetz"); assertThat(gesetz.kurzue()).isNull(); } @Test - void parstNormenMitTitelnUndAbsaetzen() { - var gesetz = BayRechtTextParser.parse(BEISPIEL); + void parstBayerischeNormenMitTitelnUndAbsaetzen() { + var gesetz = LandesRechtTextParser.parse(BAYERN); assertThat(gesetz.normen()) .extracting(n -> n.enbez()) .containsExactly("Art. 1", "Art. 3", "Art. 8", "Art. 59", "Art. 60", "Art. 63", "Art. 64"); @@ -82,7 +104,7 @@ class BayRechtTextParserTest { @Test void querverweiseAmZeilenanfangEroeffnenKeineNorm() { // „Art. 11 Abs. 6 …“ am Zeilenanfang in Art. 8 ist ein Querverweis, kein Normkopf. - var gesetz = BayRechtTextParser.parse(BEISPIEL); + var gesetz = LandesRechtTextParser.parse(BAYERN); var art8 = gesetz.norm("Art. 8").orElseThrow(); assertThat(art8.absaetze().get(0).text()).contains("Art. 11 Abs. 6 sind entsprechend"); assertThat(gesetz.norm("Art. 11")).isEmpty(); @@ -90,7 +112,7 @@ class BayRechtTextParserTest { @Test void parstGliederungenMitUnterUeberschriften() { - var gesetz = BayRechtTextParser.parse(BEISPIEL); + var gesetz = LandesRechtTextParser.parse(BAYERN); assertThat(gesetz.gliederungen()) .extracting(Gliederung::anzeigeText) .containsExactly( @@ -107,7 +129,7 @@ class BayRechtTextParserTest { @Test void erkenntWeggefalleneNormenUndFussnoten() { - var gesetz = BayRechtTextParser.parse(BEISPIEL); + var gesetz = LandesRechtTextParser.parse(BAYERN); assertThat(gesetz.norm("Art. 60").orElseThrow().weggefallen()).isTrue(); assertThat(gesetz.norm("Art. 63").orElseThrow().weggefallen()).isFalse(); @@ -117,4 +139,26 @@ class BayRechtTextParserTest { .contains("Enteignung⁶)") .contains("⁶) [Amtl. Anm.:] BayRS 2141-1-I"); } + + @Test + void parstParagraphengegliedertesLandesrecht() { + // Die übrigen Länder zitieren in „§“; das Sigel folgt aus dem Normkopf, ein Land-Merkmal ist + // nicht nötig. Amtliche Satznummern werden ebenso wie bei Bayern erhalten. + var gesetz = LandesRechtTextParser.parse(PARAGRAPHEN); + assertThat(gesetz.jurabk()).isEqualTo("GO NRW"); + assertThat(gesetz.langue()).isEqualTo("Gemeindeordnung für das Land Nordrhein-Westfalen"); + assertThat(gesetz.normen()) + .extracting(n -> n.enbez()) + .containsExactly("§ 1", "§ 2", "§ 3", "§ 4"); + + var p1 = gesetz.norm("§ 1").orElseThrow(); + assertThat(p1.titel()).isEqualTo("Wesen der Gemeinde"); + assertThat(p1.absaetze()).hasSize(2); + assertThat(p1.absaetze().get(0).text()).startsWith("¹Die Gemeinden sind die Grundlage"); + + // Unnummerierter Einzelabsatz und weggefallene Norm wie im bayerischen Fall. + assertThat(gesetz.norm("§ 2").orElseThrow().absaetze().get(0).nummer()).isNull(); + assertThat(gesetz.norm("§ 3").orElseThrow().weggefallen()).isTrue(); + assertThat(gesetz.gliederungen()).extracting(Gliederung::anzeigeText).containsExactly("I. Teil — Grundlagen der Gemeindeverfassung"); + } } |
