Home | History | Annotate | Download | only in tests
      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)
     43