aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/eu
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/eu')
-rw-r--r--src/test/java/eu/mulk/aendggner/EndToEndTest.java10
-rw-r--r--src/test/java/eu/mulk/aendggner/anwendung/BefehlAnwenderTest.java31
-rw-r--r--src/test/java/eu/mulk/aendggner/synopse/HtmlRendererTest.java2
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