123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- import unittest
-
- import pywintypes
- import win32event
-
-
- class TestWaitableTimer(unittest.TestCase):
- def testWaitableFire(self):
- h = win32event.CreateWaitableTimer(None, 0, None)
- dt = -160 # 160 ns.
- win32event.SetWaitableTimer(h, dt, 0, None, None, 0)
- rc = win32event.WaitForSingleObject(h, 1000)
- self.assertEqual(rc, win32event.WAIT_OBJECT_0)
-
- def testCreateWaitableTimerEx(self):
- h = win32event.CreateWaitableTimerEx(
- None,
- None,
- win32event.CREATE_WAITABLE_TIMER_HIGH_RESOLUTION,
- win32event.TIMER_ALL_ACCESS,
- )
- dt = -160 # 160 ns.
- win32event.SetWaitableTimer(h, dt, 0, None, None, 0)
- rc = win32event.WaitForSingleObject(h, 1000)
- self.assertEqual(rc, win32event.WAIT_OBJECT_0)
-
- def testWaitableTrigger(self):
- h = win32event.CreateWaitableTimer(None, 0, None)
- # for the sake of this, pass a long that doesn't fit in an int.
- dt = -2000000000
- win32event.SetWaitableTimer(h, dt, 0, None, None, 0)
- rc = win32event.WaitForSingleObject(h, 10) # 10 ms.
- self.assertEqual(rc, win32event.WAIT_TIMEOUT)
-
- def testWaitableError(self):
- h = win32event.CreateWaitableTimer(None, 0, None)
- h.close()
- self.assertRaises(
- pywintypes.error, win32event.SetWaitableTimer, h, -42, 0, None, None, 0
- )
-
-
- class TestWaitFunctions(unittest.TestCase):
- def testMsgWaitForMultipleObjects(self):
- # this function used to segfault when called with an empty list
- res = win32event.MsgWaitForMultipleObjects([], 0, 0, 0)
- self.assertEqual(res, win32event.WAIT_TIMEOUT)
-
- def testMsgWaitForMultipleObjects2(self):
- # test with non-empty list
- event = win32event.CreateEvent(None, 0, 0, None)
- res = win32event.MsgWaitForMultipleObjects([event], 0, 0, 0)
- self.assertEqual(res, win32event.WAIT_TIMEOUT)
-
- def testMsgWaitForMultipleObjectsEx(self):
- # this function used to segfault when called with an empty list
- res = win32event.MsgWaitForMultipleObjectsEx([], 0, 0, 0)
- self.assertEqual(res, win32event.WAIT_TIMEOUT)
-
- def testMsgWaitForMultipleObjectsEx2(self):
- # test with non-empty list
- event = win32event.CreateEvent(None, 0, 0, None)
- res = win32event.MsgWaitForMultipleObjectsEx([event], 0, 0, 0)
- self.assertEqual(res, win32event.WAIT_TIMEOUT)
-
-
- class TestEvent(unittest.TestCase):
- def assertSignaled(self, event):
- self.assertEqual(
- win32event.WaitForSingleObject(event, 0), win32event.WAIT_OBJECT_0
- )
-
- def assertNotSignaled(self, event):
- self.assertEqual(
- win32event.WaitForSingleObject(event, 0), win32event.WAIT_TIMEOUT
- )
-
- def testCreateEvent(self):
- event = win32event.CreateEvent(None, False, False, None)
- self.assertNotSignaled(event)
- event = win32event.CreateEvent(None, False, True, None)
- self.assertSignaled(event)
- self.assertNotSignaled(event)
- event = win32event.CreateEvent(None, True, True, None)
- self.assertSignaled(event)
- self.assertSignaled(event)
-
- def testSetEvent(self):
- event = win32event.CreateEvent(None, True, False, None)
- self.assertNotSignaled(event)
- res = win32event.SetEvent(event)
- self.assertEqual(res, None)
- self.assertSignaled(event)
- event.close()
- self.assertRaises(pywintypes.error, win32event.SetEvent, event)
-
- def testResetEvent(self):
- event = win32event.CreateEvent(None, True, True, None)
- self.assertSignaled(event)
- res = win32event.ResetEvent(event)
- self.assertEqual(res, None)
- self.assertNotSignaled(event)
- event.close()
- self.assertRaises(pywintypes.error, win32event.ResetEvent, event)
-
-
- class TestMutex(unittest.TestCase):
- def testReleaseMutex(self):
- mutex = win32event.CreateMutex(None, True, None)
- res = win32event.ReleaseMutex(mutex)
- self.assertEqual(res, None)
- res = win32event.WaitForSingleObject(mutex, 0)
- self.assertEqual(res, win32event.WAIT_OBJECT_0)
- mutex.close()
- self.assertRaises(pywintypes.error, win32event.ReleaseMutex, mutex)
-
-
- if __name__ == "__main__":
- unittest.main()
|