test_joverload.py
来自「mallet是自然语言处理、机器学习领域的一个开源项目。」· Python 代码 · 共 139 行
PY
139 行
# test overloaded java methods dispatch logic in PyReflectedFunction# needs to grow more tests. Uses javatests.JOverload as a bag of overloaded methods.# (can be adapted to test alternative re-implemations even while they are developed# write a *Envl class and change/add to to_test for that)import unittestimport javaimport org.python.coreclass PyReflFuncEnvl: def __init__(self,name,meths): self.reflfunc = org.python.core.PyReflectedFunction(name) for meth in meths: self.reflfunc.addMethod(meth) def __call__(self,inst,args): return self.reflfunc(inst,*args)def extract_ov_meths(jcl,envl_class): meths = java.lang.Class.getDeclaredMethods(jcl) names = [ m.name for m in meths] meth_dict = {} for name in names: if name.startswith('ov_') and not meth_dict.has_key(name): meth_dict[name] = envl_class(name,[ m for m in meths if m.name == name ]) return meth_dictfrom javatests import JOverloadjo = JOverload()to_test = [extract_ov_meths(JOverload,PyReflFuncEnvl)]class OverloadedDispatchTests(unittest.TestCase): def check(self,lbl,rng,args,expected): expected = expected.split() for meth_dict in to_test: for i,expect in zip(rng,expected): self.assertEqual(meth_dict['ov_%s%s' % (lbl,i)](jo,args),expect) def test_posprec(self): self.check('posprec',[1,2],[0,0], "(int,long) (long,int)") def test_scal_int_zero(self): self.check('scal',xrange(1,15),[0], """(long)(int)(short)(byte)(byte)(double)(float)(boolean)(java.io.Serializable)(java.io.Serializable)(java.io.Serializable)(java.io.Serializable)(java.io.Serializable)(java.lang.Object) """) def test_scal_string(self): self.check('scal',xrange(1,15),['str'], """(java.lang.String)(java.lang.String)(java.lang.String)(java.lang.String)(java.lang.String)(java.lang.String)(java.lang.String)(java.lang.String)(java.lang.String)(java.io.Serializable)(java.io.Serializable)(java.io.Serializable)(java.io.Serializable)(java.lang.Object) """) def test_scal_char(self): self.check('scal',xrange(1,15),['c'], """(char)(char)(char)(char)(java.lang.String)(java.lang.String)(java.lang.String)(java.lang.String)(java.lang.String)(java.io.Serializable)(java.io.Serializable)(java.io.Serializable)(java.io.Serializable)(java.lang.Object) """) def test_scal_float_one(self): self.check('scal',xrange(1,15),[1.0], """(double)(double)(double)(double)(double)(double)(float)(java.io.Serializable)(java.io.Serializable)(java.io.Serializable)(java.io.Serializable)(java.io.Serializable)(java.io.Serializable)(java.lang.Object) """)def printout(meth_dict,lbl,rng,args): for i in rng: print meth_dict['ov_%s%s' % (lbl,i)](jo,args)import sysif __name__ == '__main__' and not sys.argv[1:] == ['break-out']: try: import test_support except ImportError: unittest.main() else: test_support.run_unittest(OverloadedDispatchTests)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?