Skip to content

Commit bcac2e3

Browse files
committed
ToSquash: Add tests for error modes
1 parent ea28806 commit bcac2e3

1 file changed

Lines changed: 68 additions & 1 deletion

File tree

tests/ert/unit_tests/cli/test_summary_to_yaml.py

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
from textwrap import dedent
55
from unittest.mock import MagicMock
66

7+
import numpy as np
78
import pytest
9+
from ruamel.yaml import YAML
810

911
from ert.cli.main import ErtCliError
10-
from ert.config._observations import SummaryObservation
12+
from ert.config._observations import ErrorModes, SummaryObservation
1113
from ert.observation_converters import convert_observations
1214
from ert.observation_converters.summary_to_yaml import YamlConverter
1315
from ert.plugins import ErtRuntimePlugins
@@ -209,3 +211,68 @@ def test_that_yaml_converter_retains_time_precision_when_present():
209211
minute_precision,
210212
hour_precision,
211213
]
214+
215+
216+
_VALUE = 10
217+
_ERROR = 5
218+
219+
220+
def _setup_and_convert_with_error_mode_config(
221+
error_mode: ErrorModes, error_min=None
222+
) -> int | float:
223+
config = "config.ert"
224+
obs_config = "obs.txt"
225+
226+
config_content = f"""\
227+
NUM_REALIZATIONS 5
228+
ECLBASE FOO
229+
OBS_CONFIG {obs_config}
230+
"""
231+
error_min_line = f"ERROR_MIN={error_min};" if error_min is not None else ""
232+
obs_config_content = f"""\
233+
SUMMARY_OBSERVATION {{
234+
KEY=FOPR;
235+
VALUE={_VALUE};
236+
ERROR={_ERROR};
237+
ERROR_MODE={error_mode};
238+
DATE=2010-10-10;
239+
{error_min_line}
240+
}};"""
241+
Path(config).write_text(config_content, encoding="utf-8")
242+
Path(obs_config).write_text(obs_config_content, encoding="utf-8")
243+
244+
args = MagicMock(format="yaml", config=config)
245+
convert_observations(args, ErtRuntimePlugins())
246+
247+
yaml = YAML()
248+
with Path.open(YamlConverter.TARGET_FILE) as f:
249+
yaml_output = yaml.load(f)
250+
251+
return yaml_output["smry"][0]["observations"][0]["error"]
252+
253+
254+
def test_that_absolute_error_is_unchanged_after_conversion(use_tmpdir):
255+
error = _setup_and_convert_with_error_mode_config(error_mode=ErrorModes.ABS)
256+
assert error == _ERROR
257+
258+
259+
def test_that_relative_error_is_product_of_val_and_error_after_conversion(use_tmpdir):
260+
error = _setup_and_convert_with_error_mode_config(error_mode=ErrorModes.REL)
261+
assert error == _ERROR * _VALUE
262+
263+
264+
def test_that_rel_min_error_is_product_of_val_and_err_after_conversion_given_no_err_min(
265+
use_tmpdir,
266+
):
267+
error = _setup_and_convert_with_error_mode_config(error_mode=ErrorModes.RELMIN)
268+
assert error == _ERROR * _VALUE
269+
270+
271+
def test_that_relative_min_error_is_unchanged_after_conversion_given_error_min_key(
272+
use_tmpdir,
273+
):
274+
error_min = np.inf
275+
error = _setup_and_convert_with_error_mode_config(
276+
error_mode=ErrorModes.RELMIN, error_min=error_min
277+
)
278+
assert error == error_min

0 commit comments

Comments
 (0)