All Downloads are FREE. Search and download functionalities are using the official Maven repository.

Lib.test.test_ast_jy.py Maven / Gradle / Ivy

Go to download

Jython is an implementation of the high-level, dynamic, object-oriented language Python written in 100% Pure Java, and seamlessly integrated with the Java platform. It thus allows you to run Python on any Java platform.

The newest version!
"""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, '', kind, ast.PyCF_ONLY_AST)

class TestCompile(unittest.TestCase):

    def test_compile_ast(self):
        node = srcExprToTree("1/2")
        compile(node, "", '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)




© 2015 - 2025 Weber Informatics LLC | Privacy Policy