Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5345)

Unified Diff: chrome/common/extensions/docs/server2/future_test.py

Issue 417163004: Docserver: Update Future.Then() to be more Promise-like (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add tests Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 440994bbabecdf2a94e1fc56fb006a16098b3277..1c188d1ccdf6f25e2dd4cfceb0cb7b749de1a743 100755
--- a/chrome/common/extensions/docs/server2/future_test.py
+++ b/chrome/common/extensions/docs/server2/future_test.py
@@ -159,6 +159,63 @@ class FutureTest(unittest.TestCase):
except_pass=(ValueError,))
self.assertRaises(ValueError, race.Get)
+ def testThen(self):
+ def assertIs42(val):
+ self.assertEquals(val, 42)
+
+ then = Future(value=42).Then(assertIs42)
+ # Shouldn't raise an error.
+ then.Get()
+
+ # Test raising an error.
+ then = Future(value=41).Then(assertIs42)
+ self.assertRaises(AssertionError, then.Get)
+
+ # Test setting up an error handler.
+ def handle(error):
+ if isinstance(error, ValueError):
+ return 'Caught'
+ raise error
+
+ def raiseValueError():
+ raise ValueError
+
+ def raiseException():
+ raise Exception
+
+ then = Future(callback=raiseValueError).Then(assertIs42, handle)
+ self.assertEquals(then.Get(), 'Caught')
+ then = Future(callback=raiseException).Then(assertIs42, handle)
+ self.assertRaises(Exception, then.Get)
+
+ # Test chains of thens.
+ addOne = lambda val: val + 1
+ then = Future(value=40).Then(addOne).Then(addOne).Then(assertIs42)
+ # Shouldn't raise an error.
+ then.Get()
+
+ # Test error in chain.
+ then = Future(value=40).Then(addOne).Then(assertIs42).Then(addOne)
+ self.assertRaises(AssertionError, then.Get)
+
+ # Test handle error in chain.
+ def raiseValueErrorWithVal(val):
+ raise ValueError
+
+ then = Future(value=40).Then(addOne).Then(raiseValueErrorWithVal).Then(
+ addOne, handle).Then(lambda val: val + ' me')
+ self.assertEquals(then.Get(), 'Caught me')
+
+ # Test multiple handlers.
+ def myHandle(error):
+ if isinstance(error, AssertionError):
+ return 10
+ raise error
+
+ then = Future(value=40).Then(assertIs42).Then(addOne, handle).Then(addOne,
+ myHandle)
+ self.assertEquals(then.Get(), 10)
+
if __name__ == '__main__':
unittest.main()
« no previous file with comments | « chrome/common/extensions/docs/server2/future.py ('k') | chrome/common/extensions/docs/server2/mock_file_system.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698