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

Side by Side Diff: third_party/twisted_8_1/twisted/test/test_explorer.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 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
2 # Copyright (c) 2001-2004 Twisted Matrix Laboratories.
3 # See LICENSE for details.
4
5
6 """
7 Test cases for explorer
8 """
9
10 from twisted.trial import unittest
11
12 from twisted.manhole import explorer
13
14 import types, string
15
16 """
17 # Tests:
18
19 Get an ObjectLink. Browse ObjectLink.identifier. Is it the same?
20
21 Watch Object. Make sure an ObjectLink is received when:
22 Call a method.
23 Set an attribute.
24
25 Have an Object with a setattr class. Watch it.
26 Do both the navite setattr and the watcher get called?
27
28 Sequences with circular references. Does it blow up?
29 """
30
31 class SomeDohickey:
32 def __init__(self, *a):
33 self.__dict__['args'] = a
34
35 def bip(self):
36 return self.args
37
38
39 class TestBrowser(unittest.TestCase):
40 def setUp(self):
41 self.pool = explorer.explorerPool
42 self.pool.clear()
43 self.testThing = ["How many stairs must a man climb down?",
44 SomeDohickey(42)]
45
46 def test_chain(self):
47 "Following a chain of Explorers."
48 xplorer = self.pool.getExplorer(self.testThing, 'testThing')
49 self.failUnlessEqual(xplorer.id, id(self.testThing))
50 self.failUnlessEqual(xplorer.identifier, 'testThing')
51
52 dxplorer = xplorer.get_elements()[1]
53 self.failUnlessEqual(dxplorer.id, id(self.testThing[1]))
54
55 class Watcher:
56 zero = 0
57 def __init__(self):
58 self.links = []
59
60 def receiveBrowserObject(self, olink):
61 self.links.append(olink)
62
63 def setZero(self):
64 self.zero = len(self.links)
65
66 def len(self):
67 return len(self.links) - self.zero
68
69
70 class SetattrDohickey:
71 def __setattr__(self, k, v):
72 v = list(str(v))
73 v.reverse()
74 self.__dict__[k] = string.join(v, '')
75
76 class MiddleMan(SomeDohickey, SetattrDohickey):
77 pass
78
79 # class TestWatch(unittest.TestCase):
80 class FIXME_Watch:
81 def setUp(self):
82 self.globalNS = globals().copy()
83 self.localNS = {}
84 self.browser = explorer.ObjectBrowser(self.globalNS, self.localNS)
85 self.watcher = Watcher()
86
87 def test_setAttrPlain(self):
88 "Triggering a watcher response by setting an attribute."
89
90 testThing = SomeDohickey('pencil')
91 self.browser.watchObject(testThing, 'testThing',
92 self.watcher.receiveBrowserObject)
93 self.watcher.setZero()
94
95 testThing.someAttr = 'someValue'
96
97 self.failUnlessEqual(testThing.someAttr, 'someValue')
98 self.failUnless(self.watcher.len())
99 olink = self.watcher.links[-1]
100 self.failUnlessEqual(olink.id, id(testThing))
101
102 def test_setAttrChain(self):
103 "Setting an attribute on a watched object that has __setattr__"
104 testThing = MiddleMan('pencil')
105
106 self.browser.watchObject(testThing, 'testThing',
107 self.watcher.receiveBrowserObject)
108 self.watcher.setZero()
109
110 testThing.someAttr = 'ZORT'
111
112 self.failUnlessEqual(testThing.someAttr, 'TROZ')
113 self.failUnless(self.watcher.len())
114 olink = self.watcher.links[-1]
115 self.failUnlessEqual(olink.id, id(testThing))
116
117
118 def test_method(self):
119 "Triggering a watcher response by invoking a method."
120
121 for testThing in (SomeDohickey('pencil'), MiddleMan('pencil')):
122 self.browser.watchObject(testThing, 'testThing',
123 self.watcher.receiveBrowserObject)
124 self.watcher.setZero()
125
126 rval = testThing.bip()
127 self.failUnlessEqual(rval, ('pencil',))
128
129 self.failUnless(self.watcher.len())
130 olink = self.watcher.links[-1]
131 self.failUnlessEqual(olink.id, id(testThing))
132
133
134 def function_noArgs():
135 "A function which accepts no arguments at all."
136 return
137
138 def function_simple(a, b, c):
139 "A function which accepts several arguments."
140 return a, b, c
141
142 def function_variable(*a, **kw):
143 "A function which accepts a variable number of args and keywords."
144 return a, kw
145
146 def function_crazy((alpha, beta), c, d=range(4), **kw):
147 "A function with a mad crazy signature."
148 return alpha, beta, c, d, kw
149
150 class TestBrowseFunction(unittest.TestCase):
151
152 def setUp(self):
153 self.pool = explorer.explorerPool
154 self.pool.clear()
155
156 def test_sanity(self):
157 """Basic checks for browse_function.
158
159 Was the proper type returned? Does it have the right name and ID?
160 """
161 for f_name in ('function_noArgs', 'function_simple',
162 'function_variable', 'function_crazy'):
163 f = eval(f_name)
164
165 xplorer = self.pool.getExplorer(f, f_name)
166
167 self.failUnlessEqual(xplorer.id, id(f))
168
169 self.failUnless(isinstance(xplorer, explorer.ExplorerFunction))
170
171 self.failUnlessEqual(xplorer.name, f_name)
172
173 def test_signature_noArgs(self):
174 """Testing zero-argument function signature.
175 """
176
177 xplorer = self.pool.getExplorer(function_noArgs, 'function_noArgs')
178
179 self.failUnlessEqual(len(xplorer.signature), 0)
180
181 def test_signature_simple(self):
182 """Testing simple function signature.
183 """
184
185 xplorer = self.pool.getExplorer(function_simple, 'function_simple')
186
187 expected_signature = ('a','b','c')
188
189 self.failUnlessEqual(xplorer.signature.name, expected_signature)
190
191 def test_signature_variable(self):
192 """Testing variable-argument function signature.
193 """
194
195 xplorer = self.pool.getExplorer(function_variable,
196 'function_variable')
197
198 expected_names = ('a','kw')
199 signature = xplorer.signature
200
201 self.failUnlessEqual(signature.name, expected_names)
202 self.failUnless(signature.is_varlist(0))
203 self.failUnless(signature.is_keyword(1))
204
205 def test_signature_crazy(self):
206 """Testing function with crazy signature.
207 """
208 xplorer = self.pool.getExplorer(function_crazy, 'function_crazy')
209
210 signature = xplorer.signature
211
212 expected_signature = [{'name': 'c'},
213 {'name': 'd',
214 'default': range(4)},
215 {'name': 'kw',
216 'keywords': 1}]
217
218 # The name of the first argument seems to be indecipherable,
219 # but make sure it has one (and no default).
220 self.failUnless(signature.get_name(0))
221 self.failUnless(not signature.get_default(0)[0])
222
223 self.failUnlessEqual(signature.get_name(1), 'c')
224
225 # Get a list of values from a list of ExplorerImmutables.
226 arg_2_default = map(lambda l: l.value,
227 signature.get_default(2)[1].get_elements())
228
229 self.failUnlessEqual(signature.get_name(2), 'd')
230 self.failUnlessEqual(arg_2_default, range(4))
231
232 self.failUnlessEqual(signature.get_name(3), 'kw')
233 self.failUnless(signature.is_keyword(3))
234
235 if __name__ == '__main__':
236 unittest.main()
OLDNEW
« no previous file with comments | « third_party/twisted_8_1/twisted/test/test_error.py ('k') | third_party/twisted_8_1/twisted/test/test_extensions.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698