blob: 255a5218698f43c1a3d19be5e2995b6875ea5622 [file] [log] [blame]
'''
@author Fabio Zadrozny
'''
import sys
try:
import __builtin__ #@UnusedImport
BUILTIN_MOD = '__builtin__'
except ImportError:
BUILTIN_MOD = 'builtins'
if sys.platform.find('java') == -1:
HAS_WX = False
import unittest
import _pydev_imports_tipper
import inspect
class Test(unittest.TestCase):
def p(self, t):
for a in t:
sys.stdout.write('%s\n' % (a,))
def testImports3(self):
tip = _pydev_imports_tipper.GenerateTip('os')
ret = self.assertIn('path', tip)
self.assertEquals('', ret[2])
def testImports2(self):
try:
tip = _pydev_imports_tipper.GenerateTip('OpenGL.GLUT')
self.assertIn('glutDisplayFunc', tip)
self.assertIn('glutInitDisplayMode', tip)
except ImportError:
pass
def testImports4(self):
try:
tip = _pydev_imports_tipper.GenerateTip('mx.DateTime.mxDateTime.mxDateTime')
self.assertIn('now', tip)
except ImportError:
pass
def testImports5(self):
tip = _pydev_imports_tipper.GenerateTip('%s.list' % BUILTIN_MOD)
s = self.assertIn('sort', tip)
self.CheckArgs(
s,
'(cmp=None, key=None, reverse=False)',
'(self, object cmp, object key, bool reverse)',
'(self, cmp: object, key: object, reverse: bool)',
'(key=None, reverse=False)',
)
def testImports2a(self):
tips = _pydev_imports_tipper.GenerateTip('%s.RuntimeError' % BUILTIN_MOD)
self.assertIn('__doc__', tips)
def testImports2b(self):
try:
file
except:
pass
else:
tips = _pydev_imports_tipper.GenerateTip('%s' % BUILTIN_MOD)
t = self.assertIn('file' , tips)
self.assert_('->' in t[1].strip() or 'file' in t[1])
def testImports2c(self):
try:
file # file is not available on py 3
except:
pass
else:
tips = _pydev_imports_tipper.GenerateTip('%s.file' % BUILTIN_MOD)
t = self.assertIn('readlines' , tips)
self.assert_('->' in t[1] or 'sizehint' in t[1])
def testImports(self):
'''
You can print_ the results to check...
'''
if HAS_WX:
tip = _pydev_imports_tipper.GenerateTip('wxPython.wx')
self.assertIn('wxApp' , tip)
tip = _pydev_imports_tipper.GenerateTip('wxPython.wx.wxApp')
try:
tip = _pydev_imports_tipper.GenerateTip('qt')
self.assertIn('QWidget' , tip)
self.assertIn('QDialog' , tip)
tip = _pydev_imports_tipper.GenerateTip('qt.QWidget')
self.assertIn('rect' , tip)
self.assertIn('rect' , tip)
self.assertIn('AltButton' , tip)
tip = _pydev_imports_tipper.GenerateTip('qt.QWidget.AltButton')
self.assertIn('__xor__' , tip)
tip = _pydev_imports_tipper.GenerateTip('qt.QWidget.AltButton.__xor__')
self.assertIn('__class__' , tip)
except ImportError:
pass
tip = _pydev_imports_tipper.GenerateTip(BUILTIN_MOD)
# for t in tip[1]:
# print_ t
self.assertIn('object' , tip)
self.assertIn('tuple' , tip)
self.assertIn('list' , tip)
self.assertIn('RuntimeError' , tip)
self.assertIn('RuntimeWarning' , tip)
# Remove cmp as it's not available on py 3
#t = self.assertIn('cmp' , tip)
#self.CheckArgs(t, '(x, y)', '(object x, object y)', '(x: object, y: object)') #args
t = self.assertIn('isinstance' , tip)
self.CheckArgs(t, '(object, class_or_type_or_tuple)', '(object o, type typeinfo)', '(o: object, typeinfo: type)') #args
t = self.assertIn('compile' , tip)
self.CheckArgs(t, '(source, filename, mode)', '()', '(o: object, name: str, val: object)') #args
t = self.assertIn('setattr' , tip)
self.CheckArgs(t, '(object, name, value)', '(object o, str name, object val)', '(o: object, name: str, val: object)') #args
try:
import compiler
compiler_module = 'compiler'
except ImportError:
try:
import ast
compiler_module = 'ast'
except ImportError:
compiler_module = None
if compiler_module is not None: #Not available in iron python
tip = _pydev_imports_tipper.GenerateTip(compiler_module)
if compiler_module == 'compiler':
self.assertArgs('parse', '(buf, mode)', tip)
self.assertArgs('walk', '(tree, visitor, walker, verbose)', tip)
self.assertIn('parseFile' , tip)
else:
self.assertArgs('parse', '(source, filename, mode)', tip)
self.assertArgs('walk', '(node)', tip)
self.assertIn('parse' , tip)
def CheckArgs(self, t, *expected):
for x in expected:
if x == t[2]:
return
self.fail('Found: %s. Expected: %s' % (t[2], expected))
def assertArgs(self, tok, args, tips):
for a in tips[1]:
if tok == a[0]:
self.assertEquals(args, a[2])
return
raise AssertionError('%s not in %s', tok, tips)
def assertIn(self, tok, tips):
for a in tips[1]:
if tok == a[0]:
return a
raise AssertionError('%s not in %s' % (tok, tips))
def testSearch(self):
s = _pydev_imports_tipper.Search('inspect.ismodule')
(f, line, col), foundAs = s
self.assert_(line > 0)
def testDotNetLibraries(self):
if sys.platform == 'cli':
tip = _pydev_imports_tipper.GenerateTip('System.Drawing')
self.assertIn('Brushes' , tip)
tip = _pydev_imports_tipper.GenerateTip('System.Drawing.Brushes')
self.assertIn('Aqua' , tip)
def testInspect(self):
class C(object):
def metA(self, a, b):
pass
obj = C.metA
if inspect.ismethod (obj):
pass
# print_ obj.im_func
# print_ inspect.getargspec(obj.im_func)
def suite():
s = unittest.TestSuite()
s.addTest(Test("testImports5"))
unittest.TextTestRunner(verbosity=2).run(s)
if __name__ == '__main__':
if sys.platform.find('java') == -1:
# suite()
unittest.main()
else:
sys.stdout.write('Not running python tests in platform: %s\n' % (sys.platform,))