| 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 |