OLD | NEW |
---|---|
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 Loading... | |
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) |
not at google - send to devlin
2014/08/05 18:47:18
assertEquals isn't a function, assertEqual is. how
ahernandez
2014/08/05 18:58:23
assertEquals is deprecated according to https://do
not at google - send to devlin
2014/08/05 20:01:25
not fussed. I'm constantly confused because gtest
| |
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() |
OLD | NEW |