RandomSec/lib/jython-2.5.1/test/test_ast_jy.py
Vishal Talwar d0df704d8a added python code part of jython distribution in lib/jython-2.5.1
added python.path vm arg to startup script
fixed infinite loop in unwrap() when displaying sequences of sequences



git-svn-id: http://google-refine.googlecode.com/svn/trunk@509 7d457c2a-affb-35e4-300a-418c747d4874
2010-04-20 18:50:24 +00:00

157 lines
4.2 KiB
Python

"""Extra unittests for ast in Jython. Look to integrate into CPython in the
future"""
import unittest
import ast
from test import test_support
def srcExprToTree(source, kind='exec'):
return compile(source, '<module>', kind, ast.PyCF_ONLY_AST)
class TestCompile(unittest.TestCase):
def test_compile_ast(self):
node = srcExprToTree("1/2")
compile(node, "<string>", 'exec')
def test_alias_trim(self):
node = srcExprToTree("import os. path")
self.assertEquals(node.body[0].names[0].name, "os.path")
node = srcExprToTree("import os .path")
self.assertEquals(node.body[0].names[0].name, "os.path")
node = srcExprToTree("import os . path")
self.assertEquals(node.body[0].names[0].name, "os.path")
def test_cmpop(self):
expr = srcExprToTree('a < b < c', 'eval')
compare = expr.body
self.assert_(isinstance(compare.ops[0], ast.Lt))
self.assert_(isinstance(compare.comparators[0], ast.Name))
self.assert_(isinstance(compare.ops[1], ast.Lt))
self.assert_(isinstance(compare.comparators[1], ast.Name))
self.assert_(isinstance(compare.ops[1:][0], ast.Lt))
self.assert_(isinstance(compare.comparators[1:][0], ast.Name))
z = zip( compare.ops[1:], compare.comparators[1:])
self.assert_(isinstance(z[0][0], ast.Lt))
self.assert_(isinstance(z[0][1], ast.Name))
def test_empty_init(self):
# Jython 2.5.0 did not allow empty constructors for many ast node types
# but CPython ast nodes do allow this. For the moment, I don't see a
# reason to allow construction of the super types (like ast.AST and
# ast.stmt) as well as the op types that are implemented as enums in
# Jython (like boolop), but I've left them in but commented out for
# now. We may need them in the future since CPython allows this, but
# it may fall under implementation detail.
#ast.AST()
ast.Add()
ast.And()
ast.Assert()
ast.Assign()
ast.Attribute()
ast.AugAssign()
ast.AugLoad()
ast.AugStore()
ast.BinOp()
ast.BitAnd()
ast.BitOr()
ast.BitXor()
ast.BoolOp()
ast.Break()
ast.Call()
ast.ClassDef()
ast.Compare()
ast.Continue()
ast.Del()
ast.Delete()
ast.Dict()
ast.Div()
ast.Ellipsis()
ast.Eq()
ast.Exec()
ast.Expr()
ast.Expression()
ast.ExtSlice()
ast.FloorDiv()
ast.For()
ast.FunctionDef()
ast.GeneratorExp()
ast.Global()
ast.Gt()
ast.GtE()
ast.If()
ast.IfExp()
ast.Import()
ast.ImportFrom()
ast.In()
ast.Index()
ast.Interactive()
ast.Invert()
ast.Is()
ast.IsNot()
ast.LShift()
ast.Lambda()
ast.List()
ast.ListComp()
ast.Load()
ast.Lt()
ast.LtE()
ast.Mod()
ast.Module()
ast.Mult()
ast.Name()
ast.Not()
ast.NotEq()
ast.NotIn()
ast.Num()
ast.Or()
ast.Param()
ast.Pass()
ast.Pow()
ast.Print()
ast.RShift()
ast.Raise()
ast.Repr()
ast.Return()
ast.Slice()
ast.Store()
ast.Str()
ast.Sub()
ast.Subscript()
ast.Suite()
ast.TryExcept()
ast.TryFinally()
ast.Tuple()
ast.UAdd()
ast.USub()
ast.UnaryOp()
ast.While()
ast.With()
ast.Yield()
ast.alias()
ast.arguments()
#ast.boolop()
#ast.cmpop()
ast.comprehension()
#ast.excepthandler()
#ast.expr()
#ast.expr_context()
ast.keyword()
#ast.mod()
#ast.operator()
#ast.slice()
#ast.stmt()
#ast.unaryop()
#==============================================================================
def test_main(verbose=None):
test_classes = [TestCompile]
test_support.run_unittest(*test_classes)
if __name__ == "__main__":
test_main(verbose=True)