示例#1
0
 def test_methods(self, _getmembers):
     _getmembers.return_value = [("A", 1), ("B", 2)]
     cls = Mock()
     collator = Collator()
     methods = collator._Collator__methods(cls)
     _getmembers.assert_called_with(cls, inspect.ismethod)
     self.assertEqual(methods, [v for n, v in _getmembers()])
示例#2
0
 def test_function(self, _getmembers):
     _getmembers.return_value = [("A", 1)]
     method = Mock()
     collator = Collator()
     function = collator._Collator__function(method)
     _getmembers.assert_called_with(method, inspect.isfunction)
     self.assertEqual(function, _getmembers()[0][1])
示例#3
0
 def test_dictionary(self):
     decorated = {os.path.join: {"A": 1}, Test.read.im_func: {"B": 2}, Test.write.im_func: {"C": 3}}
     collator = Collator()
     classes, functions = collator.collate(decorated)
     self.assertEqual(classes, {Test: [(Test.read, {"B": 2}), (Test.write, {"C": 3})]})
     self.assertEqual(len(functions), 1)
     self.assertEqual(functions.keys()[0].__name__, os.path.__name__)
     self.assertEqual(functions.values()[0], [(os.path.join, {"A": 1})])
示例#4
0
 def test_classes(self, _isclass):
     func_globals = Mock()
     func_globals.values.return_value = [1, 2, 3]
     _isclass.side_effect = [True, False, True]
     collator = Collator()
     classes = collator._Collator__classes(func_globals)
     _isclass.assert_has_calls([call(c) for c in func_globals.values()])
     self.assertEqual(classes, [1, 3])
示例#5
0
 def test_classes(self, _isclass):
     func_globals = Mock()
     func_globals.values.return_value = [1, 2, 3]
     _isclass.side_effect = [True, False, True]
     collator = Collator()
     classes = collator._Collator__classes(func_globals)
     _isclass.assert_has_calls([call(c) for c in func_globals.values()])
     self.assertEqual(classes, [1, 3])
示例#6
0
 def test_list(self):
     decorated = [os.path.join, Test.read.im_func, Test.write.im_func]
     collator = Collator()
     classes, functions = collator.collate(decorated)
     self.assertEqual(classes, {Test: [(Test.read, None), (Test.write, None)]})
     self.assertEqual(len(functions), 1)
     self.assertEqual(functions.keys()[0].__name__, os.path.__name__)
     self.assertEqual(functions.values()[0], [(os.path.join, None)])
示例#7
0
 def collated(cls):
     collated = []
     c = Collator()
     classes, functions = c.collate(cls.functions)
     for c in classes.keys():
         collated.append(c)
     for m in functions.keys():
         collated.append(m)
     return collated
示例#8
0
 def collated():
     collated = []
     c = Collator()
     classes, functions = c.collate(Remote.functions)
     for c in classes.keys():
         collated.append(c)
     for m in functions.keys():
         m.__name__ = m.__name__.split('.')[-1]
         collated.append(m)
     return collated
示例#9
0
 def test_dictionary(self):
     decorated = {
         os.path.join: {'A': 1},
         Test.read.im_func: {'B': 2},
         Test.write.im_func: {'C': 3},
     }
     collator = Collator()
     classes, functions = collator.collate(decorated)
     self.assertEqual(classes, {Test: [(Test.read, {'B': 2}), (Test.write, {'C': 3})]})
     self.assertEqual(len(functions), 1)
     self.assertEqual(functions.keys()[0].__name__, os.path.__name__)
     self.assertEqual(functions.values()[0], [(os.path.join, {'A': 1})])
示例#10
0
 def test_list(self):
     decorated = [
         os.path.join,
         Test.read.im_func,
         Test.write.im_func,
     ]
     collator = Collator()
     classes, functions = collator.collate(decorated)
     self.assertEqual(classes, {Test: [(Test.read, None), (Test.write, None)]})
     self.assertEqual(len(functions), 1)
     self.assertEqual(functions.keys()[0].__name__, os.path.__name__)
     self.assertEqual(functions.values()[0], [(os.path.join, None)])
示例#11
0
 def test_collate(self, _functions, _map):
     func_globals = {"A": 1}
     _fn1 = Mock()
     _fn1.func_globals = func_globals
     _fn2 = Mock()
     _fn2.func_globals = func_globals
     decorated = [_fn1, _fn2]
     collator = Collator()
     classes, functions = collator.collate(decorated)
     _functions.assert_called_with()
     _map.assert_called_with(func_globals)
     self.assertEqual(id(classes), id(collator.classes))
     self.assertEqual(functions, _functions())
示例#12
0
 def test_collate(self, _functions, _map):
     func_globals = {'A': 1}
     _fn1 = Mock()
     _fn1.func_globals = func_globals
     _fn2 = Mock()
     _fn2.func_globals = func_globals
     decorated = [_fn1, _fn2]
     collator = Collator()
     classes, functions = collator.collate(decorated)
     _functions.assert_called_with()
     _map.assert_called_with(func_globals)
     self.assertEqual(id(classes), id(collator.classes))
     self.assertEqual(functions, _functions())
示例#13
0
 def test_map(self, _decorated, _function, _methods, _classes):
     func_globals = {"A": 1, "B": 2}
     methods = ["m1", "m2", "m3", "m4", "m5", "m6", "m7", "m8", "m9"]
     functions = ["f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9"]
     _classes.return_value = ["c1", "c2", "c3"]
     _methods.side_effect = [methods[0:3], methods[3:6], methods[6:9]]
     _function.side_effect = functions
     _decorated.side_effect = [(fn, None) for fn in functions]
     collator = Collator()
     collator._Collator__map(func_globals)
     _classes.assert_called_with(func_globals)
     _methods.assert_has_calls([call(c) for c in _classes.return_value])
     _function.assert_has_calls([call(m) for m in methods])
     self.assertEqual(collator.bound, set(functions))
示例#14
0
 def collated():
     collated = []
     collator = Collator()
     classes, functions = collator.collate(Actions.functions)
     for _class, methods in classes.items():
         inst = _class()
         for method, options in methods:
             method = getattr(inst, method.__name__)
             action = Action(method, **options)
             collated.append(action)
     for module, fn_list in functions.items():
         for function, options in fn_list:
             action = Action(function, **options)
             collated.append(action)
     return collated
示例#15
0
 def collated():
     collated = []
     collator = Collator()
     classes, functions = collator.collate(Actions.functions)
     for _class, methods in classes.items():
         inst = _class()
         for method, options in methods:
             method = getattr(inst, method.__name__)
             action = Action(method, **options)
             collated.append(action)
     for module, fn_list in functions.items():
         for function, options in fn_list:
             action = Action(function, **options)
             collated.append(action)
     return collated
示例#16
0
文件: action.py 项目: splice/gofer
 def collated(cls):
     collated = []
     c = Collator()
     classes, functions = c.collate(cls.functions)
     for c, m in classes.items():
         inst = c()
         for m, d in m:
             m = getattr(inst, m.__name__)
             action = Action(m, **d)
             collated.append(action)
     for m, f in functions.items():
         for f, d in f:
             action = Action(f, **d)
             collated.append(action)
     return collated
示例#17
0
 def test_map(self, _decorated, _function, _methods, _classes):
     func_globals = {'A': 1, 'B': 2}
     methods = [
         'm1',
         'm2',
         'm3',
         'm4',
         'm5',
         'm6',
         'm7',
         'm8',
         'm9'
     ]
     functions = [
         'f1',
         'f2',
         'f3',
         'f4',
         'f5',
         'f6',
         'f7',
         'f8',
         'f9'
     ]
     _classes.return_value = [
         'c1',
         'c2',
         'c3'
     ]
     _methods.side_effect = [
         methods[0:3],
         methods[3:6],
         methods[6:9]
     ]
     _function.side_effect = functions
     _decorated.side_effect = [(fn, None) for fn in functions]
     collator = Collator()
     collator._Collator__map(func_globals)
     _classes.assert_called_with(func_globals)
     _methods.assert_has_calls([call(c) for c in _classes.return_value])
     _function.assert_has_calls([call(m) for m in methods])
     self.assertEqual(collator.bound, set(functions))
示例#18
0
 def test_decorated(self):
     collator = Collator()
     collator.functions = []
     # not found
     fn = collator._Collator__decorated(1)
     self.assertTrue(fn is None)
     # found in list
     collator.functions = [1]
     fn = collator._Collator__decorated(1)
     self.assertEqual(fn, (1, None))
     # found in dictionary
     collator.functions = {1: {'A': 1}}
     fn = collator._Collator__decorated(1)
     self.assertEqual(fn, (1, {'A': 1}))
示例#19
0
 def test_functions(self, _decorated, _getmodule):
     m1 = Module("m1")
     m2 = Module("m2")
     modules = [m1, m2, m2]
     _decorated.side_effect = lambda x: (x, None)
     _getmodule.side_effect = modules
     collator = Collator()
     for n in range(4):
         name = "f%d" % n
         fn = Mock(name=name)
         fn.__name__ = name
         collator.functions.append(fn)
     collator.bound.add(collator.functions[1])
     functions = collator._Collator__functions()
     for module, fns in functions.items():
         if module == m1:
             self.assertTrue(hasattr(module, "f0"))
             self.assertEqual(fns, [(f, None) for f in collator.functions[0:1]])
             continue
         if module == m2:
             self.assertTrue(hasattr(module, "f2"))
             self.assertTrue(hasattr(module, "f3"))
             self.assertEqual(fns, [(f, None) for f in collator.functions[2:4]])
             continue
示例#20
0
 def test_functions(self, _decorated, _getmodule):
     m1 = Module('m1')
     m2 = Module('m2')
     modules = [m1, m2, m2]
     _decorated.side_effect = lambda x: (x, None)
     _getmodule.side_effect = modules
     collator = Collator()
     for n in range(4):
         name = 'f%d' % n
         fn = Mock(name=name)
         fn.__name__ = name
         collator.functions.append(fn)
     collator.bound.add(collator.functions[1])
     functions = collator._Collator__functions()
     for module, fns in functions.items():
         if module == m1:
             self.assertTrue(hasattr(module, 'f0'))
             self.assertEqual(fns, [(f, None) for f in collator.functions[0:1]])
             continue
         if module == m2:
             self.assertTrue(hasattr(module, 'f2'))
             self.assertTrue(hasattr(module, 'f3'))
             self.assertEqual(fns, [(f, None) for f in collator.functions[2:4]])
             continue
示例#21
0
 def test_decorated(self):
     collator = Collator()
     collator.functions = []
     # not found
     fn = collator._Collator__decorated(1)
     self.assertTrue(fn is None)
     # found in list
     collator.functions = [1]
     fn = collator._Collator__decorated(1)
     self.assertEqual(fn, (1, None))
     # found in dictionary
     collator.functions = {1: {"A": 1}}
     fn = collator._Collator__decorated(1)
     self.assertEqual(fn, (1, {"A": 1}))
示例#22
0
 def test_init(self):
     collator = Collator()
     self.assertEqual(collator.classes, {})
     self.assertEqual(collator.bound, set())
     self.assertEqual(collator.functions, [])