def test_get_origin(self): class FooBar: @property def test(self): return self.assertEqual("test", ObjInfo(FooBar.test).name) self.assertEqual("test", ObjInfo.get_origin(FooBar.test).__name__)
def test_doc(self): def foo(): """ bar hello """ self.assertEqual("bar\nhello", ObjInfo(foo).doc(only_first_line=False)) self.assertEqual("bar", ObjInfo(foo).doc(only_first_line=True)) self.assertRaises(AttributeError, ObjInfo(foo).doc, require_sentence=True) def empty(): pass self.assertEqual("", ObjInfo(empty).doc(only_first_line=False)) self.assertEqual("", ObjInfo(empty).doc(only_first_line=True)) self.assertRaises(AttributeError, ObjInfo(empty).doc, require_sentence=True) def proper(): """ Proper. """ self.assertEqual("Proper.", ObjInfo(proper).doc(only_first_line=False)) self.assertEqual("Proper.", ObjInfo(proper).doc(only_first_line=True)) self.assertEqual("Proper.", ObjInfo(proper).doc(require_sentence=True))
def test_repr(self): objInfo = ObjInfo(_Foo) self.assertEqual(True, "_Foo" in repr(objInfo)) self.assertEqual(True, "Class" in repr(objInfo))
def test_identifier(self): self.assertEqual(ObjInfo(_Foo).identifier(), ObjInfo(_Foo).identifier())
def test_get_definition_line(self): self.assertEqual(9, ObjInfo(ObjectTest).get_definition_line())
def test_origins(self): self.assertEqual(True, ObjInfo(_Foo.self).from_class()) self.assertEqual(True, ObjInfo(_Bar.self).from_class()) self.assertEqual(False, ObjInfo(_Bar.uhm).from_base()) self.assertEqual(False, ObjInfo(_Bar.uhm).from_builtin()) self.assertEqual(True, ObjInfo("".startswith).from_builtin()) self.assertEqual(False, ObjInfo(_Bar.attr).from_instance()) self.assertEqual(True, ObjInfo(_Bar).from_module()) self.assertEqual(False, ObjInfo(_Bar.self).from_module()) objInfo = ObjInfo(_Bar()) self.assertEqual(True, objInfo.get_child(filt=lambda node: node.name == "instance_var", traverse_excluded=True).from_instance()) self.assertEqual(True, objInfo.get_child(filt=lambda node: node.name == "self", traverse_excluded=True).from_base())
def test_file(self): self.assertEqual("test_object.py", ObjInfo(_Foo).file(relative=True)) self.assertEqual("test_object.py", ObjInfo(_Foo.self).file(relative=True))
def test_check_if_parent_eligible(self): self.assertEqual(True, ObjInfo.check_if_parent_eligible(sys.modules["test_object"], _Foo, "_Foo")) self.assertEqual(False, ObjInfo.check_if_parent_eligible(sys.modules["test_object"], _Foo, "Foo")) self.assertEqual(False, ObjInfo.check_if_parent_eligible(sys.modules["test_object"], _Foo.self, "self")) self.assertEqual(True, ObjInfo.check_if_parent_eligible(_Foo, _Foo.self, "self"))
def test_ObjInfo_protected(self): objInfo = ObjInfo(_Foo) objInfo.children_states = {} self.assertEqual(True, objInfo.get_child(filt=lambda node: node.name == "_self", traverse_excluded=True).protected()) self.assertEqual(False, objInfo.get_child(filt=lambda node: node.name == "self", traverse_excluded=True).protected()) self.assertEqual(True, objInfo.get_child(filt=lambda node: node.name == "_attr", traverse_excluded=True).protected()) self.assertEqual(False, objInfo.get_child(filt=lambda node: node.name == "attr", traverse_excluded=True).protected()) self.assertEqual(False, objInfo.get_child(filt=lambda node: node.name == "_Foo__private", traverse_excluded=True).protected()) self.assertEqual(True, objInfo.get_child(filt=lambda node: node.name == "_Foo__private", traverse_excluded=True).private()) self.assertEqual(True, objInfo.get_child(filt=lambda node: node.name == "_Foo__private", traverse_excluded=True).internal()) self.assertEqual(False, objInfo.get_child(filt=lambda node: node.name == "_Foo__private", traverse_excluded=True).public()) self.assertEqual(False, ObjInfo(a).protected()) self.assertEqual(False, ObjInfo(a()).protected())
def test_ObjInfo_parents(self): objInfo = ObjInfo(ObjInfo) self.assertEqual("generallibrary", objInfo.get_parent(depth=-1, index=-1).obj.__name__)
def test_ObjInfo(self): def check(bound_method): """ Check that the correct method is True and all other are False. """ objInfo = getattr(bound_method, "__self__") for name, method in objInfo.type_methods.items(): method_is_bound_method = bound_method == getattr(objInfo, name) result = method(self=objInfo) if result is not method_is_bound_method: raise AssertionError(f"{objInfo.obj} returns {result} for {name}.") check(ObjInfo(unittest).is_module) check(ObjInfo(a).is_function) check(ObjInfo(a()).is_function) check(ObjInfo(_Foo).is_class) check(ObjInfo(_Foo()).is_instance) check(ObjInfo(_Foo._self).is_method) check(ObjInfo(_Foo()._self).is_method) check(ObjInfo(_Foo._cls).is_method) check(ObjInfo(_Foo()._cls).is_method) check(ObjInfo(_Foo._static).is_method) check(ObjInfo(_Foo()._static).is_method) check(ObjInfo(_Foo._property).is_property)