- Java 58.5%
- Shell 31.1%
- Batchfile 10.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| _Runner/interlis-testbed-runner-0.0.1-SNAPSHOT | ||
| app | ||
| gradle/wrapper | ||
| misc | ||
| test_data | ||
| .gitignore | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| readme.md | ||
| runner_doc_copy.md | ||
| settings.gradle | ||
Testbed Constraints Datenmodell 'SO_AFU_Naturgefahren_20240515'
Aufruf Testbed
./gradlew clean test
Ausführen eines einzelnen Tests
./gradlew clean test --tests CheckAuftragKennungen
Schritte zum Ergänzen weiterer Tests
Am Beispiel des Constraints "MyNewConstraint":
- Neues Verzeichnis test_data/MyNewConstraint/ anlegen und 1-n Failcase.xtf anlegen. Beachten: Kommentare in Failcase.xtf am Ende einfügen.
- Unter app/src/test/java/ch/so/agi/natgef/testbed/befunde/ oder .../auftraege/ die Klasse MyNewConstraint.java mit der Testmethode anlegen.
- In app/src/test/java/ch/so/agi/natgef/testbed/TestbedHelper.java in "prefixes" den Prefix für MyNewConstraint eintragen.
Prefix: Voll qualifizierter Name der INTERLIS-Klasse des Constraints.
Merge-Logik der XTF-Dateien siehe im Repo:
https://github.com/GeoWerkstatt/interlis-testbed-runner
Falls nicht mehr erreichbar: Kopie der Doku (abgerufen am 10.7.2025)
Biblikotheken zur Validierung
Gewisse Constraints sind in den folgenden Funktionsbibliotheken umgesetzt:
- ilivalidator
- geow-interlis-functions
- interlis-functions-ngk-so
- ilivalidator-custom-functions-geometries
(Vollqualifizierte Namen und aktuelle Versionen siehe app/build.gradle)
Die Naturgefahren-Daten werden im GRETL-Importjob und im ilivalidator-web-service (https://geo.so.ch/ilivalidator/) validiert. Zwischen Gretl und dem ilivalidator-web-service sind manchmal aufgrund unterschiedlicher Update-Zyklen unterschiedliche Versionen der Bibliotheken nicht vermeidbar, was zu unterschiedlichem Verhalten führen kann. Die Bibliothekversionen in den folgenden Dateien konfiguriert:
- ilivalidator-web-service: In der Datei pom.xml
- GRETL: In der Datei libs.versions.toml im Verzeichnis gradle/
Übersicht Constraint-Typen / Testbed-Abdeckung
Mittels diesem Testbed kann das Modell 'SO_AFU_Naturgefahren_20240515' in bezug auf die spezifischen Constraints getestet werden. Die ca. 110 Constraints wurden dafür in 12 Typen-Kategorien eingeteilt und für jeden Kategorie liegt mindestens ein Failcase vor:
Objektcount
- Beispiele:
- MANDATORY CONSTRAINT INTERLIS.objectCount(THIS)==1;
- Abgedeckte Constraints:
- CheckAuftragEintrag
- Weitere Constraints:
- CheckWasserkennwerte
Unique
- Beispiele:
- UNIQUE Kennung;
- Abgedeckte Constraints:
- CheckAuftragKennungen
- Weitere Constraints:
- CheckTeilauftragEindeutigkeit
- CheckProzessquelleKennung
OR
- Beispiele:
- MANDATORY CONSTRAINT (Hauptprozess != #Wasser) OR Wasserkennwerte;
- Abgedeckte Constraints:
- CheckTeilauftragWasserKennwert
- CheckBefundPermanenteRutschungIWCode
GetArea
- Beispiele:
- MANDATORY CONSTRAINT GeoW_FunctionsExt.GetArea(THIS,"Geometrie") > 100;
- Abgedeckte Constraints:
- CheckAbklperimeterFlaechenGroesse
- Weitere Constraints:
- CheckBefundSteinBlockschlagFlaechenGroesse
- CheckBefundBergFelssturzFlaechenGroesse
- CheckBefundHangmureFlaechenGroesse
- CheckBefundAbsenkungFlaechenGroesse
- CheckBefundEinsturzFlaechenGroesse
- CheckBefundPermanenteRutschungFlaechenGroesse
- CheckBefundSpontaneRutschungFlaechenGroesse
- CheckBefundUebermurungFlaechenGroesse
- CheckBefundUeberschwemmungDynamischFlaechenGroesse
- CheckBefundUeberschwemmungStatischFlaechenGroesse
IsInsideExternal
- Beispiele:
- MANDATORY CONSTRAINT GeoW_FunctionsExt.IsInsideExternalXtf("SO_Hoheitsgrenzen_Publikation_20170626.Hoheitsgrenzen.Kantonsgrenze.Geometrie", "c6db23e0-0536-4055-a50c-11d2d1e4c6ef" ,THIS, "Geometrie");
- Abgedeckte Constraints:
- CheckAbklperimeterFlaechenGroesse
- Weitere Constraints:
- Keine
RingCount
- Beispiele:
- MANDATORY CONSTRAINT GeoW_FunctionsExt.GetInnerRingsCount(THIS, "Geometrie") == 0;
- Abgedeckte Constraints:
- CheckAbklperimeterKeineLoecher
- Weitere Constraints:
- CheckBefundKeineLoecher
Equal
- Beispiele:
- MANDATORY CONSTRAINT Prozessquelle_R->Teilauftrag_R->Hauptprozess == #Sturz;
- Abgedeckte Constraints:
- CheckBefundSteinBlockschlag
- Weitere Constraints:
- CheckBefundSpontaneRutschung
- CheckBefundHangmure
- CheckBefundBergFelssturz
- CheckFliessrichtungspfeilHauptprozess
- CheckBefundBergFelssturzHauptprozess
- CheckBefundHangmureHauptprozess
- CheckBefundUfererosionHauptprozess
- CheckBefundAbsenkungHauptprozess
- CheckBefundEinsturzHauptprozess
- CheckBefundPermanenteRutschungHauptprozess
- CheckBefundSpontaneRutschungHauptprozess
- CheckBefundUebermurungHauptprozess
- CheckBefundUeberschwemmungDynamischHauptprozess
- CheckBefundUeberschwemmungStatischHauptprozess
- CheckBefundBefundJaehrlichkeitHauptprozess
Defined
- Beispiele:
- MANDATORY CONSTRAINT Prozessquelle_R->Teilauftrag_R->Hauptprozess == #Wasser AND DEFINED(Fliessrichtungspfeil_R);
- Abgedeckte Constraints:
- CheckFliessrichtungspfeilZuHauptprozess
- Weitere Constraints:
- Keine
IsInsideAreaByCode (Überragung)
- Beispiele:
- SET CONSTRAINT GeoW_FunctionsExt.IsInsideAreaByCode(GeoW_FunctionsExt.GetInGroups(ALL, "PQ_Jaehrlichkeit_SteinBlockschlag_R->Prozessquelle_R"), "Geometrie" ,"IWCode");
- Abgedeckte Constraints:
- CheckBefundSteinBlockschlagKeineUeberragung
- CheckBefundSpontaneRutschungKeineUeberragung
- CheckBefundUeberschwemmungDynamischKeineUeberragung
- Weitere Constraints:
- CheckBefundBergFelssturzKeineUeberragung
- CheckBefundHangmureKeineUeberragung
- CheckBefundAbsenkungKeineUeberragung
- CheckBefundEinsturzKeineUeberragung
- CheckBefundUebermurungKeineUeberragung
- CheckBefundUeberschwemmungStatischKeineUeberragung
- CheckBefundJaehrlichkeitKeineUeberragung
- CheckKennwertUeberschwemmungFliesstiefeKeineUeberragungH
- CheckKennwertUeberschwemmungFliesstiefeKeineUeberragungJaehrlichkeit
- CheckKennwertUeberschwemmungFliessgeschwindigkeitKeineUeberragungH
- CheckKennwertUebermurungFliesstiefeKeineUeberragungH
- CheckKennwertUebermurungFliesstiefeKeineUeberragungJaehrlichkeit
- CheckKennwertUebermurungFliessgeschwindigkeitKeineUeberragungH
NOT-OR
- Beispiele:
- MANDATORY CONSTRAINT NOT((IWCode == #rot_stark_30) OR (IWCode == #rot_mittel_30) OR (IWCode == #blau_schwach_30)) OR (PQ_Jaehrlichkeit_SteinBlockschlag_R->Jaehrlichkeit == 30);
- Abgedeckte Constraints:
- CheckBefundSteinBlockschlagJaehrlichkeit-30
- Weitere Constraints:
- CheckBefundSteinBlockschlagJaehrlichkeit-100
- CheckBefundSteinBlockschlagJaehrlichkeit-300
- CheckBefundHangmureJaehrlichkeit-30
- CheckBefundHangmureJaehrlichkeit-100
- CheckBefundHangmureJaehrlichkeit-300
- CheckBefundSpontaneRutschungJaehrlichkeit-30
- CheckBefundSpontaneRutschungJaehrlichkeit-100
- CheckBefundSpontaneRutschungJaehrlichkeit-300
- CheckAbklperimeterBeurteilungUeberschwemmung_statisch
- CheckAbklperimeterBeurteilungUeberschwemmung_dynamisch
- CheckAbklperimeterBeurteilungUebermurung
- CheckAbklperimeterBeurteilungUfererosion
- CheckAbklperimeterBeurteilungEinsturz
- CheckAbklperimeterBeurteilungAbsenkung
- CheckAbklperimeterBeurteilungSteinBlockschlag
- CheckAbklperimeterBeurteilungBerg_Felssturz
- CheckAbklperimeterBeurteilungHangmure
- CheckAbklperimeterBeurteilungSpontaneRutschung
- CheckAbklperimeterBeurteilungPermanenteRutschung
IsInside
- Beispiele:
- MANDATORY CONSTRAINT (GeoW_FunctionsExt.IsInside(GeoW_FunctionsExt.Union(PQ_Jaehrlichkeit_SteinBlockschlag_R->Prozessquelle_R->Teilauftrag_R->Abklaerungsperimeter_R, "Geometrie"), UNDEFINED, THIS, "Geometrie"));
- Abgedeckte Constraints:
- CheckBefundSteinBlockschlagImAbklPerimeter
- Weitere Constraints:
- CheckBefundBergFelssturzImAbklPerimeter
- CheckBefundHangmureImAbklPerimeter
- CheckBefundUfererosionImAbklPerimeter
- CheckBefundAbsenkungImAbklPerimeter
- CheckBefundEinsturzImAbklPerimeter
- CheckBefundPermanenteRutschungImAbklPerimeter
- CheckBefundSpontaneRutschungImAbklPerimeter
- CheckBefundUebermurungImAbklPerimeter
- CheckBefundUeberschwemmungDynamischImAbklPerimeter
- CheckBefundUeberschwemmungStatischImAbklPerimeter
- CheckBefundJaehrlichkeitImAbklPerimeter
AreAreas mit Filter !!Deaktiviert, bis Area-Verbesserungen vorliegen!!
- Beispiele:
- SET CONSTRAINT WHERE IWCode == #rot_stark_30 OR IWCode == #rot_mittel_30 OR IWCode == #blau_schwach_30: INTERLIS.areAreas(GeoW_FunctionsExt.GetInGroups(ALL, "Prozessquelle_R"),UNDEFINED, >> Geometrie);
- Abgedeckte Constraints:
- CheckBefundUeberschwemmungStatischKeineUeberlappung-300
- Weitere Constraints:
- CheckBefundSteinBlockschlagKeineUeberlappung-30
- CheckBefundSteinBlockschlagKeineUeberlappung-100
- CheckBefundSteinBlockschlagKeineUeberlappung-300
- CheckBefundSteinBlockschlagKeineUeberlappung-Restgef
- CheckBefundBergFelssturzKeineUeberlappung-30
- CheckBefundBergFelssturzKeineUeberlappung-100
- CheckBefundBergFelssturzKeineUeberlappung-300
- CheckBefundBergFelssturzKeineUeberlappung-Restgef
- CheckBefundHangmureKeineUeberlappung-30
- CheckBefundHangmureKeineUeberlappung-100
- CheckBefundHangmureKeineUeberlappung-300
- CheckBefundHangmureKeineUeberlappung-Restgef
- CheckBefundAbsenkungKeineUeberlappung-permanent
- CheckBefundeEinsturzKeineUeberlappung-permanent
- CheckBefundePermanenteRutschungKeineUeberlappung-permanent
- CheckBefundePermanenteRutschungKeineUeberlappung-Restgef
- CheckBefundSpontaneRutschungKeineUeberlappung-30
- CheckBefundSpontaneRutschungKeineUeberlappung-100
- CheckBefundSpontaneRutschungKeineUeberlappung-300
- CheckBefundSpontaneRutschungKeineUeberlappung-Restgef
- CheckBefundUebermurungKeineUeberlappung-30
- CheckBefundUebermurungKeineUeberlappung-100
- CheckBefundUebermurungKeineUeberlappung-300
- CheckBefundUeberschwemmungDynamischKeineUeberlappung-30
- CheckBefundUeberschwemmungDynamischKeineUeberlappung-100
- CheckBefundUeberschwemmungDynamischKeineUeberlappung-300
- CheckBefundUeberschwemmungDynamischKeineUeberlappung-Restgef
- CheckBefundUeberschwemmungStatischKeineUeberlappung-30
- CheckBefundUeberschwemmungStatischKeineUeberlappung-100
- CheckBefundUeberschwemmungStatischKeineUeberlappung-300
- CheckBefundUeberschwemmungStatischKeineUeberlappung-Restgef