Beispiel #1
0
    def test_with_str(self):
        @Inject('default', param='default')
        def method(*args, **kwargs):
            self.assertIsNotNone(args[0])
            self.assertIsNotNone(kwargs.get('param'))

        call(method)
Beispiel #2
0
    def test_with_type(self):
        @Inject(object, param=object)
        def method(*args, **kwargs):
            self.assertIsNotNone(args[0])
            self.assertIsNotNone(kwargs.get('param'))

        call(method)
Beispiel #3
0
    def test_with_tuple(self):
        @Inject((object, 'default'), param=(object, 'default'))
        def method(*args, **kwargs):
            self.assertIsNotNone(args[0])
            self.assertIsNotNone(kwargs.get('param'))

        call(method)
Beispiel #4
0
    def test_with_context_args(self):
        DEFAULT_CONTAINER.register_instance(1, int, context='1')
        DEFAULT_CONTAINER.register_instance(2, int, context='2')
        DEFAULT_CONTAINER.register_instance(3, int, context='3')

        @Inject(int, _context='3')
        @Inject(int, _context='2')
        @Inject(int, _context='1')
        def sum_func(*args):
            for i, arg in zip(range(1, len(args) + 1), args):
                self.assertEqual(i, arg)
            return sum(args)

        self.assertEqual(6, call(sum_func))
        self.assertEqual(10, call(sum_func, 4))
Beispiel #5
0
    def test_common_args(self):
        DEFAULT_CONTAINER.register_instance(2, int)
        DEFAULT_CONTAINER.register_instance(4.0, float)

        @Inject(int)
        @Inject(float, int)
        def sum_func(*args):
            self.assertIsInstance(args[0], float)
            self.assertIsInstance(args[1], int)
            self.assertIsInstance(args[1], int)
            self.assertGreaterEqual(len(args), 3)
            return sum(args)

        self.assertEqual(8, call(sum_func))
        self.assertEqual(11, call(sum_func, 3))
Beispiel #6
0
    def test_simple_func(self):
        @Inject(_name_as_context=True)
        def sub_func(a: int, b: int) -> int:
            return a - b

        DEFAULT_CONTAINER.register_instance(4, int, context='a')
        DEFAULT_CONTAINER.register_instance(2, int, context='b')
        self.assertEqual(2, call(sub_func))

        DEFAULT_CONTAINER.register_instance(2, int, context='a')
        DEFAULT_CONTAINER.register_instance(2, int, context='b')
        self.assertEqual(0, call(sub_func))

        DEFAULT_CONTAINER.register_instance(2, int, context='a')
        DEFAULT_CONTAINER.register_instance(4, int, context='b')
        self.assertEqual(-2, call(sub_func))
Beispiel #7
0
import logging
from logging import Logger

from pycdi import Inject, Singleton, Producer
from pycdi.shortcuts import call


@Producer(_context='app_name')
def get_app_name() -> str:
    return 'PyCDI'


@Singleton()
@Inject(logger_name='app_name')
def get_logger(logger_name: str) -> Logger:
    return logging.getLogger(logger_name)


@Inject(name='app_name')
def main(name: str, logger: Logger):
    logger.info('I\'m starting...')
    print('Hello World!!!\nI\'m a example of %s' % name)
    logger.debug('I\'m finishing...')


call(main)
Beispiel #8
0
 def test_simple_class(self):
     frc = WithForwardReferenceClass()
     DEFAULT_CONTAINER.register_instance(frc)
     self.assertIs(frc, call(frc.kwargs_inject))
Beispiel #9
0
 def test_another_injected_string(self):
     expected = ANOTHER_STRING
     result = call(another_function_with_injection)
     self.assertEqual(expected, result)
Beispiel #10
0
 def test_injected_string(self):
     expected = SOME_STRING
     result = call(function_with_injection)
     self.assertEqual(expected, result)
Beispiel #11
0
 def test_method_with_injection(self):
     DEFAULT_CONTAINER.register_instance(self)
     complex_class = new(ComplexClass)
     call(complex_class.method_with_injection)