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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 self.assertEqual([1, 2, 3], future.Get()) | 87 self.assertEqual([1, 2, 3], future.Get()) |
88 for callback in callbacks: | 88 for callback in callbacks: |
89 self.assertTrue(*callback.CheckAndReset(1)) | 89 self.assertTrue(*callback.CheckAndReset(1)) |
90 | 90 |
91 # Test throwing an error. | 91 # Test throwing an error. |
92 def throws_error(): | 92 def throws_error(): |
93 raise ValueError() | 93 raise ValueError() |
94 callbacks = (callback_with_value(1), | 94 callbacks = (callback_with_value(1), |
95 callback_with_value(2), | 95 callback_with_value(2), |
96 MockFunction(throws_error)) | 96 MockFunction(throws_error)) |
| 97 |
97 future = All(Future(callback=callback) for callback in callbacks) | 98 future = All(Future(callback=callback) for callback in callbacks) |
98 for callback in callbacks: | 99 for callback in callbacks: |
99 self.assertTrue(*callback.CheckAndReset(0)) | 100 self.assertTrue(*callback.CheckAndReset(0)) |
100 # Can't check that the callbacks were actually run because in theory the | |
101 # Futures can be resolved in any order. | |
102 self.assertRaises(ValueError, future.Get) | 101 self.assertRaises(ValueError, future.Get) |
| 102 for callback in callbacks: |
| 103 # Can't check that the callbacks were actually run because in theory the |
| 104 # Futures can be resolved in any order. |
| 105 callback.CheckAndReset(0) |
| 106 |
| 107 # Test throwing an error with except_pass. |
| 108 future = All((Future(callback=callback) for callback in callbacks), |
| 109 except_pass=ValueError) |
| 110 for callback in callbacks: |
| 111 self.assertTrue(*callback.CheckAndReset(0)) |
| 112 self.assertEqual([1, 2, None], future.Get()) |
103 | 113 |
104 def testRaceSuccess(self): | 114 def testRaceSuccess(self): |
105 callback = MockFunction(lambda: 42) | 115 callback = MockFunction(lambda: 42) |
106 | 116 |
107 # Test a single value. | 117 # Test a single value. |
108 race = Race((Future(callback=callback),)) | 118 race = Race((Future(callback=callback),)) |
109 self.assertTrue(*callback.CheckAndReset(0)) | 119 self.assertTrue(*callback.CheckAndReset(0)) |
110 self.assertEqual(42, race.Get()) | 120 self.assertEqual(42, race.Get()) |
111 self.assertTrue(*callback.CheckAndReset(1)) | 121 self.assertTrue(*callback.CheckAndReset(1)) |
112 | 122 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 race = Race((Future(callback=throws_error), | 162 race = Race((Future(callback=throws_error), |
153 Future(callback=throws_except_error)), | 163 Future(callback=throws_except_error)), |
154 except_pass=(NotImplementedError,)) | 164 except_pass=(NotImplementedError,)) |
155 self.assertRaises(ValueError, race.Get) | 165 self.assertRaises(ValueError, race.Get) |
156 | 166 |
157 race = Race((Future(callback=throws_error), | 167 race = Race((Future(callback=throws_error), |
158 Future(callback=throws_error)), | 168 Future(callback=throws_error)), |
159 except_pass=(ValueError,)) | 169 except_pass=(ValueError,)) |
160 self.assertRaises(ValueError, race.Get) | 170 self.assertRaises(ValueError, race.Get) |
161 | 171 |
| 172 # Test except_pass with default values. |
| 173 race = Race((Future(callback=throws_error), |
| 174 Future(callback=throws_except_error)), |
| 175 except_pass=(NotImplementedError,), |
| 176 default=42) |
| 177 self.assertRaises(ValueError, race.Get) |
| 178 |
| 179 race = Race((Future(callback=throws_error), |
| 180 Future(callback=throws_error)), |
| 181 except_pass=(ValueError,), |
| 182 default=42) |
| 183 self.assertEqual(42, race.Get()) |
| 184 |
162 def testThen(self): | 185 def testThen(self): |
163 def assertIs42(val): | 186 def assertIs42(val): |
164 self.assertEqual(val, 42) | 187 self.assertEqual(val, 42) |
165 return val | 188 return val |
166 | 189 |
167 then = Future(value=42).Then(assertIs42) | 190 then = Future(value=42).Then(assertIs42) |
168 # Shouldn't raise an error. | 191 # Shouldn't raise an error. |
169 self.assertEqual(42, then.Get()) | 192 self.assertEqual(42, then.Get()) |
170 | 193 |
171 # Test raising an error. | 194 # Test raising an error. |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 raisesSomething().Then(shouldNotHappen, raisesSomething) | 276 raisesSomething().Then(shouldNotHappen, raisesSomething) |
254 .Then(shouldNotHappen, oops).Get()) | 277 .Then(shouldNotHappen, oops).Get()) |
255 self.assertEqual( | 278 self.assertEqual( |
256 'oops', | 279 'oops', |
257 raisesSomething().Then(shouldNotHappen, raisesSomething) | 280 raisesSomething().Then(shouldNotHappen, raisesSomething) |
258 .Then(shouldNotHappen, oopsFuture).Get()) | 281 .Then(shouldNotHappen, oopsFuture).Get()) |
259 | 282 |
260 | 283 |
261 if __name__ == '__main__': | 284 if __name__ == '__main__': |
262 unittest.main() | 285 unittest.main() |
OLD | NEW |