diff options
author | kalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-05 23:06:17 +0000 |
---|---|---|
committer | kalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-05 23:06:17 +0000 |
commit | 971b0bf61f81c7de47ae43b50e1ba8b62abecbb5 (patch) | |
tree | 372518bc5f350cf2a263b508bcb53a41a1a2c46a /chrome/common/extensions/docs/server2/future_test.py | |
parent | 986ee1a7636475784835579bca40321453da5e5c (diff) | |
download | chromium_src-971b0bf61f81c7de47ae43b50e1ba8b62abecbb5.zip chromium_src-971b0bf61f81c7de47ae43b50e1ba8b62abecbb5.tar.gz chromium_src-971b0bf61f81c7de47ae43b50e1ba8b62abecbb5.tar.bz2 |
Convert APIListDataSource to use Future.Then() rather than Get().
I needed to change the behaviour of Future.Then() to implement this.
BUG=306341
R=yoz@chromium.org
NOTRY=true
Review URL: https://codereview.chromium.org/438403002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287633 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/extensions/docs/server2/future_test.py')
-rwxr-xr-x | chrome/common/extensions/docs/server2/future_test.py | 49 |
1 files changed, 45 insertions, 4 deletions
diff --git a/chrome/common/extensions/docs/server2/future_test.py b/chrome/common/extensions/docs/server2/future_test.py index 1c188d1..db056c5 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() |