| # Copyright 2014 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import unittest |
| |
| # pylint: disable=F0401 |
| import mojo.embedder |
| from mojo import system |
| |
| |
| def _Increment(array): |
| def _Closure(): |
| array.append(0) |
| return _Closure |
| |
| |
| class RunLoopTest(unittest.TestCase): |
| |
| def setUp(self): |
| mojo.embedder.Init() |
| |
| def testRunLoop(self): |
| loop = system.RunLoop() |
| array = [] |
| for _ in xrange(10): |
| loop.PostDelayedTask(_Increment(array)) |
| loop.RunUntilIdle() |
| self.assertEquals(len(array), 10) |
| |
| def testRunLoopWithException(self): |
| loop = system.RunLoop() |
| def Throw(): |
| raise Exception("error") |
| array = [] |
| loop.PostDelayedTask(Throw) |
| loop.PostDelayedTask(_Increment(array)) |
| with self.assertRaisesRegexp(Exception, '^error$'): |
| loop.Run() |
| self.assertEquals(len(array), 0) |
| loop.RunUntilIdle() |
| self.assertEquals(len(array), 1) |