Exemplo n.º 1
0
def array(factory, vals):
    '''Decode string/value as list

    array :: (a -> Result e b) -> List a -> Result e (List b)

    >>> from pydecoder.primitives import to_int
    >>> array(to_int, [1, 2, 3])
    Result(status='Ok', value=[1, 2, 3])

    >>> array(to_int, None)
    Result(status='Error', value="'None' isn't list or tuple.")
    '''
    if not isinstance(vals, (list, tuple)):
        return error(u('\'{}\' isn\'t list or tuple.').format(vals))

    result = []

    for val in vals:
        rv = factory(val)

        if is_error(rv):
            return rv

        result.append(value(rv))

    return ok(result)
Exemplo n.º 2
0
def test_and_then_dont_run_next_decoder():
    def dec(_val):
        return error('ERROR')

    rv = and_then(dec, to_int, 5)

    assert is_error(rv)
    assert rv.value == 'ERROR'
Exemplo n.º 3
0
def test_to_val_return_error_result_if_iterator_is_empty():
    @to_val
    def ftest(val):
        return val

    i = iter([])

    rv = ftest(i)

    assert is_error(rv)
    assert rv.value == 'Value is empty.'
Exemplo n.º 4
0
def test_to_string_return_error_if_value_isnt_string(val):
    rv = to_string(val)

    assert is_error(rv)
Exemplo n.º 5
0
def test_to_bool_return_error_result_if_value_isnt_valid_string():
    rv = to_bool('foo')

    assert is_error(rv)
Exemplo n.º 6
0
def test_to_bool_return_error_result_if_value_isnt_string_or_bool():
    rv = to_bool(1)

    assert is_error(rv)
Exemplo n.º 7
0
def test_to_float_return_error_result():
    rv = to_float('aaa')

    assert is_error(rv)
Exemplo n.º 8
0
def test_to_int_return_error_result():
    rv = to_int(None)

    assert is_error(rv)
Exemplo n.º 9
0
def test_none_return_error_result():
    rv = null('aaaa')

    assert is_error(rv)
Exemplo n.º 10
0
def test_array_returns_error_if_value_isnt_valid_list(val):
    rv = array(to_int, val)

    assert is_error(rv)
    assert isinstance(rv.value, string_types)
Exemplo n.º 11
0
def test_stop_on_first_error_and_returns_it(ins):
    rv = array(to_int, ins)

    assert is_error(rv)
    assert isinstance(rv.value, string_types)
Exemplo n.º 12
0
def test_required_return_error(data):
    rv = required('field', error, getter(data))  # pylint: disable=no-value-for-parameter

    assert is_error(rv)