def test_args_call_pos (self): assert _args(isstring)() assert _args(isstring)('dharma') assert _args(isstring)('dharma', 'miles') assert not _args(isstring)(4, "bad robot!") assert _and(_args(isstring), _args(_not(isempty)))('jack', 'sawyer') assert not _and(_args(isstring), _args(_not(isempty)))('jack', 'sawyer', '')
def test_args_idx (self): assert _args[0](isstring)("bad robot!", 4, 8) assert _args[-1](isint)(4, (), 8) assert _and(_args[0](isstring), _args[1](isnone))("bad robot!", None) assert not _args[0](isstring)(4, "bad robot!")
def test_args_mix_call_idx (self): assert _args[0](isstring, ricardo=isstring)("bad robot!", 4, 8, ricardo='#2') assert _args[-1](isint, ricardo=isstring)(4, (), 8, ricardo='#2') assert _and(_args[0](isstring), _args[1](isnone))("bad robot!", None) assert not _args[0](isint, ricardo=isstring)("bad robot!", ricardo='#2') assert not _args[0](isint, ricardo=isstring)(4, "bad robot!", ricardo=2)
def test_and (self): # no predicates assert _and()(True) # single predicate assert _and(isempty)('') assert _and(istrue)(True) assert not _and(isfalse)(True) assert not _and(istrue)(False) # multiple predicates assert _and(isempty, not_)('') assert not _and(isfalse, isstring)(False) assert not _and(isfalse, isstring)(True) assert not _and(istrue, isstring)(False)
def test_args_idx_slice (self): assert _args[:](isstring)() assert _args[:](isstring)('dharma') assert _args[:](isstring)('dharma', 'miles') assert _args[:2](isstring)('dharma', 'miles') assert _args[0:1](isstring)("bad robot!", 4, 8) assert _args[2:4](isstring)(4, 8, 'linus', 'juliet') assert _args[2:](isstring)(4, 8, 'linus', 'juliet') assert _args[1::2](isstring)(4, 'linus', 8, 'juliet', 15, 'hurley', 16) assert _args[1:2](isiterable)(4, (), 8) assert _args[:-1](isint)(4, 8, ()) assert _args[-3:-1](isint)(4, 8, ()) assert not _args[0:1](isstring)(4, "bad robot!") assert not _args[:](isstring)('dharma', 4, 8, 15, 16, 23, 42) assert _and(_args[0:1](isstring), _args[1:2](isnone))("bad robot!", None)
def test_short_circuit (self): assert not _and(false, fail)() assert _or(true, fail)() assert not _not(true, fail)()
def test_composition (self): assert not _and(_not(isstring), _or(isempty, isatom))('') assert _and(_not(isstring), _or(isempty, isatom))(()) assert _and(_not(isstring), _or(isempty, isatom))(42)