示例#1
0
def test_extract_too_many_values():
    """Test that user friendly error message is displayed
    when an error occurs"""

    data = ["SENTENCE this is a string"]
    with pytest.raises(ValueError, match="SENTENCE"):
        design_kw.extract_key_value(data)
    with pytest.raises(ValueError, match="Too many values found"):
        design_kw.extract_key_value(data)
示例#2
0
def test_single_cell_values(cellvalue, expected_parameters_str, tmpdir):
    """Test how certain single values go through the Excel input sheets
    and all the way to parameters.txt"""
    # pylint: disable=abstract-class-instantiated
    tmpdir.chdir()

    designsheet_df = pd.DataFrame(columns=["REAL", "SOMEKEY"],
                                  data=[[0, cellvalue]])

    defaultssheet_df = pd.DataFrame()
    writer = pd.ExcelWriter("design_matrix.xlsx")
    designsheet_df.to_excel(writer, sheet_name="DesignSheet01", index=False)
    defaultssheet_df.to_excel(writer,
                              sheet_name="DefaultValues",
                              index=False,
                              header=None)
    writer.save()
    params_file = "parameters.txt"
    design2params.run(
        0,
        "design_matrix.xlsx",
        "DesignSheet01",
        "DefaultValues",
        params_file,
        log_level=logging.DEBUG,
    )
    with open(params_file) as p_file:
        params_lines = p_file.readlines()
    key_vals = extract_key_value(params_lines)
    assert key_vals["SOMEKEY"] == expected_parameters_str
示例#3
0
def test_extract_key_value_ok():
    data = ["key1 14", "key2 24", "key3 34"]
    assert design_kw.extract_key_value(data) == {
        "key1": "14",
        "key2": "24",
        "key3": "34",
    }
示例#4
0
def test_pair_cell_values(cellvalues, expected_parameters_strs, tmpdir):
    """Test how a pair of values, one for each realization, go through
    the Excel input sheets and all the way to parameters.txt.

    This is to ensure that differing datatypes in a single Excel columns does
    not affect individual values."""
    # pylint: disable=abstract-class-instantiated
    tmpdir.chdir()

    designsheet_df = pd.DataFrame(columns=["REAL", "SOMEKEY"],
                                  data=[[0, cellvalues[0]], [1,
                                                             cellvalues[1]]])

    defaultssheet_df = pd.DataFrame()
    writer = pd.ExcelWriter("design_matrix.xlsx")
    designsheet_df.to_excel(writer, sheet_name="DesignSheet01", index=False)
    defaultssheet_df.to_excel(writer,
                              sheet_name="DefaultValues",
                              index=False,
                              header=None)
    writer.save()
    params_0 = "parameters0.txt"
    design2params.run(
        0,
        "design_matrix.xlsx",
        "DesignSheet01",
        "DefaultValues",
        params_0,
        log_level=logging.DEBUG,
    )
    params_1 = "parameters1.txt"
    design2params.run(
        1,
        "design_matrix.xlsx",
        "DesignSheet01",
        "DefaultValues",
        params_1,
        log_level=logging.DEBUG,
    )
    with open(params_0) as p_file:
        params_lines_0 = p_file.readlines()
    with open(params_1) as p_file:
        params_lines_1 = p_file.readlines()
    key_vals_real0 = extract_key_value(params_lines_0)
    key_vals_real1 = extract_key_value(params_lines_1)
    assert key_vals_real0["SOMEKEY"] == expected_parameters_strs[0]
    assert key_vals_real1["SOMEKEY"] == expected_parameters_strs[1]
示例#5
0
def _get_interpolation_values(int_param_wo_name,
                              int_param_go_name,
                              parameters_file_name="parameters.txt"):
    """
    Given parameter names, obtain values to interpolate through from parameters.txt

    If only WaterOil is supplied, the GasOil interpolation value will
    be copied from the WaterOil value.

    Args:
        int_param_wo_name (string): parameter name (no genkw_prefix) for WaterOil
        int_param_go_name (string): parameter name (no genkw_prefix) for GasOil
        parameters_file_name (string): Text file to look for parameters in.

    Returns:
        tuple with two values, one for WaterOil and one for GasOil
    """
    # Read all key-value pairs from parameters.txt
    if not os.path.exists(parameters_file_name):
        _logger.error("%s does not exists", parameters_file_name)
        raise IOError
    with open(parameters_file_name) as parameters_file:
        parameters = parameters_file.readlines()
    parameter_dict = extract_key_value(parameters)
    parameter_dict.update(rm_genkw_prefix(parameter_dict))

    # Add some magic parameters:
    parameter_dict.update(MAGIC_CASES)
    if int_param_wo_name not in parameter_dict:
        _logger.error(
            "Requested parameter name %s not found in %s",
            int_param_wo_name,
            parameters_file_name,
        )
        raise ValueError("Parameter name not found")
    int_param_wo = float(parameter_dict[int_param_wo_name])
    _logger.info(
        "Collected %s from parameter.txt with value %f",
        int_param_wo_name,
        int_param_wo,
    )
    int_param_go = int_param_wo

    if int_param_go_name not in parameter_dict:
        _logger.error(
            "Requested parameter name %s not found in %s",
            int_param_go_name,
            parameters_file_name,
        )
        raise ValueError("Parameter name not found")
    int_param_go = float(parameter_dict[int_param_go_name])
    if int_param_go_name != int_param_wo_name:
        _logger.info(
            "Collected %s from parameter.txt with value %f",
            int_param_go_name,
            int_param_go,
        )
    return (int_param_wo, int_param_go)
示例#6
0
def test_extract_value_with_space():
    data = [
        'key4 "foo bar com"',
        'key5 "conserve   spaces"',
    ]
    assert design_kw.extract_key_value(data) == {
        "key4": "foo bar com",
        "key5": "conserve   spaces",
    }
示例#7
0
def test_extract_key_value_whitespace_error():
    """Test that user friendly error message is displayed
    when an error occurs"""
    data = ['"FOO BAR COM " 2']
    with pytest.raises(ValueError, match="FOO BAR COM"):
        design_kw.extract_key_value(data)
    with pytest.raises(ValueError, match="Quotes"):
        design_kw.extract_key_value(data)

    data = ["SENTENCE this is a string"]
    with pytest.raises(ValueError, match="SENTENCE"):
        design_kw.extract_key_value(data)
    with pytest.raises(ValueError, match="Spaces in values are not supported"):
        design_kw.extract_key_value(data)
示例#8
0
def test_pair_cell_values(cellvalues, expected_parameters_strs, tmpdir):
    """Test how a pair of values, one for each realization, go through
    the Excel input sheets and all the way to parameters.txt.

    This is to ensure that differing datatypes in a single Excel columns does
    not affect individual values."""
    tmpdir.chdir()

    write_design_xlsx(
        "design_matrix.xlsx",
        designdf=pd.DataFrame(columns=["REAL", "SOMEKEY"],
                              data=[[0, cellvalues[0]], [1, cellvalues[1]]]),
    )

    params_0 = "parameters0.txt"
    design2params.run(
        0,
        "design_matrix.xlsx",
        parametersfilename=params_0,
        log_level=logging.DEBUG,
    )
    params_1 = "parameters1.txt"
    design2params.run(
        1,
        "design_matrix.xlsx",
        parametersfilename=params_1,
        log_level=logging.DEBUG,
    )
    with open(params_0) as p_file:
        params_lines_0 = p_file.readlines()
    with open(params_1) as p_file:
        params_lines_1 = p_file.readlines()
    key_vals_real0 = extract_key_value(params_lines_0)
    key_vals_real1 = extract_key_value(params_lines_1)
    assert key_vals_real0["SOMEKEY"] == expected_parameters_strs[0]
    assert key_vals_real1["SOMEKEY"] == expected_parameters_strs[1]
示例#9
0
def test_single_cell_values(cellvalue, expected_parameters_str, tmpdir):
    """Test how certain single values go through the Excel input sheets
    and all the way to parameters.txt"""
    tmpdir.chdir()
    write_design_xlsx(
        "design_matrix.xlsx",
        designdf=pd.DataFrame(columns=["REAL", "SOMEKEY"],
                              data=[[0, cellvalue]]),
    )

    params_file = "parameters.txt"
    design2params.run(
        0,
        "design_matrix.xlsx",
        parametersfilename=params_file,
        log_level=logging.DEBUG,
    )
    with open(params_file) as p_file:
        params_lines = p_file.readlines()
    key_vals = extract_key_value(params_lines)
    assert key_vals["SOMEKEY"] == expected_parameters_str
示例#10
0
def test_extract_key_value_dup_key():
    data = ["key1 14", "key2 24", "key1 34"]
    with pytest.raises(ValueError, match="multiple times"):
        design_kw.extract_key_value(data)
示例#11
0
def test_extract_missing_value():
    data = ["key1"]
    with pytest.raises(ValueError, match="No value found"):
        design_kw.extract_key_value(data)
示例#12
0
def test_unsupported_quoting():
    data = ['Unclosed " quote']
    with pytest.raises(ValueError, match="No closing quotation"):
        design_kw.extract_key_value(data)
示例#13
0
def test_extract_key_with_space():
    data = ['"key x" "value with space"']
    assert design_kw.extract_key_value(data) == {"key x": "value with space"}
示例#14
0
def test_extract_key_value_dup_key():
    data = ["key1 14", "key2 24", "key1 34"]
    with pytest.raises(SystemExit):
        design_kw.extract_key_value(data)