summaryrefslogtreecommitdiffstats
path: root/chrome/common/extensions/docs/server2/future_test.py
diff options
context:
space:
mode:
authorkalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-05 23:06:17 +0000
committerkalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-05 23:06:17 +0000
commit971b0bf61f81c7de47ae43b50e1ba8b62abecbb5 (patch)
tree372518bc5f350cf2a263b508bcb53a41a1a2c46a /chrome/common/extensions/docs/server2/future_test.py
parent986ee1a7636475784835579bca40321453da5e5c (diff)
downloadchromium_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-xchrome/common/extensions/docs/server2/future_test.py49
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()