Upstream version 11.39.266.0
[platform/framework/web/crosswalk.git] / src / mojo / python / tests / runloop_unittest.py
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 import mojo.embedder
9 from mojo import system
10
11
12 def _Increment(array):
13   def _Closure():
14     array.append(0)
15   return _Closure
16
17
18 class RunLoopTest(unittest.TestCase):
19
20   def setUp(self):
21     mojo.embedder.Init()
22
23   def testRunLoop(self):
24     loop = system.RunLoop()
25     array = []
26     for _ in xrange(10):
27       loop.PostDelayedTask(_Increment(array))
28     loop.RunUntilIdle()
29     self.assertEquals(len(array), 10)
30
31   def testRunLoopWithException(self):
32     loop = system.RunLoop()
33     def Throw():
34       raise Exception("error")
35     array = []
36     loop.PostDelayedTask(Throw)
37     loop.PostDelayedTask(_Increment(array))
38     with self.assertRaisesRegexp(Exception, '^error$'):
39       loop.Run()
40     self.assertEquals(len(array), 0)
41     loop.RunUntilIdle()
42     self.assertEquals(len(array), 1)