#line to run: #java -classpath D:\bin\jython-2.1\jython.jar;D:\bin\eclipse331_1\plugins\org.junit_3.8.2.v200706111738\junit.jar;D:\bin\eclipse331_1\plugins\org.apache.ant_1.7.0.v200706080842\lib\ant.jar org.python.util.jython w:\org.python.pydev\pysrc\tests\test_jysimpleTipper.py import unittest import os import sys #this does not work (they must be in the system pythonpath) #sys.path.insert(1, r"D:\bin\eclipse321\plugins\org.junit_3.8.1\junit.jar" ) #some late loading jar tests #sys.path.insert(1, r"D:\bin\eclipse331_1\plugins\org.apache.ant_1.7.0.v200706080842\lib\ant.jar" ) #some late loading jar tests IS_JYTHON = 0 if sys.platform.find('java') != -1: IS_JYTHON = 1 from _pydev_jy_imports_tipper import ismethod from _pydev_jy_imports_tipper import isclass from _pydev_jy_imports_tipper import dirObj import _pydev_jy_imports_tipper from java.lang.reflect import Method #@UnresolvedImport from java.lang import System #@UnresolvedImport from java.lang import String #@UnresolvedImport from java.lang.System import arraycopy #@UnresolvedImport from java.lang.System import out #@UnresolvedImport import java.lang.String #@UnresolvedImport import org.python.core.PyDictionary #@UnresolvedImport __DBG = 0 def dbg(s): if __DBG: sys.stdout.write('%s\n' % (s,)) class TestMod(unittest.TestCase): def assertArgs(self, tok, args, tips): for a in tips: if tok == a[0]: self.assertEquals(args, a[2]) return raise AssertionError('%s not in %s', tok, tips) def assertIn(self, tok, tips): self.assertEquals(4, len(tips[0])) for a in tips: if tok == a[0]: return a s = '' for a in tips: s += str(a) s += '\n' raise AssertionError('%s not in %s' % (tok, s)) def testImports1a(self): f, tip = _pydev_jy_imports_tipper.GenerateTip('java.util.HashMap') assert f.endswith('rt.jar') def testImports1c(self): f, tip = _pydev_jy_imports_tipper.GenerateTip('java.lang.Class') assert f.endswith('rt.jar') def testImports1b(self): try: f, tip = _pydev_jy_imports_tipper.GenerateTip('__builtin__.m') self.fail('err') except: pass def testImports1(self): f, tip = _pydev_jy_imports_tipper.GenerateTip('junit.framework.TestCase') assert f.endswith('junit.jar') ret = self.assertIn('assertEquals', tip) # self.assertEquals('', ret[2]) def testImports2(self): f, tip = _pydev_jy_imports_tipper.GenerateTip('junit.framework') assert f.endswith('junit.jar') ret = self.assertIn('TestCase', tip) self.assertEquals('', ret[2]) def testImports2a(self): f, tip = _pydev_jy_imports_tipper.GenerateTip('org.apache.tools.ant') assert f.endswith('ant.jar') ret = self.assertIn('Task', tip) self.assertEquals('', ret[2]) def testImports3(self): f, tip = _pydev_jy_imports_tipper.GenerateTip('os') assert f.endswith('os.py') ret = self.assertIn('path', tip) self.assertEquals('', ret[2]) def testTipOnString(self): f, tip = _pydev_jy_imports_tipper.GenerateTip('string') self.assertIn('join', tip) self.assertIn('uppercase', tip) def testImports(self): tip = _pydev_jy_imports_tipper.GenerateTip('__builtin__')[1] self.assertIn('tuple' , tip) self.assertIn('RuntimeError' , tip) self.assertIn('RuntimeWarning' , tip) def testImports5(self): f, tip = _pydev_jy_imports_tipper.GenerateTip('java.lang') assert f.endswith('rt.jar') tup = self.assertIn('String' , tip) self.assertEquals(str(_pydev_jy_imports_tipper.TYPE_CLASS), tup[3]) tip = _pydev_jy_imports_tipper.GenerateTip('java')[1] tup = self.assertIn('lang' , tip) self.assertEquals(str(_pydev_jy_imports_tipper.TYPE_IMPORT), tup[3]) tip = _pydev_jy_imports_tipper.GenerateTip('java.lang.String')[1] tup = self.assertIn('indexOf' , tip) self.assertEquals(str(_pydev_jy_imports_tipper.TYPE_FUNCTION), tup[3]) tip = _pydev_jy_imports_tipper.GenerateTip('java.lang.String')[1] tup = self.assertIn('charAt' , tip) self.assertEquals(str(_pydev_jy_imports_tipper.TYPE_FUNCTION), tup[3]) self.assertEquals('(int)', tup[2]) tup = self.assertIn('format' , tip) self.assertEquals(str(_pydev_jy_imports_tipper.TYPE_FUNCTION), tup[3]) self.assertEquals('(string, objectArray)', tup[2]) self.assert_(tup[1].find('[Ljava.lang.Object;') == -1) tup = self.assertIn('getBytes' , tip) self.assertEquals(str(_pydev_jy_imports_tipper.TYPE_FUNCTION), tup[3]) self.assert_(tup[1].find('[B') == -1) self.assert_(tup[1].find('byte[]') != -1) f, tip = _pydev_jy_imports_tipper.GenerateTip('__builtin__.str') assert f.endswith('jython.jar') self.assertIn('find' , tip) f, tip = _pydev_jy_imports_tipper.GenerateTip('__builtin__.dict') assert f.endswith('jython.jar') self.assertIn('get' , tip) class TestSearch(unittest.TestCase): def testSearchOnJython(self): self.assertEqual('javaos.py', _pydev_jy_imports_tipper.Search('os')[0][0].split(os.sep)[-1]) self.assertEqual(0, _pydev_jy_imports_tipper.Search('os')[0][1]) self.assertEqual('javaos.py', _pydev_jy_imports_tipper.Search('os.makedirs')[0][0].split(os.sep)[-1]) self.assertNotEqual(0, _pydev_jy_imports_tipper.Search('os.makedirs')[0][1]) #print _pydev_jy_imports_tipper.Search('os.makedirs') class TestCompl(unittest.TestCase): def setUp(self): unittest.TestCase.setUp(self) def tearDown(self): unittest.TestCase.tearDown(self) def testGettingInfoOnJython(self): dbg('\n\n--------------------------- java') assert not ismethod(java)[0] assert not isclass(java) assert _pydev_jy_imports_tipper.ismodule(java) dbg('\n\n--------------------------- java.lang') assert not ismethod(java.lang)[0] assert not isclass(java.lang) assert _pydev_jy_imports_tipper.ismodule(java.lang) dbg('\n\n--------------------------- Method') assert not ismethod(Method)[0] assert isclass(Method) dbg('\n\n--------------------------- System') assert not ismethod(System)[0] assert isclass(System) dbg('\n\n--------------------------- String') assert not ismethod(System)[0] assert isclass(String) assert len(dirObj(String)) > 10 dbg('\n\n--------------------------- arraycopy') isMet = ismethod(arraycopy) assert isMet[0] assert isMet[1][0].basicAsStr() == "function:arraycopy args=['java.lang.Object', 'int', 'java.lang.Object', 'int', 'int'], varargs=None, kwargs=None, docs:None" assert not isclass(arraycopy) dbg('\n\n--------------------------- out') isMet = ismethod(out) assert not isMet[0] assert not isclass(out) dbg('\n\n--------------------------- out.println') isMet = ismethod(out.println) #@UndefinedVariable assert isMet[0] assert len(isMet[1]) == 10 self.assertEquals(isMet[1][0].basicAsStr(), "function:println args=[], varargs=None, kwargs=None, docs:None") assert isMet[1][1].basicAsStr() == "function:println args=['long'], varargs=None, kwargs=None, docs:None" assert not isclass(out.println) #@UndefinedVariable dbg('\n\n--------------------------- str') isMet = ismethod(str) #the code below should work, but is failing on jython 22a1 #assert isMet[0] #assert isMet[1][0].basicAsStr() == "function:str args=['org.python.core.PyObject'], varargs=None, kwargs=None, docs:None" assert not isclass(str) def met1(): a = 3 return a dbg('\n\n--------------------------- met1') isMet = ismethod(met1) assert isMet[0] assert isMet[1][0].basicAsStr() == "function:met1 args=[], varargs=None, kwargs=None, docs:None" assert not isclass(met1) def met2(arg1, arg2, *vararg, **kwarg): '''docmet2''' a = 1 return a dbg('\n\n--------------------------- met2') isMet = ismethod(met2) assert isMet[0] assert isMet[1][0].basicAsStr() == "function:met2 args=['arg1', 'arg2'], varargs=vararg, kwargs=kwarg, docs:docmet2" assert not isclass(met2) if not IS_JYTHON: # Disable tests if not running under Jython class TestMod(unittest.TestCase): pass class TestCompl(TestMod): pass class TestSearch(TestMod): pass if __name__ == '__main__': #Only run if jython suite = unittest.makeSuite(TestCompl) suite2 = unittest.makeSuite(TestMod) suite3 = unittest.makeSuite(TestSearch) unittest.TextTestRunner(verbosity=1).run(suite) unittest.TextTestRunner(verbosity=1).run(suite2) unittest.TextTestRunner(verbosity=1).run(suite3)