Exemple #1
0
 def test_call_requires_missing(self):
     def foo(obj): return obj
     context = Context()
     with ShouldRaise(ContextError(
             "No <class 'mush.tests.test_context.TheType'> in context"
     )):
         context.call(foo, requires(TheType))
Exemple #2
0
 def test_clash_string_type(self):
     obj1 = TheType()
     obj2 = TheType()
     context = Context()
     context.add(obj1, type='my label')
     with ShouldRaise(ContextError("Context already contains 'my label'")):
         context.add(obj2, type='my label')
Exemple #3
0
 def test_returns_mapping(self):
     def foo():
         return {'foo': 1, 'bar': 2}
     context = Context()
     result = context.call(foo, nothing, returns_mapping())
     compare(result, {'foo': 1, 'bar': 2})
     compare({'foo': 1, 'bar': 2}, context)
Exemple #4
0
 def test_ignore_return(self):
     def foo():
         return 'bar'
     context = Context()
     result = context.call(foo, nothing, nothing)
     compare(result, 'bar')
     compare({}, context)
Exemple #5
0
 def test_returns_single(self):
     def foo():
         return 'bar'
     context = Context()
     result = context.call(foo, nothing, returns(TheType))
     compare(result, 'bar')
     compare({TheType: 'bar'}, context)
Exemple #6
0
 def test_returns_sequence(self):
     def foo():
         return 1, 2
     context = Context()
     result = context.call(foo, nothing, returns('foo', 'bar'))
     compare(result, (1, 2))
     compare({'foo': 1, 'bar': 2}, context)
Exemple #7
0
 def test_clash(self):
     obj1 = TheType()
     obj2 = TheType()
     context = Context()
     context.add(obj1, TheType)
     with ShouldRaise(ContextError('Context already contains '+repr(TheType))):
         context.add(obj2, TheType)
Exemple #8
0
 def test_call_basic(self):
     def foo():
         return 'bar'
     context = Context()
     result = context.call(foo, nothing, result_type)
     compare(result, 'bar')
     compare({str: 'bar'}, context)
Exemple #9
0
 def test_call_requires_missing(self):
     def foo(obj): return obj
     context = Context()
     with ShouldRaise(ContextError(
             "No <class 'mush.tests.test_context.TheType'> in context"
     )):
         context.call(foo, requires(TheType), result_type)
Exemple #10
0
 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')
Exemple #11
0
 def test_call_requires_item(self):
     def foo(x):
         return x
     context = Context()
     context.add(dict(bar='baz'), 'foo')
     result = context.call(foo, requires(item('foo', 'bar')))
     compare(result, 'baz')
Exemple #12
0
 def test_returns_single(self):
     def foo():
         return 'bar'
     context = Context()
     result = context.extract(foo, nothing, returns(TheType))
     compare(result, 'bar')
     compare({TheType: 'bar'}, context)
Exemple #13
0
 def test_returns_sequence(self):
     def foo():
         return 1, 2
     context = Context()
     result = context.extract(foo, nothing, returns('foo', 'bar'))
     compare(result, (1, 2))
     compare({'foo': 1, 'bar': 2}, context)
Exemple #14
0
 def test_returns_mapping(self):
     def foo():
         return {'foo': 1, 'bar': 2}
     context = Context()
     result = context.extract(foo, nothing, returns_mapping())
     compare(result, {'foo': 1, 'bar': 2})
     compare({'foo': 1, 'bar': 2}, context)
Exemple #15
0
 def test_ignore_return(self):
     def foo():
         return 'bar'
     context = Context()
     result = context.extract(foo, nothing, nothing)
     compare(result, 'bar')
     compare({}, context)
Exemple #16
0
 def test_call_requires_type(self):
     def foo(obj):
         return obj
     context = Context()
     context.add('bar', TheType)
     result = context.call(foo, requires(TheType))
     compare(result, 'bar')
     compare({TheType: 'bar'}, context)
Exemple #17
0
 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)
Exemple #18
0
 def test_call_requires_item_missing(self):
     def foo(obj): return obj
     context = Context()
     context.add({}, TheType)
     with ShouldRaise(ContextError(
             "No TheType['foo'] in context"
     )):
         context.call(foo, requires(item(TheType, 'foo')), result_type)
Exemple #19
0
    def test_call_basic(self):
        def foo():
            return 'bar'

        context = Context()
        result = context.call(foo, nothing, result_type)
        compare(result, 'bar')
        compare({str: 'bar'}, context)
Exemple #20
0
 def test_call_requires_string(self):
     def foo(obj):
         return obj
     context = Context()
     context.add('bar', 'baz')
     result = context.call(foo, requires('baz'))
     compare(result, 'bar')
     compare({'baz': 'bar'}, context)
Exemple #21
0
 def test_call_requires_type(self):
     def foo(obj):
         return obj
     context = Context()
     context.add('bar', TheType)
     result = context.call(foo, requires(TheType), result_type)
     compare(result, 'bar')
     compare({TheType: 'bar', str: 'bar'}, context)
Exemple #22
0
 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)
Exemple #23
0
 def test_call_requires_attr(self):
     def foo(x):
         return x
     m = Mock()
     context = Context()
     context.add(m, 'foo')
     result = context.call(foo, requires(attr('foo', 'bar')))
     compare(result, m.bar)
Exemple #24
0
 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)
Exemple #25
0
    def test_ignore_return(self):
        def foo():
            return 'bar'

        context = Context()
        result = context.call(foo, nothing, returns())
        compare(result, 'bar')
        compare({}, context)
Exemple #26
0
    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)
Exemple #27
0
 def test_call_requires_string(self):
     def foo(obj):
         return obj
     context = Context()
     context.add('bar', 'baz')
     result = context.call(foo, requires('baz'), result_type)
     compare(result, 'bar')
     compare({'baz': 'bar', str: 'bar'}, context)
Exemple #28
0
    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)
Exemple #29
0
    def test_ignore_non_iterable_return(self):
        def foo():
            pass

        context = Context()
        result = context.call(foo, nothing, nothing)
        compare(result, expected=None)
        compare(context, expected={})
Exemple #30
0
 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)
Exemple #31
0
 def test_call_requires_item_attr(self):
     def foo(x):
         return x
     m = Mock()
     m.bar= dict(baz='bob')
     context = Context()
     context.add(m, 'foo')
     result = context.call(foo, requires(item(attr('foo', 'bar'), 'baz')))
     compare(result, 'bob')
Exemple #32
0
 def test_call_requires_accidental_tuple(self):
     def foo(obj): return obj
     context = Context()
     with ShouldRaise(TypeError(
             "(<class 'mush.tests.test_context.TheType'>, "
             "<class 'mush.tests.test_context.TheType'>) "
             "is not a type or label"
     )):
         context.call(foo, requires((TheType, TheType)))
Exemple #33
0
 def test_call_requires_accidental_tuple(self):
     def foo(obj): return obj
     context = Context()
     with ShouldRaise(TypeError(
             "(<class 'mush.tests.test_context.TheType'>, "
             "<class 'mush.tests.test_context.TheType'>) "
             "is not a type or label"
     )):
         context.call(foo, requires((TheType, TheType)), result_type)
Exemple #34
0
 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')
Exemple #35
0
    def test_type_as_string(self):
        obj = TheType()
        context = Context()
        context.add(obj, type='my label')

        expected = ("<Context: {\n" "    'my label': <TheType obj>\n" "}>")
        self.assertTrue(context['my label'] is obj)
        self.assertEqual(repr(context), expected)
        self.assertEqual(str(context), expected)
Exemple #36
0
 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)
Exemple #37
0
 def test_call_requires_attr(self):
     def foo(x):
         return x
     m = Mock()
     context = Context()
     context.add(m, 'foo')
     result = context.call(foo,
                           requires(attr('foo', 'bar')),
                           result_type)
     compare(result, m.bar)
Exemple #38
0
 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)
Exemple #39
0
 def test_explicit_type(self):
     class T2(object): pass
     obj = TheType()
     context = Context()
     context.add(obj, T2)
     self.assertTrue(context[T2] is obj)
     expected = ("<Context: {\n"
                 "    " + repr(T2) + ": <TheType obj>\n"
                 "}>")
     compare(repr(context), expected)
     compare(str(context), expected)
Exemple #40
0
 def test_call_requires_item_attr(self):
     def foo(x):
         return x
     m = Mock()
     m.bar= dict(baz='bob')
     context = Context()
     context.add(m, 'foo')
     result = context.call(foo,
                           requires(item(attr('foo', 'bar'), 'baz')),
                           result_type)
     compare(result, 'bob')
Exemple #41
0
 def test_explicit_type(self):
     class T2(object): pass
     obj = TheType()
     context = Context()
     context.add(obj, T2)
     self.assertTrue(context[T2] is obj)
     expected = ("<Context: {\n"
                 "    " + repr(T2) + ": <TheType obj>\n"
                 "}>")
     compare(repr(context), expected)
     compare(str(context), expected)
Exemple #42
0
    def test_type_as_string(self):
        obj = TheType()
        context = Context()
        context.add(obj, type='my label')

        expected = ("<Context: {\n"
                    "    'my label': <TheType obj>\n"
                    "}>")
        self.assertTrue(context['my label'] is obj)
        self.assertEqual(repr(context), expected)
        self.assertEqual(str(context), expected)
Exemple #43
0
    def test_simple(self):
        obj = TheType()
        context = Context()
        context.add(obj, TheType)

        self.assertTrue(context[TheType] is obj)
        expected = (
            "<Context: {\n"
            "    <class 'mush.tests.test_context.TheType'>: <TheType obj>\n"
            "}>")
        self.assertEqual(repr(context), expected)
        self.assertEqual(str(context), expected)
Exemple #44
0
    def test_simple(self):
        obj = TheType()
        context = Context()
        context.add(obj, TheType)

        self.assertTrue(context[TheType] is obj)
        expected = (
            "<Context: {\n"
            "    <class 'mush.tests.test_context.TheType'>: <TheType obj>\n"
            "}>"
        )
        self.assertEqual(repr(context), expected)
        self.assertEqual(str(context), expected)
Exemple #45
0
    def test_call_requires_named_parameter(self):
        def foo(x, y):
            return x, y

        context = Context()
        context.add('foo', TheType)
        context.add('bar', 'baz')
        result = context.call(foo, requires(y='baz', x=TheType), result_type)
        compare(result, ('foo', 'bar'))
        compare({TheType: 'foo', 'baz': 'bar', tuple: ('foo', 'bar')}, context)
Exemple #46
0
 def test_clash_string_type(self):
     obj1 = TheType()
     obj2 = TheType()
     context = Context()
     context.add(obj1, type='my label')
     with ShouldRaise(ContextError("Context already contains 'my label'")):
         context.add(obj2, type='my label')
Exemple #47
0
 def test_clash(self):
     obj1 = TheType()
     obj2 = TheType()
     context = Context()
     context.add(obj1, TheType)
     with ShouldRaise(ContextError('Context already contains '+repr(TheType))):
         context.add(obj2, TheType)
Exemple #48
0
    def test_call_requires_item_missing(self):
        def foo(obj):
            return obj

        context = Context()
        context.add({}, TheType)
        with ShouldRaise(ContextError("No TheType['foo'] in context")):
            context.call(foo, requires(item(TheType, 'foo')), result_type)
Exemple #49
0
 def test_call_requires_named_parameter(self):
     def foo(x, y):
         return x, y
     context = Context()
     context.add('foo', TheType)
     context.add('bar', 'baz')
     result = context.call(foo,
                           requires(y='baz', x=TheType),
                           result_type)
     compare(result, ('foo', 'bar'))
     compare({TheType: 'foo',
              'baz': 'bar',
              tuple: ('foo', 'bar')}, context)
Exemple #50
0
 def test_add_none_with_type(self):
     context = Context()
     context.add(None, TheType)
     self.assertTrue(context[TheType] is None)
Exemple #51
0
 def test_add_none(self):
     context = Context()
     with ShouldRaise(ValueError('Cannot add None to context')):
         context.add(None, None.__class__)
Exemple #52
0
 def test_ignore_non_iterable_return(self):
     def foo(): pass
     context = Context()
     result = context.call(foo, nothing, nothing)
     compare(result, expected=None)
     compare(context, expected={})
Exemple #53
0
 def test_add_none(self):
     context = Context()
     with ShouldRaise(ValueError('Cannot add None to context')):
         context.add(None, None.__class__)
Exemple #54
0
 def test_add_none_with_type(self):
     context = Context()
     context.add(None, TheType)
     self.assertTrue(context[TheType] is None)
Exemple #55
0
 def test_call_basic(self):
     def foo():
         return 'bar'
     context = Context()
     result = context.call(foo, nothing)
     compare(result, 'bar')