diff options
Diffstat (limited to 'src/test/java/eu')
3 files changed, 43 insertions, 0 deletions
diff --git a/src/test/java/eu/mulk/aendggner/EndToEndTest.java b/src/test/java/eu/mulk/aendggner/EndToEndTest.java index 66b7f00..97bcffb 100644 --- a/src/test/java/eu/mulk/aendggner/EndToEndTest.java +++ b/src/test/java/eu/mulk/aendggner/EndToEndTest.java @@ -66,6 +66,13 @@ class EndToEndTest { // Das Original-BGBl enthält ein überzähliges Anführungszeichen (Artikel 3) — muss als // Warnung gemeldet werden, nicht als Abbruch. assertThat(parseErgebnis.warnungen()).isNotEmpty(); + // Und der Leser erfährt, woran die Reste liegen: Das XML trägt die Änderung dieses + // Gesetzes bereits als „textlich nachgewiesen“ und ist damit jünger als das Gesetz selbst. + assertThat(parseErgebnis.warnungen()) + .anyMatch(w -> w.contains("Das Stammgesetz ist jünger als das Änderungsgesetz")) + // Die Rüge ergeht einmal, obwohl zwei Artikel dasselbe Stammgesetz betreffen. + .filteredOn(w -> w.contains("ist jünger als")) + .hasSize(1); // 4. Anwenden: wirft nicht; jeder Befehl erhält einen Protokolleintrag. Auch hier ist das XML // jünger als das Änderungsgesetz — die Sollzahlen stehen in ifsgGegenZeitrichtigenStamm(). @@ -102,6 +109,9 @@ class EndToEndTest { assertThat(parseErgebnis.artikel()).containsExactly("1", "2"); assertThat(parseErgebnis.befehle()).hasSize(75); + // Gegen den zeitrichtigen Stamm ergeht keine Altersrüge; gegen den heutigen schon (siehe + // gesamtePipelineAufIfSgBeispiel). + assertThat(parseErgebnis.warnungen()).noneMatch(w -> w.contains("ist jünger als")); var anwendung = BefehlAnwender.anwenden(gesetz, parseErgebnis.befehle()); var manuellPfade = diff --git a/src/test/java/eu/mulk/aendggner/anwendung/BefehlAnwenderTest.java b/src/test/java/eu/mulk/aendggner/anwendung/BefehlAnwenderTest.java index 8b60017..1650d1b 100644 --- a/src/test/java/eu/mulk/aendggner/anwendung/BefehlAnwenderTest.java +++ b/src/test/java/eu/mulk/aendggner/anwendung/BefehlAnwenderTest.java @@ -342,6 +342,37 @@ class BefehlAnwenderTest { } @Test + void haengtGanzeParagraphenAnsGesetzAn() { + var befehl = + new Anfuegung( + Stelle.LEER, + Ebene.PARAGRAPH, + null, + "§ 4\nÜbergang\nWer zuvor erprobt hat, erprobt weiter.\n\n" + + "§ 5\nSchluss\nDiese Vorschrift gilt zuletzt.", + PROV); + + var ergebnis = BefehlAnwender.anwenden(gesetz(), List.of(befehl)); + + assertThat(ergebnis.protokoll().get(0).status()).isEqualTo(Status.ANGEWANDT); + assertThat(ergebnis.neu().normen().stream().map(Norm::enbez)) + .containsExactly("§ 1", "§ 2", "§ 3", "§ 4", "§ 5"); + assertThat(ergebnis.neu().norm("§ 4").orElseThrow().titel()).isEqualTo("Übergang"); + } + + @Test + void haengtNichtAnUndBegruendetEsWennDasZitatKeinenNormkopfTraegt() { + var befehl = + new Anfuegung(Stelle.LEER, Ebene.PARAGRAPH, null, "Wer zuvor erprobt hat, …", PROV); + + var ergebnis = BefehlAnwender.anwenden(gesetz(), List.of(befehl)); + + assertThat(ergebnis.protokoll().get(0).status()).isEqualTo(Status.MANUELL_PRUEFEN); + assertThat(ergebnis.protokoll().get(0).grund()).isEqualTo(Grund.ZITAT_UNBRAUCHBAR); + assertThat(ergebnis.neu().normen()).hasSize(3); + } + + @Test void hebtParagraphenAuf() { var befehl = new Aufhebung(stelle(new Stelle.Paragraph("2")), PROV); diff --git a/src/test/java/eu/mulk/aendggner/synopse/HtmlRendererTest.java b/src/test/java/eu/mulk/aendggner/synopse/HtmlRendererTest.java index b80fc88..6d8c840 100644 --- a/src/test/java/eu/mulk/aendggner/synopse/HtmlRendererTest.java +++ b/src/test/java/eu/mulk/aendggner/synopse/HtmlRendererTest.java @@ -72,6 +72,8 @@ class HtmlRendererTest { assertThat(html).contains("Manuell prüfen"); assertThat(html).contains("Die Nummern 1 bis 3 werden aufgehoben."); + // Nach Art des Grundes gebündelt, mit vorangestellter Häufigkeit. + assertThat(html).contains("Befehl nicht erkannt").contains("<span class=\"anzahl\">1</span>"); } @Test |
