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

Side by Side Diff: chrome/common/extensions/docs/server2/future_test.py

Issue 438403002: Conver APIListDataSource to use Future.Then() rather than Get(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comment Created 6 years, 4 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
« no previous file with comments | « chrome/common/extensions/docs/server2/future.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import traceback 6 import traceback
7 import unittest 7 import unittest
8 8
9 9
10 from future import All, Future, Race 10 from future import All, Future, Race
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 except_pass=(NotImplementedError,)) 154 except_pass=(NotImplementedError,))
155 self.assertRaises(ValueError, race.Get) 155 self.assertRaises(ValueError, race.Get)
156 156
157 race = Race((Future(callback=throws_error), 157 race = Race((Future(callback=throws_error),
158 Future(callback=throws_error)), 158 Future(callback=throws_error)),
159 except_pass=(ValueError,)) 159 except_pass=(ValueError,))
160 self.assertRaises(ValueError, race.Get) 160 self.assertRaises(ValueError, race.Get)
161 161
162 def testThen(self): 162 def testThen(self):
163 def assertIs42(val): 163 def assertIs42(val):
164 self.assertEquals(val, 42) 164 self.assertEqual(val, 42)
165 return val
165 166
166 then = Future(value=42).Then(assertIs42) 167 then = Future(value=42).Then(assertIs42)
167 # Shouldn't raise an error. 168 # Shouldn't raise an error.
168 then.Get() 169 self.assertEqual(42, then.Get())
169 170
170 # Test raising an error. 171 # Test raising an error.
171 then = Future(value=41).Then(assertIs42) 172 then = Future(value=41).Then(assertIs42)
172 self.assertRaises(AssertionError, then.Get) 173 self.assertRaises(AssertionError, then.Get)
173 174
174 # Test setting up an error handler. 175 # Test setting up an error handler.
175 def handle(error): 176 def handle(error):
176 if isinstance(error, ValueError): 177 if isinstance(error, ValueError):
177 return 'Caught' 178 return 'Caught'
178 raise error 179 raise error
179 180
180 def raiseValueError(): 181 def raiseValueError():
181 raise ValueError 182 raise ValueError
182 183
183 def raiseException(): 184 def raiseException():
184 raise Exception 185 raise Exception
185 186
186 then = Future(callback=raiseValueError).Then(assertIs42, handle) 187 then = Future(callback=raiseValueError).Then(assertIs42, handle)
187 self.assertEquals(then.Get(), 'Caught') 188 self.assertEqual('Caught', then.Get())
188 then = Future(callback=raiseException).Then(assertIs42, handle) 189 then = Future(callback=raiseException).Then(assertIs42, handle)
189 self.assertRaises(Exception, then.Get) 190 self.assertRaises(Exception, then.Get)
190 191
191 # Test chains of thens. 192 # Test chains of thens.
192 addOne = lambda val: val + 1 193 addOne = lambda val: val + 1
193 then = Future(value=40).Then(addOne).Then(addOne).Then(assertIs42) 194 then = Future(value=40).Then(addOne).Then(addOne).Then(assertIs42)
194 # Shouldn't raise an error. 195 # Shouldn't raise an error.
195 then.Get() 196 self.assertEqual(42, then.Get())
196 197
197 # Test error in chain. 198 # Test error in chain.
198 then = Future(value=40).Then(addOne).Then(assertIs42).Then(addOne) 199 then = Future(value=40).Then(addOne).Then(assertIs42).Then(addOne)
199 self.assertRaises(AssertionError, then.Get) 200 self.assertRaises(AssertionError, then.Get)
200 201
201 # Test handle error in chain. 202 # Test handle error in chain.
202 def raiseValueErrorWithVal(val): 203 def raiseValueErrorWithVal(val):
203 raise ValueError 204 raise ValueError
204 205
205 then = Future(value=40).Then(addOne).Then(raiseValueErrorWithVal).Then( 206 then = Future(value=40).Then(addOne).Then(raiseValueErrorWithVal).Then(
206 addOne, handle).Then(lambda val: val + ' me') 207 addOne, handle).Then(lambda val: val + ' me')
207 self.assertEquals(then.Get(), 'Caught me') 208 self.assertEquals(then.Get(), 'Caught me')
208 209
209 # Test multiple handlers. 210 # Test multiple handlers.
210 def myHandle(error): 211 def myHandle(error):
211 if isinstance(error, AssertionError): 212 if isinstance(error, AssertionError):
212 return 10 213 return 10
213 raise error 214 raise error
214 215
215 then = Future(value=40).Then(assertIs42).Then(addOne, handle).Then(addOne, 216 then = Future(value=40).Then(assertIs42).Then(addOne, handle).Then(addOne,
216 myHandle) 217 myHandle)
217 self.assertEquals(then.Get(), 10) 218 self.assertEquals(then.Get(), 10)
218 219
220 def testThenResolvesReturnedFutures(self):
221 def returnsFortyTwo():
222 return Future(value=42)
223 def inc(x):
224 return x + 1
225 def incFuture(x):
226 return Future(value=x + 1)
227
228 self.assertEqual(43, returnsFortyTwo().Then(inc).Get())
229 self.assertEqual(43, returnsFortyTwo().Then(incFuture).Get())
230 self.assertEqual(44, returnsFortyTwo().Then(inc).Then(inc).Get())
231 self.assertEqual(44, returnsFortyTwo().Then(inc).Then(incFuture).Get())
232 self.assertEqual(44, returnsFortyTwo().Then(incFuture).Then(inc).Get())
233 self.assertEqual(
234 44, returnsFortyTwo().Then(incFuture).Then(incFuture).Get())
235
236 # The same behaviour should apply to error handlers.
237 def raisesSomething():
238 def boom(): raise ValueError
239 return Future(callback=boom)
240 def shouldNotHappen(_):
241 raise AssertionError()
242 def oops(error):
243 return 'oops'
244 def oopsFuture(error):
245 return Future(value='oops')
246
247 self.assertEqual(
248 'oops', raisesSomething().Then(shouldNotHappen, oops).Get())
249 self.assertEqual(
250 'oops', raisesSomething().Then(shouldNotHappen, oopsFuture).Get())
251 self.assertEqual(
252 'oops',
253 raisesSomething().Then(shouldNotHappen, raisesSomething)
254 .Then(shouldNotHappen, oops).Get())
255 self.assertEqual(
256 'oops',
257 raisesSomething().Then(shouldNotHappen, raisesSomething)
258 .Then(shouldNotHappen, oopsFuture).Get())
259
219 260
220 if __name__ == '__main__': 261 if __name__ == '__main__':
221 unittest.main() 262 unittest.main()
OLDNEW
« no previous file with comments | « chrome/common/extensions/docs/server2/future.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698