Coverage for test_layer.py: 100%
78 statements
« prev ^ index » next coverage.py v7.5.1, created at 2024-05-08 14:15 +0200
« prev ^ index » next coverage.py v7.5.1, created at 2024-05-08 14:15 +0200
1import numpy as np
2import pytest
3from pytest_cases import parametrize_with_cases
5from imod.prepare import (
6 get_lower_active_grid_cells,
7 get_lower_active_layer_number,
8 get_upper_active_grid_cells,
9 get_upper_active_layer_number,
10)
11from imod.typing.grid import ones_like
14@pytest.fixture(scope="function")
15def active_structured(basic_dis):
16 idomain, _, _ = basic_dis
17 return idomain == 1
20@pytest.fixture(scope="function")
21def active_unstructured(basic_unstructured_dis):
22 idomain, _, _ = basic_unstructured_dis
23 return idomain == 1
26@pytest.fixture(scope="function")
27def layer(basic_dis):
28 idomain, _, _ = basic_dis
29 return idomain.coords["layer"]
32class ActiveLayerCases:
33 def case_all_active_structured(self, active_structured):
34 upper_layer_number = ones_like(active_structured.sel(layer=1)).astype(int)
35 lower_layer_number = upper_layer_number + 2
36 return active_structured, upper_layer_number, lower_layer_number
38 def case_all_active_unstructured(self, active_unstructured):
39 upper_layer_number = ones_like(active_unstructured.sel(layer=1)).astype(int)
40 lower_layer_number = upper_layer_number + 2
41 return active_unstructured, upper_layer_number, lower_layer_number
43 def case_structured(self, active_structured):
44 active_structured[0, :, 1] = False
45 active_structured[1, :, 2] = False
46 active_structured[0, :, 3] = False
47 active_structured[1, :, 3] = False
48 active_structured[1, :, 4] = False
49 active_structured[2, :, 4] = False
50 active_structured[2, :, 5] = False
51 upper_layer_number = ones_like(active_structured.sel(layer=1)).astype(int)
52 lower_layer_number = upper_layer_number + 2
53 upper_layer_number[:, 1] = 2
54 upper_layer_number[:, 3] = 3
55 lower_layer_number[:, 4] = 1
56 lower_layer_number[:, 5] = 2
57 return active_structured, upper_layer_number, lower_layer_number
59 def case_unstructured(self, active_unstructured):
60 active_unstructured[0, 1] = False
61 active_unstructured[1, 2] = False
62 active_unstructured[0, 3] = False
63 active_unstructured[1, 3] = False
64 active_unstructured[1, 4] = False
65 active_unstructured[2, 4] = False
66 active_unstructured[2, 5] = False
67 upper_layer_number = ones_like(active_unstructured.sel(layer=1)).astype(int)
68 lower_layer_number = upper_layer_number + 2
69 upper_layer_number[1] = 2
70 upper_layer_number[3] = 3
71 lower_layer_number[4] = 1
72 lower_layer_number[5] = 2
73 return active_unstructured, upper_layer_number, lower_layer_number
76@parametrize_with_cases("active_case", cases=ActiveLayerCases)
77def test_get_lower_active_grid(active_case, layer):
78 active, _, expected_lower_layer_nr = active_case
79 is_lower_active = get_lower_active_grid_cells(active)
81 expected_lower_active = layer == expected_lower_layer_nr
83 np.testing.assert_array_equal(is_lower_active.values, expected_lower_active.values)
86@parametrize_with_cases("active_case", cases=ActiveLayerCases)
87def test_get_upper_active_grid(active_case, layer):
88 active, expected_upper_layer_nr, _ = active_case
89 is_upper_active = get_upper_active_grid_cells(active)
91 expected_upper_active = layer == expected_upper_layer_nr
93 np.testing.assert_array_equal(is_upper_active.values, expected_upper_active.values)
96@parametrize_with_cases("active_case", cases=ActiveLayerCases)
97def test_get_lower_layer_number(active_case):
98 active, _, expected_lower_layer_nr = active_case
99 is_lower_active = get_lower_active_layer_number(active)
101 np.testing.assert_array_equal(
102 is_lower_active.values, expected_lower_layer_nr.values
103 )
106@parametrize_with_cases("active_case", cases=ActiveLayerCases)
107def test_get_upper_layer_number(active_case):
108 active, expected_upper_layer_nr, _ = active_case
109 is_upper_active = get_upper_active_layer_number(active)
111 np.testing.assert_array_equal(
112 is_upper_active.values, expected_upper_layer_nr.values
113 )