Пример #1
0
def test_replace_value_minimal_params_success():
    params = {"attributes": ["col1", "col2"], "replacement": 10, "value": -10}
    n_in = {'input data': 'input_1'}
    n_out = {'output data': 'output_1'}
    instance = ReplaceValuesOperation(params,
                                      named_inputs=n_in,
                                      named_outputs=n_out)

    code = instance.generate_code()
    expected_code = dedent("""
        output_1 = input_1
        replacement = {replaces}
        for col in replacement:
            list_replaces = replacement[col]
            output_1[col] = output_1[col].replace(list_replaces[0],
            list_replaces[1])
        """.format(out=n_out['output data'],
                   in1=n_in['input data'],
                   replaces={
                       "col2": [[-10], [10]],
                       "col1": [[-10], [10]]
                   }))

    result, msg = compare_ast(ast.parse(code), ast.parse(expected_code))
    assert result, msg + format_code_comparison(code, expected_code)
Пример #2
0
def test_replace_values_missing_input_implies_no_code_success():
    arguments = {
        'parameters': {
            'value': 'Iris-setosa',
            'replacement': 'replaced',
            'attributes': ['class']
        },
        'named_inputs': {},
        'named_outputs': {
            'output data': 'out'
        }
    }
    instance = ReplaceValuesOperation(**arguments)
    assert instance.generate_code() is None
Пример #3
0
def test_replace_values_success():
    slice_size = 10
    df = [
        'df',
        util.iris(['sepallength', 'sepalwidth', 'petalwidth', 'petallength'],
                  slice_size)
    ]

    arguments = {
        'parameters': {},
        'named_inputs': {
            'input data': df[0],
        },
        'named_outputs': {
            'output data': 'out'
        }
    }
    instance = ReplaceValuesOperation(**arguments)
    result = util.execute(instance.generate_code(), dict([df]))
    assert result['out'].equals(util.iris(size=slice_size))
Пример #4
0
def test_replace_values_success():
    df = util.iris(['class'], size=10)

    test_df = df.copy()
    test_df.loc[:, 'class'] = 'replaced'

    arguments = {
        'parameters': {
            'value': 'Iris-setosa',
            'replacement': 'replaced',
            'attributes': ['class']
        },
        'named_inputs': {
            'input data': 'df',
        },
        'named_outputs': {
            'output data': 'out'
        }
    }
    instance = ReplaceValuesOperation(**arguments)
    result = util.execute(instance.generate_code(), {'df': df})
    assert result['out'].equals(test_df)
Пример #5
0
def test_replace_values_multiple_attributes_success():
    df = util.iris(['sepallength', 'sepalwidth'], size=10)
    test_df = df.copy()

    df.loc[5, ['sepallength', 'sepalwidth']] = 10
    test_df.loc[5, ['sepallength', 'sepalwidth']] = 'test'

    arguments = {
        'parameters': {
            'value': '10',
            'replacement': 'test',
            'attributes': ['sepallength', 'sepalwidth']
        },
        'named_inputs': {
            'input data': 'df',
        },
        'named_outputs': {
            'output data': 'out'
        }
    }
    instance = ReplaceValuesOperation(**arguments)
    result = util.execute(instance.generate_code(), {'df': df})
    assert result['out'].equals(test_df)
Пример #6
0
def test_replace_values_missing_attributes_param_fail():
    arguments = {
        'parameters': {
            'value': 'Iris-setosa',
            'replacement': 'replaced'
        },
        'named_inputs': {},
        'named_outputs': {
            'output data': 'out'
        }
    }
    with pytest.raises(KeyError) as key_err:
        ReplaceValuesOperation(**arguments)
    assert "'attributes'" in str(key_err.value)
Пример #7
0
def test_replace_values_missing_value_param_fail():
    arguments = {
        'parameters': {
            'replacement': 'replaced',
            'attributes': ['class']
        },
        'named_inputs': {},
        'named_outputs': {
            'output data': 'out'
        }
    }
    with pytest.raises(ValueError) as val_err:
        ReplaceValuesOperation(**arguments)
    assert "Parameter value and replacement must be informed if is using" \
           " replace by value in task" in str(val_err.value)
Пример #8
0
def test_replace_value_missing_attribute_param_failure():
    params = {}
    with pytest.raises(ValueError):
        n_in = {'input data': 'input_1'}
        n_out = {'output data': 'output_1'}
        ReplaceValuesOperation(params, named_inputs=n_in, named_outputs=n_out)