Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(243)

Side by Side Diff: third_party/cython/src/Cython/Compiler/Tests/TestTreePath.py

Issue 385073004: Adding cython v0.20.2 in third-party. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Reference cython dev list thread. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 import unittest
2 from Cython.Compiler.Visitor import PrintTree
3 from Cython.TestUtils import TransformTest
4 from Cython.Compiler.TreePath import find_first, find_all
5 from Cython.Compiler import Nodes, ExprNodes
6
7 class TestTreePath(TransformTest):
8 _tree = None
9
10 def _build_tree(self):
11 if self._tree is None:
12 self._tree = self.run_pipeline([], u"""
13 def decorator(fun): # DefNode
14 return fun # ReturnStatNode, NameNode
15 @decorator # NameNode
16 def decorated(): # DefNode
17 pass
18 """)
19 return self._tree
20
21 def test_node_path(self):
22 t = self._build_tree()
23 self.assertEquals(2, len(find_all(t, "//DefNode")))
24 self.assertEquals(2, len(find_all(t, "//NameNode")))
25 self.assertEquals(1, len(find_all(t, "//ReturnStatNode")))
26 self.assertEquals(1, len(find_all(t, "//DefNode//ReturnStatNode")))
27
28 def test_node_path_star(self):
29 t = self._build_tree()
30 self.assertEquals(10, len(find_all(t, "//*")))
31 self.assertEquals(8, len(find_all(t, "//DefNode//*")))
32 self.assertEquals(0, len(find_all(t, "//NameNode//*")))
33
34 def test_node_path_attribute(self):
35 t = self._build_tree()
36 self.assertEquals(2, len(find_all(t, "//NameNode/@name")))
37 self.assertEquals(['fun', 'decorator'], find_all(t, "//NameNode/@name"))
38
39 def test_node_path_attribute_dotted(self):
40 t = self._build_tree()
41 self.assertEquals(1, len(find_all(t, "//ReturnStatNode/@value.name")))
42 self.assertEquals(['fun'], find_all(t, "//ReturnStatNode/@value.name"))
43
44 def test_node_path_child(self):
45 t = self._build_tree()
46 self.assertEquals(1, len(find_all(t, "//DefNode/ReturnStatNode/NameNode" )))
47 self.assertEquals(1, len(find_all(t, "//ReturnStatNode/NameNode")))
48
49 def test_node_path_node_predicate(self):
50 t = self._build_tree()
51 self.assertEquals(0, len(find_all(t, "//DefNode[.//ForInStatNode]")))
52 self.assertEquals(2, len(find_all(t, "//DefNode[.//NameNode]")))
53 self.assertEquals(1, len(find_all(t, "//ReturnStatNode[./NameNode]")))
54 self.assertEquals(Nodes.ReturnStatNode,
55 type(find_first(t, "//ReturnStatNode[./NameNode]")))
56
57 def test_node_path_node_predicate_step(self):
58 t = self._build_tree()
59 self.assertEquals(2, len(find_all(t, "//DefNode[.//NameNode]")))
60 self.assertEquals(8, len(find_all(t, "//DefNode[.//NameNode]//*")))
61 self.assertEquals(1, len(find_all(t, "//DefNode[.//NameNode]//ReturnStat Node")))
62 self.assertEquals(Nodes.ReturnStatNode,
63 type(find_first(t, "//DefNode[.//NameNode]//ReturnStat Node")))
64
65 def test_node_path_attribute_exists(self):
66 t = self._build_tree()
67 self.assertEquals(2, len(find_all(t, "//NameNode[@name]")))
68 self.assertEquals(ExprNodes.NameNode,
69 type(find_first(t, "//NameNode[@name]")))
70
71 def test_node_path_attribute_exists_not(self):
72 t = self._build_tree()
73 self.assertEquals(0, len(find_all(t, "//NameNode[not(@name)]")))
74 self.assertEquals(2, len(find_all(t, "//NameNode[not(@honking)]")))
75
76 def test_node_path_and(self):
77 t = self._build_tree()
78 self.assertEquals(1, len(find_all(t, "//DefNode[.//ReturnStatNode and ./ /NameNode]")))
79 self.assertEquals(0, len(find_all(t, "//NameNode[@honking and @name]")))
80 self.assertEquals(0, len(find_all(t, "//NameNode[@name and @honking]")))
81 self.assertEquals(2, len(find_all(t, "//DefNode[.//NameNode[@name] and @ name]")))
82
83 def test_node_path_attribute_string_predicate(self):
84 t = self._build_tree()
85 self.assertEquals(1, len(find_all(t, "//NameNode[@name = 'decorator']")) )
86
87 def test_node_path_recursive_predicate(self):
88 t = self._build_tree()
89 self.assertEquals(2, len(find_all(t, "//DefNode[.//NameNode[@name]]")))
90 self.assertEquals(1, len(find_all(t, "//DefNode[.//NameNode[@name = 'dec orator']]")))
91 self.assertEquals(1, len(find_all(t, "//DefNode[.//ReturnStatNode[./Name Node[@name = 'fun']]/NameNode]")))
92
93 if __name__ == '__main__':
94 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698