test_oinspect.py
89 lines
| 2.5 KiB
| text/x-python
|
PythonLexer
Fernando Perez
|
r3051 | """Tests for the object inspection functionality. | ||
""" | ||||
#----------------------------------------------------------------------------- | ||||
# Copyright (C) 2010 The IPython Development Team. | ||||
# | ||||
# Distributed under the terms of the BSD License. | ||||
# | ||||
# The full license is in the file COPYING.txt, distributed with this software. | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
from __future__ import print_function | ||||
# Stdlib imports | ||||
# Third-party imports | ||||
import nose.tools as nt | ||||
# Our own imports | ||||
from .. import oinspect | ||||
#----------------------------------------------------------------------------- | ||||
# Globals and constants | ||||
#----------------------------------------------------------------------------- | ||||
inspector = oinspect.Inspector() | ||||
#----------------------------------------------------------------------------- | ||||
# Local utilities | ||||
#----------------------------------------------------------------------------- | ||||
# A few generic objects we can then inspect in the tests below | ||||
class Call(object): | ||||
"""This is the class docstring.""" | ||||
def __init__(self, x, y=1): | ||||
"""This is the constructor docstring.""" | ||||
def __call__(self, *a, **kw): | ||||
"""This is the call docstring.""" | ||||
def method(self, x, z=2): | ||||
"""Some method's docstring""" | ||||
def f(x, y=2, *a, **kw): | ||||
"""A simple function.""" | ||||
def g(y, z=3, *a, **kw): | ||||
pass # no docstring | ||||
def check_calltip(obj, name, call, docstring): | ||||
"""Generic check pattern all calltip tests will use""" | ||||
info = inspector.info(obj, name) | ||||
call_line, ds = oinspect.call_tip(info) | ||||
nt.assert_equal(call_line, call) | ||||
nt.assert_equal(ds, docstring) | ||||
#----------------------------------------------------------------------------- | ||||
# Tests | ||||
#----------------------------------------------------------------------------- | ||||
def test_calltip_class(): | ||||
check_calltip(Call, 'Call', 'Call(x, y=1)', Call.__init__.__doc__) | ||||
def test_calltip_instance(): | ||||
c = Call(1) | ||||
check_calltip(c, 'c', 'c(*a, **kw)', c.__call__.__doc__) | ||||
def test_calltip_method(): | ||||
c = Call(1) | ||||
check_calltip(c.method, 'c.method', 'c.method(x, z=2)', c.method.__doc__) | ||||
def test_calltip_function(): | ||||
check_calltip(f, 'f', 'f(x, y=2, *a, **kw)', f.__doc__) | ||||
def test_calltip_function2(): | ||||
check_calltip(g, 'g', 'g(y, z=3, *a, **kw)', '<no docstring>') | ||||
def test_calltip_builtin(): | ||||
check_calltip(sum, 'sum', None, sum.__doc__) | ||||