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

Unified Diff: third_party/cython/src/Cython/Compiler/Tests/TestVisitor.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/TestVisitor.py
diff --git a/third_party/cython/src/Cython/Compiler/Tests/TestVisitor.py b/third_party/cython/src/Cython/Compiler/Tests/TestVisitor.py
new file mode 100644
index 0000000000000000000000000000000000000000..dbc8e0c03ab957b92397635f6cdd9a488006fb42
--- /dev/null
+++ b/third_party/cython/src/Cython/Compiler/Tests/TestVisitor.py
@@ -0,0 +1,61 @@
+from Cython.Compiler.ModuleNode import ModuleNode
+from Cython.Compiler.Symtab import ModuleScope
+from Cython.TestUtils import TransformTest
+from Cython.Compiler.Visitor import MethodDispatcherTransform
+from Cython.Compiler.ParseTreeTransforms import (
+ NormalizeTree, AnalyseDeclarationsTransform,
+ AnalyseExpressionsTransform, InterpretCompilerDirectives)
+
+
+class TestMethodDispatcherTransform(TransformTest):
+ _tree = None
+
+ def _build_tree(self):
+ if self._tree is None:
+ context = None
+
+ def fake_module(node):
+ scope = ModuleScope('test', None, None)
+ return ModuleNode(node.pos, doc=None, body=node,
+ scope=scope, full_module_name='test',
+ directive_comments={})
+ pipeline = [
+ fake_module,
+ NormalizeTree(context),
+ InterpretCompilerDirectives(context, {}),
+ AnalyseDeclarationsTransform(context),
+ AnalyseExpressionsTransform(context),
+ ]
+ self._tree = self.run_pipeline(pipeline, u"""
+ cdef bytes s = b'asdfg'
+ cdef dict d = {1:2}
+ x = s * 3
+ d.get('test')
+ """)
+ return self._tree
+
+ def test_builtin_method(self):
+ calls = [0]
+ class Test(MethodDispatcherTransform):
+ def _handle_simple_method_dict_get(self, node, func, args, unbound):
+ calls[0] += 1
+ return node
+
+ tree = self._build_tree()
+ Test(None)(tree)
+ self.assertEqual(1, calls[0])
+
+ def test_binop_method(self):
+ calls = {'bytes': 0, 'object': 0}
+ class Test(MethodDispatcherTransform):
+ def _handle_simple_method_bytes___mul__(self, node, func, args, unbound):
+ calls['bytes'] += 1
+ return node
+ def _handle_simple_method_object___mul__(self, node, func, args, unbound):
+ calls['object'] += 1
+ return node
+
+ tree = self._build_tree()
+ Test(None)(tree)
+ self.assertEqual(1, calls['bytes'])
+ self.assertEqual(0, calls['object'])

Powered by Google App Engine
This is Rietveld 408576698