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

Side by Side Diff: mojo/python/tests/promise_unittest.py

Issue 675563002: Remove mojo/python and gyp targets (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 unified diff | Download patch
« no previous file with comments | « mojo/python/tests/mojo_unittest.py ('k') | mojo/python/tests/runloop_unittest.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import unittest
6
7 # pylint: disable=F0401
8 from mojo.bindings import promise
9
10
11 class PromiseTest(unittest.TestCase):
12
13 def setUp(self):
14 self.accumulated = []
15
16 def _AddToAccumulated(self, res):
17 self.accumulated.append(res)
18 return res
19
20 def testResolve(self):
21 p = promise.Promise.Resolve(0)
22 self.assertEquals(p.state, promise.Promise.STATE_FULLFILLED)
23 p.Then(self._AddToAccumulated)
24 self.assertEquals(self.accumulated, [0])
25
26 def testResolveToPromise(self):
27 p = promise.Promise.Resolve(0)
28 self.assertEquals(p.state, promise.Promise.STATE_FULLFILLED)
29 q = promise.Promise.Resolve(p)
30 self.assertEquals(p.state, promise.Promise.STATE_FULLFILLED)
31 q.Then(self._AddToAccumulated)
32 self.assertEquals(self.accumulated, [0])
33
34 def testReject(self):
35 p = promise.Promise.Reject(0)
36 self.assertEquals(p.state, promise.Promise.STATE_REJECTED)
37 p.Then(onRejected=self._AddToAccumulated)
38 self.assertEquals(self.accumulated, [0])
39
40 def testGeneratorFunctionResolve(self):
41 (p, resolve, _) = _GetPromiseAndFunctions()
42 self.assertEquals(p.state, promise.Promise.STATE_PENDING)
43 p.Then(self._AddToAccumulated)
44 resolve(0)
45 self.assertEquals(p.state, promise.Promise.STATE_FULLFILLED)
46 self.assertEquals(self.accumulated, [0])
47
48 def testGeneratorFunctionReject(self):
49 (p, _, reject) = _GetPromiseAndFunctions()
50 self.assertEquals(p.state, promise.Promise.STATE_PENDING)
51 p.Then(None, self._AddToAccumulated)
52 reject(0)
53 self.assertEquals(p.state, promise.Promise.STATE_REJECTED)
54 self.assertEquals(self.accumulated, [0])
55
56 def testGeneratorFunctionResolveToPromise(self):
57 (p1, resolve, _) = _GetPromiseAndFunctions()
58 p2 = promise.Promise(lambda x, y: x(p1))
59 self.assertEquals(p2.state, promise.Promise.STATE_PENDING)
60 p2.Then(self._AddToAccumulated)
61 resolve(promise.Promise.Resolve(0))
62 self.assertEquals(self.accumulated, [0])
63
64 def testComputation(self):
65 (p, resolve, _) = _GetPromiseAndFunctions()
66 p.Then(lambda x: x+1).Then(lambda x: x+2).Then(self._AddToAccumulated)
67 self.assertEquals(self.accumulated, [])
68 resolve(0)
69 self.assertEquals(self.accumulated, [3])
70
71 def testRecoverAfterException(self):
72 (p, resolve, _) = _GetPromiseAndFunctions()
73 p.Then(_ThrowException).Catch(self._AddToAccumulated)
74 self.assertEquals(self.accumulated, [])
75 resolve(0)
76 self.assertEquals(len(self.accumulated), 1)
77 self.assertIsInstance(self.accumulated[0], RuntimeError)
78 self.assertEquals(self.accumulated[0].message, 0)
79
80 def testMultipleRejectResolve(self):
81 (p, resolve, reject) = _GetPromiseAndFunctions()
82 p.Then(self._AddToAccumulated, self._AddToAccumulated)
83 resolve(0)
84 self.assertEquals(self.accumulated, [0])
85 resolve(0)
86 self.assertEquals(self.accumulated, [0])
87 reject(0)
88 self.assertEquals(self.accumulated, [0])
89
90 self.accumulated = []
91 (p, resolve, reject) = _GetPromiseAndFunctions()
92 p.Then(self._AddToAccumulated, self._AddToAccumulated)
93 reject(0)
94 self.assertEquals(self.accumulated, [0])
95 resolve(0)
96 self.assertEquals(self.accumulated, [0])
97 reject(0)
98 self.assertEquals(self.accumulated, [0])
99
100 def testAll(self):
101 promises_and_functions = [_GetPromiseAndFunctions() for x in xrange(10)]
102 promises = [x[0] for x in promises_and_functions]
103 all_promise = promise.Promise.All(*promises)
104 res = []
105 def AddToRes(values):
106 res.append(values)
107 all_promise.Then(AddToRes, AddToRes)
108 for i, (_, resolve, _) in enumerate(promises_and_functions):
109 self.assertEquals(len(res), 0)
110 resolve(i)
111 self.assertEquals(len(res), 1)
112 self.assertEquals(res[0], [i for i in xrange(10)])
113 self.assertEquals(all_promise.state, promise.Promise.STATE_FULLFILLED)
114
115 def testAllFailure(self):
116 promises_and_functions = [_GetPromiseAndFunctions() for x in xrange(10)]
117 promises = [x[0] for x in promises_and_functions]
118 all_promise = promise.Promise.All(*promises)
119 res = []
120 def AddToRes(values):
121 res.append(values)
122 all_promise.Then(AddToRes, AddToRes)
123 for i in xrange(10):
124 if i <= 5:
125 self.assertEquals(len(res), 0)
126 else:
127 self.assertEquals(len(res), 1)
128 if i != 5:
129 promises_and_functions[i][1](i)
130 else:
131 promises_and_functions[i][2]('error')
132 self.assertEquals(len(res), 1)
133 self.assertEquals(res[0], 'error')
134 self.assertEquals(all_promise.state, promise.Promise.STATE_REJECTED)
135
136 def testRace(self):
137 promises_and_functions = [_GetPromiseAndFunctions() for x in xrange(10)]
138 promises = [x[0] for x in promises_and_functions]
139 race_promise = promise.Promise.Race(*promises)
140 res = []
141 def AddToRes(values):
142 res.append(values)
143 race_promise.Then(AddToRes, AddToRes)
144 self.assertEquals(len(res), 0)
145 promises_and_functions[7][1]('success')
146 self.assertEquals(len(res), 1)
147 for i, (f) in enumerate(promises_and_functions):
148 f[1 + (i % 2)](i)
149 self.assertEquals(len(res), 1)
150 self.assertEquals(res[0], 'success')
151 self.assertEquals(race_promise.state, promise.Promise.STATE_FULLFILLED)
152
153 def testRaceFailure(self):
154 promises_and_functions = [_GetPromiseAndFunctions() for x in xrange(10)]
155 promises = [x[0] for x in promises_and_functions]
156 race_promise = promise.Promise.Race(*promises)
157 res = []
158 def AddToRes(values):
159 res.append(values)
160 race_promise.Then(AddToRes, AddToRes)
161 self.assertEquals(len(res), 0)
162 promises_and_functions[7][2]('error')
163 self.assertEquals(len(res), 1)
164 for i, (f) in enumerate(promises_and_functions):
165 f[1 + (i % 2)](i)
166 self.assertEquals(len(res), 1)
167 self.assertEquals(res[0], 'error')
168 self.assertEquals(race_promise.state, promise.Promise.STATE_REJECTED)
169
170
171 def _GetPromiseAndFunctions():
172 functions = {}
173 def GeneratorFunction(resolve, reject):
174 functions['resolve'] = resolve
175 functions['reject'] = reject
176 p = promise.Promise(GeneratorFunction)
177 return (p, functions['resolve'], functions['reject'])
178
179
180 def _ThrowException(x):
181 raise RuntimeError(x)
OLDNEW
« no previous file with comments | « mojo/python/tests/mojo_unittest.py ('k') | mojo/python/tests/runloop_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698