From f8061182cdccb27ecd3974cfd3abc4bef7aebdce Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Wed, 24 Jul 2024 15:36:03 +0200
Subject: [PATCH] [T] Rewritten VoxelGridFromLayers snakemake test to pytest.

---
 Applications/Utils/Tests.cmake                | 28 ++++----
 Applications/Utils/VoxelGridFromLayers.smk    | 70 -------------------
 .../AREHS_2D_AABB_inverted.vtu                |  0
 .../AREHS_2D_AABB_regular.vtu                 |  0
 .../AREHS_3D_AABB_inverted.vtu                |  0
 .../AREHS_3D_AABB_regular.vtu                 |  0
 .../VoxelGridFromLayers}/AREHS_Layer0.vtu     |  0
 .../VoxelGridFromLayers}/AREHS_Layer15.vtu    |  0
 .../VoxelGridFromLayers}/AREHS_Layer17.vtu    |  0
 .../VoxelGridFromLayers}/AREHS_Layer9.vtu     |  0
 .../VoxelGridFromLayers}/AREHS_fault.vtu      |  0
 .../VoxelGridFromLayers}/AREHS_test.vtu       |  0
 .../VoxelGridFromLayers}/AREHS_test_fault.vtu |  0
 .../VoxelGridFromLayers}/AREHS_test_iso.vtu   |  0
 .../AREHS_test_layers.txt                     |  0
 .../test_voxelgrid_from_layers.py             | 40 +++++++++++
 16 files changed, 52 insertions(+), 86 deletions(-)
 delete mode 100644 Applications/Utils/VoxelGridFromLayers.smk
 rename Tests/Data/{MeshLib => Utils/VoxelGridFromLayers}/AREHS_2D_AABB_inverted.vtu (100%)
 rename Tests/Data/{MeshLib => Utils/VoxelGridFromLayers}/AREHS_2D_AABB_regular.vtu (100%)
 rename Tests/Data/{MeshLib => Utils/VoxelGridFromLayers}/AREHS_3D_AABB_inverted.vtu (100%)
 rename Tests/Data/{MeshLib => Utils/VoxelGridFromLayers}/AREHS_3D_AABB_regular.vtu (100%)
 rename Tests/Data/{MeshLib => Utils/VoxelGridFromLayers}/AREHS_Layer0.vtu (100%)
 rename Tests/Data/{MeshLib => Utils/VoxelGridFromLayers}/AREHS_Layer15.vtu (100%)
 rename Tests/Data/{MeshLib => Utils/VoxelGridFromLayers}/AREHS_Layer17.vtu (100%)
 rename Tests/Data/{MeshLib => Utils/VoxelGridFromLayers}/AREHS_Layer9.vtu (100%)
 rename Tests/Data/{MeshLib => Utils/VoxelGridFromLayers}/AREHS_fault.vtu (100%)
 rename Tests/Data/{MeshLib => Utils/VoxelGridFromLayers}/AREHS_test.vtu (100%)
 rename Tests/Data/{MeshLib => Utils/VoxelGridFromLayers}/AREHS_test_fault.vtu (100%)
 rename Tests/Data/{MeshLib => Utils/VoxelGridFromLayers}/AREHS_test_iso.vtu (100%)
 rename Tests/Data/{MeshLib => Utils/VoxelGridFromLayers}/AREHS_test_layers.txt (100%)
 create mode 100644 Tests/Data/Utils/VoxelGridFromLayers/test_voxelgrid_from_layers.py

diff --git a/Applications/Utils/Tests.cmake b/Applications/Utils/Tests.cmake
index 41281936309..5a109f848d6 100644
--- a/Applications/Utils/Tests.cmake
+++ b/Applications/Utils/Tests.cmake
@@ -1411,11 +1411,10 @@ endif()
 
 AddTest(
     NAME RemoveMeshElements_AABB_2D_regular
-    PATH MeshLib
-    WORKING_DIRECTORY ${Data_SOURCE_DIR}/MeshLib
+    PATH Utils/VoxelGridFromLayers
     EXECUTABLE removeMeshElements
-    EXECUTABLE_ARGS -i AREHS_Layer17.vtu
-                    -o ${Data_BINARY_DIR}/MeshLib/AREHS_2D_AABB_regular.vtu
+    EXECUTABLE_ARGS -i <SOURCE_PATH>/AREHS_Layer17.vtu
+                    -o AREHS_2D_AABB_regular.vtu
                     --x-min 12000 --x-max 15000 --y-min 12000
     REQUIREMENTS NOT (OGS_USE_MPI)
     TESTER vtkdiff-mesh
@@ -1424,11 +1423,10 @@ AddTest(
 
 AddTest(
     NAME RemoveMeshElements_AABB_2D_inverted
-    PATH MeshLib
-    WORKING_DIRECTORY ${Data_SOURCE_DIR}/MeshLib
+    PATH Utils/VoxelGridFromLayers
     EXECUTABLE removeMeshElements
-    EXECUTABLE_ARGS -i AREHS_Layer17.vtu
-                    -o ${Data_BINARY_DIR}/MeshLib/AREHS_2D_AABB_inverted.vtu
+    EXECUTABLE_ARGS -i <SOURCE_PATH>/AREHS_Layer17.vtu
+                    -o AREHS_2D_AABB_inverted.vtu
                     --x-min 12000 --x-max 15000 --y-min 12000 --invert
     REQUIREMENTS NOT (OGS_USE_MPI)
     TESTER vtkdiff-mesh
@@ -1437,11 +1435,10 @@ AddTest(
 
 AddTest(
     NAME RemoveMeshElements_AABB_3D_regular
-    PATH MeshLib
-    WORKING_DIRECTORY ${Data_SOURCE_DIR}/MeshLib
+    PATH Utils/VoxelGridFromLayers
     EXECUTABLE removeMeshElements
-    EXECUTABLE_ARGS -i AREHS_test.vtu
-                    -o ${Data_BINARY_DIR}/MeshLib/AREHS_3D_AABB_regular.vtu
+    EXECUTABLE_ARGS -i <SOURCE_PATH>/AREHS_test.vtu
+                    -o AREHS_3D_AABB_regular.vtu
                     --x-min 12000 --x-max 15000 --y-min 12000 --z-min -3000 --z-max -2000
     REQUIREMENTS NOT (OGS_USE_MPI)
     TESTER vtkdiff-mesh
@@ -1450,11 +1447,10 @@ AddTest(
 
 AddTest(
     NAME RemoveMeshElements_AABB_3D_inverted
-    PATH MeshLib
-    WORKING_DIRECTORY ${Data_SOURCE_DIR}/MeshLib
+    PATH Utils/VoxelGridFromLayers
     EXECUTABLE removeMeshElements
-    EXECUTABLE_ARGS -i AREHS_test.vtu
-                    -o ${Data_BINARY_DIR}/MeshLib/AREHS_3D_AABB_inverted.vtu
+    EXECUTABLE_ARGS -i <SOURCE_PATH>/AREHS_test.vtu
+                    -o AREHS_3D_AABB_inverted.vtu
                     --x-min 12000 --x-max 15000 --y-min 12000 --z-min -3000 --z-max -2000 --invert
     REQUIREMENTS NOT (OGS_USE_MPI)
     TESTER vtkdiff-mesh
diff --git a/Applications/Utils/VoxelGridFromLayers.smk b/Applications/Utils/VoxelGridFromLayers.smk
deleted file mode 100644
index c67ef318e9d..00000000000
--- a/Applications/Utils/VoxelGridFromLayers.smk
+++ /dev/null
@@ -1,70 +0,0 @@
-# Usage, e.g.:
-#   snakemake -s VoxelGridFromLayers.smk -j 1 --configfile $HOME/code/ogs6/build/buildinfo.yaml
-#
-# buildinfo.yaml contains variables such as Data_BINARY_DIR
-
-import os
-os.environ["PATH"] += os.pathsep + os.pathsep.join([config['BIN_DIR']])
-workdir: f"{config['Data_SOURCE_DIR']}/MeshLib"
-out_dir = f"{config['Data_BINARY_DIR']}/MeshLib"
-
-rule all:
-    input:
-        f"{out_dir}/AREHS_test_diff_geometry.out",
-        f"{out_dir}/AREHS_test_fault_diff.out",
-        f"{out_dir}/AREHS_test_iso_diff_geometry.out"
-
-rule layers_to_grid:
-    input:
-        "AREHS_test_layers.txt"
-    output:
-        f"{out_dir}/AREHS_test.vtu"
-    shell:
-        "Layers2Grid -i {input} -o {output} -x 500 -y 300 -z 100"
-
-rule vtkdiff_grid_geometry:
-    input:
-        out = rules.layers_to_grid.output,
-        ref = "AREHS_test.vtu"
-    output:
-        f"{out_dir}/AREHS_test_diff_geometry.out"
-    shell:
-        "vtkdiff -m {input.out} {input.ref} 2>&1 | tee {output}"
-
-rule add_fault_to_grid:
-    input:
-        grid = rules.layers_to_grid.output,
-        fault = "AREHS_fault.vtu"
-    output:
-        f"{out_dir}/AREHS_test_fault.vtu"
-    shell:
-        "AddFaultToVoxelGrid -i {input.grid} -f {input.fault} -o {output}"
-
-rule vtkdiff_fault:
-    input:
-        a = rules.add_fault_to_grid.output,
-        b = "AREHS_test_fault.vtu"
-    output:
-        f"{out_dir}/AREHS_test_fault_diff.out"
-    params:
-        check_mesh = True,
-        fields = [["MaterialIDs", 0, 0]]
-    wrapper:
-        f"file://{config['SOURCE_DIR']}/scripts/snakemake/vtkdiff"
-
-rule layers_to_grid_iso:
-    input:
-        "AREHS_test_layers.txt"
-    output:
-        f"{out_dir}/AREHS_test_iso.vtu"
-    shell:
-        "Layers2Grid -i {input} -o {output} -x 500"
-
-rule vtkdiff_grid_iso_geometry:
-    input:
-        out = rules.layers_to_grid_iso.output,
-        ref = "AREHS_test_iso.vtu"
-    output:
-        f"{out_dir}/AREHS_test_iso_diff_geometry.out"
-    shell:
-        "vtkdiff -m {input.out} {input.ref} 2>&1 | tee {output}"
diff --git a/Tests/Data/MeshLib/AREHS_2D_AABB_inverted.vtu b/Tests/Data/Utils/VoxelGridFromLayers/AREHS_2D_AABB_inverted.vtu
similarity index 100%
rename from Tests/Data/MeshLib/AREHS_2D_AABB_inverted.vtu
rename to Tests/Data/Utils/VoxelGridFromLayers/AREHS_2D_AABB_inverted.vtu
diff --git a/Tests/Data/MeshLib/AREHS_2D_AABB_regular.vtu b/Tests/Data/Utils/VoxelGridFromLayers/AREHS_2D_AABB_regular.vtu
similarity index 100%
rename from Tests/Data/MeshLib/AREHS_2D_AABB_regular.vtu
rename to Tests/Data/Utils/VoxelGridFromLayers/AREHS_2D_AABB_regular.vtu
diff --git a/Tests/Data/MeshLib/AREHS_3D_AABB_inverted.vtu b/Tests/Data/Utils/VoxelGridFromLayers/AREHS_3D_AABB_inverted.vtu
similarity index 100%
rename from Tests/Data/MeshLib/AREHS_3D_AABB_inverted.vtu
rename to Tests/Data/Utils/VoxelGridFromLayers/AREHS_3D_AABB_inverted.vtu
diff --git a/Tests/Data/MeshLib/AREHS_3D_AABB_regular.vtu b/Tests/Data/Utils/VoxelGridFromLayers/AREHS_3D_AABB_regular.vtu
similarity index 100%
rename from Tests/Data/MeshLib/AREHS_3D_AABB_regular.vtu
rename to Tests/Data/Utils/VoxelGridFromLayers/AREHS_3D_AABB_regular.vtu
diff --git a/Tests/Data/MeshLib/AREHS_Layer0.vtu b/Tests/Data/Utils/VoxelGridFromLayers/AREHS_Layer0.vtu
similarity index 100%
rename from Tests/Data/MeshLib/AREHS_Layer0.vtu
rename to Tests/Data/Utils/VoxelGridFromLayers/AREHS_Layer0.vtu
diff --git a/Tests/Data/MeshLib/AREHS_Layer15.vtu b/Tests/Data/Utils/VoxelGridFromLayers/AREHS_Layer15.vtu
similarity index 100%
rename from Tests/Data/MeshLib/AREHS_Layer15.vtu
rename to Tests/Data/Utils/VoxelGridFromLayers/AREHS_Layer15.vtu
diff --git a/Tests/Data/MeshLib/AREHS_Layer17.vtu b/Tests/Data/Utils/VoxelGridFromLayers/AREHS_Layer17.vtu
similarity index 100%
rename from Tests/Data/MeshLib/AREHS_Layer17.vtu
rename to Tests/Data/Utils/VoxelGridFromLayers/AREHS_Layer17.vtu
diff --git a/Tests/Data/MeshLib/AREHS_Layer9.vtu b/Tests/Data/Utils/VoxelGridFromLayers/AREHS_Layer9.vtu
similarity index 100%
rename from Tests/Data/MeshLib/AREHS_Layer9.vtu
rename to Tests/Data/Utils/VoxelGridFromLayers/AREHS_Layer9.vtu
diff --git a/Tests/Data/MeshLib/AREHS_fault.vtu b/Tests/Data/Utils/VoxelGridFromLayers/AREHS_fault.vtu
similarity index 100%
rename from Tests/Data/MeshLib/AREHS_fault.vtu
rename to Tests/Data/Utils/VoxelGridFromLayers/AREHS_fault.vtu
diff --git a/Tests/Data/MeshLib/AREHS_test.vtu b/Tests/Data/Utils/VoxelGridFromLayers/AREHS_test.vtu
similarity index 100%
rename from Tests/Data/MeshLib/AREHS_test.vtu
rename to Tests/Data/Utils/VoxelGridFromLayers/AREHS_test.vtu
diff --git a/Tests/Data/MeshLib/AREHS_test_fault.vtu b/Tests/Data/Utils/VoxelGridFromLayers/AREHS_test_fault.vtu
similarity index 100%
rename from Tests/Data/MeshLib/AREHS_test_fault.vtu
rename to Tests/Data/Utils/VoxelGridFromLayers/AREHS_test_fault.vtu
diff --git a/Tests/Data/MeshLib/AREHS_test_iso.vtu b/Tests/Data/Utils/VoxelGridFromLayers/AREHS_test_iso.vtu
similarity index 100%
rename from Tests/Data/MeshLib/AREHS_test_iso.vtu
rename to Tests/Data/Utils/VoxelGridFromLayers/AREHS_test_iso.vtu
diff --git a/Tests/Data/MeshLib/AREHS_test_layers.txt b/Tests/Data/Utils/VoxelGridFromLayers/AREHS_test_layers.txt
similarity index 100%
rename from Tests/Data/MeshLib/AREHS_test_layers.txt
rename to Tests/Data/Utils/VoxelGridFromLayers/AREHS_test_layers.txt
diff --git a/Tests/Data/Utils/VoxelGridFromLayers/test_voxelgrid_from_layers.py b/Tests/Data/Utils/VoxelGridFromLayers/test_voxelgrid_from_layers.py
new file mode 100644
index 00000000000..fb1e52650c1
--- /dev/null
+++ b/Tests/Data/Utils/VoxelGridFromLayers/test_voxelgrid_from_layers.py
@@ -0,0 +1,40 @@
+import os
+from pathlib import Path
+
+from ogs import cli
+
+
+def test_voxelgrid_from_layers(tmp_path):
+    os.chdir(Path(__file__).resolve().parent)
+
+    mesh_file = Path(f"{tmp_path}/AREHS_test.vtu")
+
+    cli.Layers2Grid(i="AREHS_test_layers.txt", o=mesh_file, x=500, y=300, z=100)
+    assert mesh_file.exists()
+
+    assert cli.vtkdiff(mesh_file, "AREHS_test.vtu", mesh_check=None) == 0
+
+    fault_mesh_file = Path(f"{tmp_path}/AREHS_test_fault.vtu")
+    cli.AddFaultToVoxelGrid(i=mesh_file, f="AREHS_fault.vtu", o=fault_mesh_file)
+    assert fault_mesh_file.exists()
+
+    assert cli.vtkdiff(fault_mesh_file, "AREHS_test_fault.vtu", mesh_check=None) == 0
+    assert (
+        cli.vtkdiff(
+            fault_mesh_file,
+            "AREHS_test_fault.vtu",
+            a="MaterialIDs",
+            b="MaterialIDs",
+            abs=0,
+            rel=0,
+        )
+        == 0
+    )
+
+    # iso
+    mesh_file = Path(f"{tmp_path}/AREHS_test_iso.vtu")
+
+    cli.Layers2Grid(i="AREHS_test_layers.txt", o=mesh_file, x=500)
+    assert mesh_file.exists()
+
+    assert cli.vtkdiff(mesh_file, "AREHS_test_iso.vtu", mesh_check=None) == 0
-- 
GitLab