Index: chrome/common/extensions/docs/server2/future_test.py |
diff --git a/chrome/common/extensions/docs/server2/future_test.py b/chrome/common/extensions/docs/server2/future_test.py |
index 1c188d1ccdf6f25e2dd4cfceb0cb7b749de1a743..db056c58d54e5c48a8729b2ceacfefbecb1026b0 100755 |
--- a/chrome/common/extensions/docs/server2/future_test.py |
+++ b/chrome/common/extensions/docs/server2/future_test.py |
@@ -161,11 +161,12 @@ class FutureTest(unittest.TestCase): |
def testThen(self): |
def assertIs42(val): |
- self.assertEquals(val, 42) |
+ self.assertEqual(val, 42) |
+ return val |
then = Future(value=42).Then(assertIs42) |
# Shouldn't raise an error. |
- then.Get() |
+ self.assertEqual(42, then.Get()) |
# Test raising an error. |
then = Future(value=41).Then(assertIs42) |
@@ -184,7 +185,7 @@ class FutureTest(unittest.TestCase): |
raise Exception |
then = Future(callback=raiseValueError).Then(assertIs42, handle) |
- self.assertEquals(then.Get(), 'Caught') |
+ self.assertEqual('Caught', then.Get()) |
then = Future(callback=raiseException).Then(assertIs42, handle) |
self.assertRaises(Exception, then.Get) |
@@ -192,7 +193,7 @@ class FutureTest(unittest.TestCase): |
addOne = lambda val: val + 1 |
then = Future(value=40).Then(addOne).Then(addOne).Then(assertIs42) |
# Shouldn't raise an error. |
- then.Get() |
+ self.assertEqual(42, then.Get()) |
# Test error in chain. |
then = Future(value=40).Then(addOne).Then(assertIs42).Then(addOne) |
@@ -216,6 +217,46 @@ class FutureTest(unittest.TestCase): |
myHandle) |
self.assertEquals(then.Get(), 10) |
+ def testThenResolvesReturnedFutures(self): |
+ def returnsFortyTwo(): |
+ return Future(value=42) |
+ def inc(x): |
+ return x + 1 |
+ def incFuture(x): |
+ return Future(value=x + 1) |
+ |
+ self.assertEqual(43, returnsFortyTwo().Then(inc).Get()) |
+ self.assertEqual(43, returnsFortyTwo().Then(incFuture).Get()) |
+ self.assertEqual(44, returnsFortyTwo().Then(inc).Then(inc).Get()) |
+ self.assertEqual(44, returnsFortyTwo().Then(inc).Then(incFuture).Get()) |
+ self.assertEqual(44, returnsFortyTwo().Then(incFuture).Then(inc).Get()) |
+ self.assertEqual( |
+ 44, returnsFortyTwo().Then(incFuture).Then(incFuture).Get()) |
+ |
+ # The same behaviour should apply to error handlers. |
+ def raisesSomething(): |
+ def boom(): raise ValueError |
+ return Future(callback=boom) |
+ def shouldNotHappen(_): |
+ raise AssertionError() |
+ def oops(error): |
+ return 'oops' |
+ def oopsFuture(error): |
+ return Future(value='oops') |
+ |
+ self.assertEqual( |
+ 'oops', raisesSomething().Then(shouldNotHappen, oops).Get()) |
+ self.assertEqual( |
+ 'oops', raisesSomething().Then(shouldNotHappen, oopsFuture).Get()) |
+ self.assertEqual( |
+ 'oops', |
+ raisesSomething().Then(shouldNotHappen, raisesSomething) |
+ .Then(shouldNotHappen, oops).Get()) |
+ self.assertEqual( |
+ 'oops', |
+ raisesSomething().Then(shouldNotHappen, raisesSomething) |
+ .Then(shouldNotHappen, oopsFuture).Get()) |
+ |
if __name__ == '__main__': |
unittest.main() |