def test_default_requirements(self): def foo(a, b=1, *, c, d=None): pass check_extract(foo, expected_rq=requires('a', optional('b'), c='c', d=optional('d')), expected_rt=None)
def test_extract_from_partial(self): def foo(x, y, z, a=None): pass p = partial(foo, 1, y=2) check_extract(p, expected_rq=requires(z='z', a=optional('a'), y=optional('y')), expected_rt=None)
def test_call_requires_item_optional_present(self): def foo(x=1): return x context = Context() context.add(dict(bar='baz'), 'foo') result = context.call(foo, requires(item(optional('foo'), 'bar'))) compare(result, 'baz')
def test_default_requirements_for_function(self): def foo(a, b=None): pass check_extract(foo, expected_rq=requires('a', optional('b')), expected_rt=None)
def test_call_requires_optional_ContextError(self): def foo(x=1): return x context = Context() result = context.call(foo, requires(optional(TheType)), result_type) compare(result, 1) compare({int: 1}, context)
def test_call_requires_optional_string(self): def foo(x=1): return x context = Context() context.add(2, 'foo') result = context.call(foo, requires(optional('foo'))) compare(result, 2) compare({'foo': 2}, context)
def test_call_requires_optional_present(self): def foo(x=1): return x context = Context() context.add(2, TheType) result = context.call(foo, requires(optional(TheType))) compare(result, 2) compare({TheType: 2}, context)
def test_extract_from_partial_plus_one_default_not_in_partial(self): def foo(b, a=None): pass p = partial(foo) check_extract(p, expected_rq=requires('b', optional('a')), expected_rt=None)
def test_extract_from_partial_default_in_partial_kw(self): def foo(a=None): pass p = partial(foo, a=1) check_extract(p, expected_rq=requires(a=optional('a')), expected_rt=None)
def test_default_requirements_for_class(self): class MyClass(object): def __init__(self, a, b=None): pass check_extract(MyClass, expected_rq=requires('a', optional('b')), expected_rt=None)
def test_call_requires_item_optional_ContextError(self): def foo(x=1): return x context = Context() result = context.call(foo, requires(item(optional('foo'), 'bar')), result_type) compare(result, 1)
def test_call_requires_item_optional_ContextError(self): def foo(x=1): return x context = Context() result = context.call(foo, requires(item(optional('foo'), 'bar')), result_type) compare(result, 1)
def test_extract_from_partial_plus_one_required_in_partial_kw(self): def foo(b, a): pass p = partial(foo, a=1) check_extract(p, expected_rq=requires('b', a=optional('a')), expected_rt=None)
def test_call_requires_optional_ContextError(self): def foo(x=1): return x context = Context() result = context.call(foo, requires(optional(TheType)), result_type) compare(result, 1) compare({int: 1}, context)
def test_call_requires_item_optional_present(self): def foo(x=1): return x context = Context() context.add(dict(bar='baz'), 'foo') result = context.call(foo, requires(item(optional('foo'), 'bar')), result_type) compare(result, 'baz')
def test_call_requires_optional_string(self): def foo(x=1): return x context = Context() context.add(2, 'foo') result = context.call(foo, requires(optional('foo')), result_type) compare(result, 2) compare({'foo': 2, int: 2}, context)
def test_call_requires_optional_present(self): def foo(x=1): return x context = Context() context.add(2, TheType) result = context.call(foo, requires(optional(TheType)), result_type) compare(result, 2) compare({TheType: 2, int: 2}, context)
def test_missing(self): compare(optional(Type1).process(missing), nothing)
def test_string(self): compare(repr(optional('1')), "optional('1')")
def test_present(self): compare(optional(Type1).process(1), 1)
def test_type(self): compare(repr(optional(Type1)), "optional(Type1)")