Skip to content

Commit ea672b0

Browse files
authored
Increase code cov for summary key data (#13909)
1 parent f494353 commit ea672b0

1 file changed

Lines changed: 129 additions & 0 deletions

File tree

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
import pytest
2+
from hypothesis import given
3+
from hypothesis import strategies as st
4+
5+
from ert.config.summary_key_data import (
6+
InvalidSummaryKeyError,
7+
SummaryKeyData,
8+
make_summary_key_data,
9+
)
10+
11+
INTER_REGION_PATTERNS = [r"R.FT.*", r"R..FT.*", r"R.FR.*", r"R..FR.*", r"R.F"]
12+
13+
14+
_name = st.text(min_size=1, max_size=10).filter(lambda s: ":" not in s and "-" not in s)
15+
16+
_other_name = _name.map(lambda s: "X" + s)
17+
18+
_positive_int = st.integers(min_value=0, max_value=10000)
19+
20+
21+
@st.composite
22+
def _internal_region_name(draw):
23+
return [
24+
draw(
25+
st.from_regex(p, fullmatch=True).map(
26+
lambda s: s.replace("-", "A").replace(":", "B")
27+
)
28+
)
29+
for p in INTER_REGION_PATTERNS
30+
]
31+
32+
33+
def test_that_make_summary_key_data_parses_field_keys():
34+
assert make_summary_key_data("FIELD") == SummaryKeyData(keyword="FIELD")
35+
36+
37+
@given(_positive_int)
38+
def test_that_make_summary_key_data_parses_region_aquifer_network_keys(number: int):
39+
assert make_summary_key_data(f"REGION:{number}") == SummaryKeyData(
40+
keyword="REGION", number=number
41+
)
42+
assert make_summary_key_data(f"AQUIFER:{number}") == SummaryKeyData(
43+
keyword="AQUIFER", number=number
44+
)
45+
assert make_summary_key_data(f"NETWORK:{number}") == SummaryKeyData(
46+
keyword="NETWORK", number=number
47+
)
48+
49+
50+
@given(_positive_int, _positive_int, _positive_int)
51+
def test_that_make_summary_key_data_parses_block_keys(i: int, j: int, k: int):
52+
assert make_summary_key_data(f"BLOCK:{i},{j},{k}") == SummaryKeyData(
53+
keyword="BLOCK", i=i, j=j, k=k
54+
)
55+
56+
57+
@given(_name)
58+
def test_that_make_summary_key_data_parses_well_keys(well: str):
59+
assert make_summary_key_data(f"WELL:{well}") == SummaryKeyData(
60+
keyword="WELL", well=well
61+
)
62+
63+
64+
@given(_name)
65+
def test_that_make_summary_key_data_parses_group_keys(name: str):
66+
assert make_summary_key_data(f"GROUP:{name}") == SummaryKeyData(
67+
keyword="GROUP", name=name
68+
)
69+
70+
71+
@given(_name, _positive_int)
72+
def test_that_make_summary_key_data_parses_segment_keys(name: str, number: int):
73+
assert make_summary_key_data(f"SEGMENT:{name}:{number}") == SummaryKeyData(
74+
keyword="SEGMENT", name=name, number=number
75+
)
76+
77+
78+
@given(_name, _positive_int, _positive_int, _positive_int)
79+
def test_that_make_summary_key_data_parses_completion_keys(
80+
name: str, i: int, j: int, k: int
81+
):
82+
assert make_summary_key_data(f"COMPLETION:{name}:{i},{j},{k}") == SummaryKeyData(
83+
keyword="COMPLETION", name=name, i=i, j=j, k=k
84+
)
85+
86+
87+
@given(_internal_region_name(), _positive_int, _positive_int)
88+
def test_that_make_summary_key_data_parses_inter_region_keys(
89+
keywords: list[str], region1: int, region2: int
90+
):
91+
for keyword in keywords:
92+
assert make_summary_key_data(
93+
f"{keyword}:{region1}-{region2}"
94+
) == SummaryKeyData(keyword=keyword, region1=region1, region2=region2)
95+
96+
97+
@given(_name, _name)
98+
def test_that_make_summary_key_data_parses_local_well_keys(lgr_name: str, name: str):
99+
assert make_summary_key_data(f"LW:{lgr_name}:{name}") == SummaryKeyData(
100+
keyword="LW", lgr_name=lgr_name, name=name
101+
)
102+
103+
104+
@given(_name, _positive_int, _positive_int, _positive_int)
105+
def test_that_make_summary_key_data_parses_local_block_keys(
106+
lgr_name: str, i: int, j: int, k: int
107+
):
108+
assert make_summary_key_data(f"LB:{lgr_name}:{i},{j},{k}") == SummaryKeyData(
109+
keyword="LB", lgr_name=lgr_name, i=i, j=j, k=k
110+
)
111+
112+
113+
@given(_name, _name, _positive_int, _positive_int, _positive_int)
114+
def test_that_make_summary_key_data_parses_local_completion_keys(
115+
lgr_name: str, name: str, i: int, j: int, k: int
116+
):
117+
assert make_summary_key_data(f"LC:{lgr_name}:{name}:{i},{j},{k}") == SummaryKeyData(
118+
keyword="LC", lgr_name=lgr_name, name=name, i=i, j=j, k=k
119+
)
120+
121+
122+
@given(_other_name, _name)
123+
def test_that_make_summary_key_data_parses_other_keys(other: str, name: str):
124+
assert make_summary_key_data(f"{other}:{name}") == SummaryKeyData(keyword=other)
125+
126+
127+
def test_that_make_summary_key_data_raises_for_empty_keys():
128+
with pytest.raises(InvalidSummaryKeyError, match="Invalid summary key "):
129+
make_summary_key_data("")

0 commit comments

Comments
 (0)