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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: third_party/cython/src/Cython/Compiler/Tests/TestTreePath.py
diff --git a/third_party/cython/src/Cython/Compiler/Tests/TestTreePath.py b/third_party/cython/src/Cython/Compiler/Tests/TestTreePath.py
new file mode 100644
index 0000000000000000000000000000000000000000..9b8ca38bce4a51dbf9c052e6537391397cfd0ed7
--- /dev/null
+++ b/third_party/cython/src/Cython/Compiler/Tests/TestTreePath.py
@@ -0,0 +1,94 @@
+import unittest
+from Cython.Compiler.Visitor import PrintTree
+from Cython.TestUtils import TransformTest
+from Cython.Compiler.TreePath import find_first, find_all
+from Cython.Compiler import Nodes, ExprNodes
+
+class TestTreePath(TransformTest):
+ _tree = None
+
+ def _build_tree(self):
+ if self._tree is None:
+ self._tree = self.run_pipeline([], u"""
+ def decorator(fun): # DefNode
+ return fun # ReturnStatNode, NameNode
+ @decorator # NameNode
+ def decorated(): # DefNode
+ pass
+ """)
+ return self._tree
+
+ def test_node_path(self):
+ t = self._build_tree()
+ self.assertEquals(2, len(find_all(t, "//DefNode")))
+ self.assertEquals(2, len(find_all(t, "//NameNode")))
+ self.assertEquals(1, len(find_all(t, "//ReturnStatNode")))
+ self.assertEquals(1, len(find_all(t, "//DefNode//ReturnStatNode")))
+
+ def test_node_path_star(self):
+ t = self._build_tree()
+ self.assertEquals(10, len(find_all(t, "//*")))
+ self.assertEquals(8, len(find_all(t, "//DefNode//*")))
+ self.assertEquals(0, len(find_all(t, "//NameNode//*")))
+
+ def test_node_path_attribute(self):
+ t = self._build_tree()
+ self.assertEquals(2, len(find_all(t, "//NameNode/@name")))
+ self.assertEquals(['fun', 'decorator'], find_all(t, "//NameNode/@name"))
+
+ def test_node_path_attribute_dotted(self):
+ t = self._build_tree()
+ self.assertEquals(1, len(find_all(t, "//ReturnStatNode/@value.name")))
+ self.assertEquals(['fun'], find_all(t, "//ReturnStatNode/@value.name"))
+
+ def test_node_path_child(self):
+ t = self._build_tree()
+ self.assertEquals(1, len(find_all(t, "//DefNode/ReturnStatNode/NameNode")))
+ self.assertEquals(1, len(find_all(t, "//ReturnStatNode/NameNode")))
+
+ def test_node_path_node_predicate(self):
+ t = self._build_tree()
+ self.assertEquals(0, len(find_all(t, "//DefNode[.//ForInStatNode]")))
+ self.assertEquals(2, len(find_all(t, "//DefNode[.//NameNode]")))
+ self.assertEquals(1, len(find_all(t, "//ReturnStatNode[./NameNode]")))
+ self.assertEquals(Nodes.ReturnStatNode,
+ type(find_first(t, "//ReturnStatNode[./NameNode]")))
+
+ def test_node_path_node_predicate_step(self):
+ t = self._build_tree()
+ self.assertEquals(2, len(find_all(t, "//DefNode[.//NameNode]")))
+ self.assertEquals(8, len(find_all(t, "//DefNode[.//NameNode]//*")))
+ self.assertEquals(1, len(find_all(t, "//DefNode[.//NameNode]//ReturnStatNode")))
+ self.assertEquals(Nodes.ReturnStatNode,
+ type(find_first(t, "//DefNode[.//NameNode]//ReturnStatNode")))
+
+ def test_node_path_attribute_exists(self):
+ t = self._build_tree()
+ self.assertEquals(2, len(find_all(t, "//NameNode[@name]")))
+ self.assertEquals(ExprNodes.NameNode,
+ type(find_first(t, "//NameNode[@name]")))
+
+ def test_node_path_attribute_exists_not(self):
+ t = self._build_tree()
+ self.assertEquals(0, len(find_all(t, "//NameNode[not(@name)]")))
+ self.assertEquals(2, len(find_all(t, "//NameNode[not(@honking)]")))
+
+ def test_node_path_and(self):
+ t = self._build_tree()
+ self.assertEquals(1, len(find_all(t, "//DefNode[.//ReturnStatNode and .//NameNode]")))
+ self.assertEquals(0, len(find_all(t, "//NameNode[@honking and @name]")))
+ self.assertEquals(0, len(find_all(t, "//NameNode[@name and @honking]")))
+ self.assertEquals(2, len(find_all(t, "//DefNode[.//NameNode[@name] and @name]")))
+
+ def test_node_path_attribute_string_predicate(self):
+ t = self._build_tree()
+ self.assertEquals(1, len(find_all(t, "//NameNode[@name = 'decorator']")))
+
+ def test_node_path_recursive_predicate(self):
+ t = self._build_tree()
+ self.assertEquals(2, len(find_all(t, "//DefNode[.//NameNode[@name]]")))
+ self.assertEquals(1, len(find_all(t, "//DefNode[.//NameNode[@name = 'decorator']]")))
+ self.assertEquals(1, len(find_all(t, "//DefNode[.//ReturnStatNode[./NameNode[@name = 'fun']]/NameNode]")))
+
+if __name__ == '__main__':
+ unittest.main()

Powered by Google App Engine
This is Rietveld 408576698