128 lines
5.1 KiB
Python
128 lines
5.1 KiB
Python
from .samples import my_func, _my_private_func, MyClass
|
|
from ...utils.predicates import func_class_name_is_in, func_class_name_is_not_in, func_name_is_in, func_name_is_not_in, func_is_public
|
|
from django.test import SimpleTestCase
|
|
|
|
|
|
class PredicatesTest(SimpleTestCase):
|
|
|
|
def __test_func_class_name_is_in(self, negation: bool = False):
|
|
""" teste func_class_name_is_in et func_class_name_is_not_in """
|
|
|
|
func = func_class_name_is_not_in if negation else func_class_name_is_in
|
|
result = negation is not True
|
|
|
|
own_name = self.__class__.__name__
|
|
MainType = MyClass
|
|
main_type = MainType(11)
|
|
main_type_name = MainType.__name__
|
|
SubType = MyClass.MySubClass
|
|
sub_type = SubType(13)
|
|
sub_type_name = SubType.__name__
|
|
|
|
def local_func(a: int, b: int):
|
|
return a + b
|
|
|
|
# fonction native : None
|
|
self.assertEqual(func(str.__name__)(str.join), False)
|
|
|
|
# fonction locale : None
|
|
self.assertEqual(func(own_name)(local_func), False)
|
|
|
|
# méthodes
|
|
predicate = func(main_type_name)
|
|
self.assertEqual(predicate(MainType.class_met), result)
|
|
self.assertEqual(predicate(MainType.static_met), result)
|
|
self.assertEqual(predicate(main_type.std_met), result)
|
|
self.assertEqual(predicate(SubType.sub_class_met), not result)
|
|
self.assertEqual(predicate(SubType.sub_static_met), not result)
|
|
self.assertEqual(predicate(sub_type.sub_std_met), not result)
|
|
|
|
predicate = func(sub_type_name)
|
|
self.assertEqual(predicate(MainType.class_met), not result)
|
|
self.assertEqual(predicate(MainType.static_met), not result)
|
|
self.assertEqual(predicate(main_type.std_met), not result)
|
|
self.assertEqual(predicate(SubType.sub_class_met), result)
|
|
self.assertEqual(predicate(SubType.sub_static_met), result)
|
|
self.assertEqual(predicate(sub_type.sub_std_met), result)
|
|
|
|
def __test_func_name_is_in(self, negation: bool = False):
|
|
""" teste func_name_is_in et func_name_is_not_in """
|
|
|
|
func = func_name_is_not_in if negation else func_name_is_in
|
|
result = negation is not True
|
|
|
|
MainType = MyClass
|
|
main_type = MainType(11)
|
|
SubType = MyClass.MySubClass
|
|
sub_type = SubType(13)
|
|
|
|
def local_func(a: int, b: int):
|
|
return a + b
|
|
|
|
# fonction native
|
|
self.assertEqual(func('join')(str.join), result)
|
|
self.assertEqual(func('other', 'join')(str.join), result)
|
|
|
|
# autre fonction, fonction locale
|
|
self.assertEqual(func('local_func')(local_func), result)
|
|
self.assertEqual(func('other', 'local_func')(local_func), result)
|
|
self.assertEqual(func('my_func')(my_func), result)
|
|
self.assertEqual(func('other', 'my_func')(my_func), result)
|
|
|
|
|
|
# méthodes
|
|
predicate = func('class_met', 'std_met', 'sub_static_met')
|
|
self.assertEqual(predicate(MainType.class_met), result)
|
|
self.assertEqual(predicate(MainType.static_met), not result)
|
|
self.assertEqual(predicate(main_type.std_met), result)
|
|
self.assertEqual(predicate(SubType.sub_class_met), not result)
|
|
self.assertEqual(predicate(SubType.sub_static_met), result)
|
|
self.assertEqual(predicate(sub_type.sub_std_met), not result)
|
|
|
|
predicate = func('static_met', 'sub_class_met', 'sub_std_met')
|
|
self.assertEqual(predicate(MainType.class_met), not result)
|
|
self.assertEqual(predicate(MainType.static_met), result)
|
|
self.assertEqual(predicate(main_type.std_met), not result)
|
|
self.assertEqual(predicate(SubType.sub_class_met), result)
|
|
self.assertEqual(predicate(SubType.sub_static_met), not result)
|
|
self.assertEqual(predicate(sub_type.sub_std_met), result)
|
|
|
|
|
|
def test_func_class_name_is_in(self):
|
|
self.__test_func_class_name_is_in()
|
|
|
|
def test_func_class_name_is_not_in(self):
|
|
self.__test_func_class_name_is_in(negation=True)
|
|
|
|
def test_func_name_is_in(self):
|
|
self.__test_func_name_is_in()
|
|
|
|
def test_func_name_is_not_in(self):
|
|
self.__test_func_name_is_in(negation=True)
|
|
|
|
def test_func_is_public(self):
|
|
MainType = MyClass
|
|
main_type = MainType(11)
|
|
SubType = MyClass.MySubClass
|
|
sub_type = SubType(13)
|
|
|
|
def local_func(a: int, b: int):
|
|
return a + b
|
|
|
|
# fonction native
|
|
self.assertEqual(func_is_public(str.join), True)
|
|
|
|
# autre fonction, fonction locale
|
|
self.assertEqual(func_is_public(local_func), True)
|
|
self.assertEqual(func_is_public(my_func), True)
|
|
self.assertEqual(func_is_public(_my_private_func), False)
|
|
|
|
# méthodes
|
|
self.assertEqual(func_is_public(MainType._protected_met), False)
|
|
self.assertEqual(func_is_public(MainType.class_met), True)
|
|
self.assertEqual(func_is_public(MainType.static_met), True)
|
|
self.assertEqual(func_is_public(main_type.std_met), True)
|
|
self.assertEqual(func_is_public(SubType.sub_class_met), True)
|
|
self.assertEqual(func_is_public(SubType.sub_static_met), True)
|
|
self.assertEqual(func_is_public(sub_type.sub_std_met), True)
|