Exemplo n.º 1
0
def test_drop_missing_input_implies_no_code_success():
    arguments = {
        'parameters': {
            'attributes': ['class']
        },
        'named_inputs': {},
        'named_outputs': {
            'output data': 'out'
        }
    }
    instance = DropOperation(**arguments)
    assert instance.generate_code() is None
Exemplo n.º 2
0
def test_drop_minimal_params_success():
    params = {'attributes': 'TEST'}
    n_in = {'input data': 'input_1'}
    n_out = {'output data': 'output_1'}

    instance = DropOperation(params, named_inputs=n_in, named_outputs=n_out)
    code = instance.generate_code()
    expected_code = "{out} = {input}.drop(columns={columns})" \
        .format(out=n_out['output data'], input=n_in['input data'],
                columns=params['attributes'])
    result, msg = compare_ast(ast.parse(code), ast.parse(expected_code))
    assert result, msg
Exemplo n.º 3
0
def test_drop_success():
    df = util.iris(size=10)
    arguments = {
        'parameters': {
            'attributes': ['class']
        },
        'named_inputs': {
            'input data': 'df',
        },
        'named_outputs': {
            'output data': 'out'
        }
    }
    instance = DropOperation(**arguments)
    result = util.execute(instance.generate_code(), {'df': df})
    assert result['out'].equals(util.iris(size=10).drop(['class'], axis=1))
Exemplo n.º 4
0
def test_drop_invalid_attribute_param_fail():
    df = util.iris(size=10)

    arguments = {
        'parameters': {
            'attributes': ['invalid']
        },
        'named_inputs': {
            'input data': 'df',
        },
        'named_outputs': {
            'output data': 'out'
        }
    }
    instance = DropOperation(**arguments)
    with pytest.raises(KeyError) as key_err:
        util.execute(instance.generate_code(), {'df': df})
    assert "['invalid'] not found in axis" in str(key_err.value)
Exemplo n.º 5
0
def test_drop_success():
    slice_size = 10
    df = ['df', util.iris(size=slice_size)]

    arguments = {
        'parameters': {
            DropOperation.ATTRIBUTES_PARAM: ['class']
        },
        'named_inputs': {
            'input data': df[0],
        },
        'named_outputs': {
            'output data': 'out'
        }
    }
    instance = DropOperation(**arguments)
    result = util.execute(instance.generate_code(), 
            {'df': df[1]})
    assert result['out'].equals(
            util.iris(size=slice_size).drop(['class'], axis=1))
Exemplo n.º 6
0
def test_drop_fail_invalid_attribute():
    slice_size = 10
    df = ['df', util.iris(size=slice_size)]

    arguments = {
        'parameters': {
            DropOperation.ATTRIBUTES_PARAM: ['invalid']
        },
        'named_inputs': {
            'input data': df[0],
        },
        'named_outputs': {
            'output data': 'out'
        }
    }
    instance = DropOperation(**arguments)
    with pytest.raises(KeyError) as exc_info:
        result = util.execute(instance.generate_code(), 
            {'df': df[1]})
    assert "['invalid'] not found in axis" in str(exc_info.value)
Exemplo n.º 7
0
def test_drop_success_missing_input_implies_no_code():
    slice_size = 10
    df = ['df', util.iris(size=slice_size)]

    arguments = {
        'parameters': {
            DropOperation.ATTRIBUTES_PARAM: ['class']
        },
        'named_inputs': {},
        'named_outputs': {
            'output data': 'out'
        }
    }
    instance = DropOperation(**arguments)
    assert not instance.has_code
Exemplo n.º 8
0
def test_drop_missing_parameters_fail():
    slice_size = 10
    df = ['df', util.iris(size=slice_size)]

    arguments = {
        'parameters': {},
        'named_inputs': {
            'input data': df[0],
        },
        'named_outputs': {
            'output data': 'out'
        }
    }
    with pytest.raises(ValueError) as val_err:
        DropOperation(**arguments)
    assert "'attributes' must be informed for task" in str(val_err.value)
Exemplo n.º 9
0
def test_drop_success_no_output_implies_no_code():
    """
    Change DropOperation: it shouldn't generate
    code if there is not output!
    """
    slice_size = 10
    df = ['df', util.iris(size=slice_size)]

    arguments = {
        'parameters': {
            DropOperation.ATTRIBUTES_PARAM: ['class']
        },
        'named_inputs': {
            'input data': df[0],
        },
        'named_outputs': {
        }
    }
    instance = DropOperation(**arguments)
    assert not instance.has_code