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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 from Cython.Compiler.ModuleNode import ModuleNode
2 from Cython.Compiler.Symtab import ModuleScope
3 from Cython.TestUtils import TransformTest
4 from Cython.Compiler.Visitor import MethodDispatcherTransform
5 from Cython.Compiler.ParseTreeTransforms import (
6 NormalizeTree, AnalyseDeclarationsTransform,
7 AnalyseExpressionsTransform, InterpretCompilerDirectives)
8
9
10 class TestMethodDispatcherTransform(TransformTest):
11 _tree = None
12
13 def _build_tree(self):
14 if self._tree is None:
15 context = None
16
17 def fake_module(node):
18 scope = ModuleScope('test', None, None)
19 return ModuleNode(node.pos, doc=None, body=node,
20 scope=scope, full_module_name='test',
21 directive_comments={})
22 pipeline = [
23 fake_module,
24 NormalizeTree(context),
25 InterpretCompilerDirectives(context, {}),
26 AnalyseDeclarationsTransform(context),
27 AnalyseExpressionsTransform(context),
28 ]
29 self._tree = self.run_pipeline(pipeline, u"""
30 cdef bytes s = b'asdfg'
31 cdef dict d = {1:2}
32 x = s * 3
33 d.get('test')
34 """)
35 return self._tree
36
37 def test_builtin_method(self):
38 calls = [0]
39 class Test(MethodDispatcherTransform):
40 def _handle_simple_method_dict_get(self, node, func, args, unbound):
41 calls[0] += 1
42 return node
43
44 tree = self._build_tree()
45 Test(None)(tree)
46 self.assertEqual(1, calls[0])
47
48 def test_binop_method(self):
49 calls = {'bytes': 0, 'object': 0}
50 class Test(MethodDispatcherTransform):
51 def _handle_simple_method_bytes___mul__(self, node, func, args, unbo und):
52 calls['bytes'] += 1
53 return node
54 def _handle_simple_method_object___mul__(self, node, func, args, unb ound):
55 calls['object'] += 1
56 return node
57
58 tree = self._build_tree()
59 Test(None)(tree)
60 self.assertEqual(1, calls['bytes'])
61 self.assertEqual(0, calls['object'])
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698