test_win32event.py
4.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import unittest
import win32event
import pywintypes
import time
import os
import sys
from pywin32_testutil import int2long
class TestWaitableTimer(unittest.TestCase):
def testWaitableFireLong(self):
h = win32event.CreateWaitableTimer(None, 0, None)
dt = int2long(-160) # 160 ns.
win32event.SetWaitableTimer(h, dt, 0, None, None, 0)
rc = win32event.WaitForSingleObject(h, 1000)
self.failUnlessEqual(rc, win32event.WAIT_OBJECT_0)
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.failUnlessEqual(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.failUnlessEqual(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.assertEquals(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.assertEquals(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.assertEquals(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.assertEquals(res, win32event.WAIT_TIMEOUT)
class TestEvent(unittest.TestCase):
def assertSignaled(self, event):
self.assertEquals(win32event.WaitForSingleObject(event, 0),
win32event.WAIT_OBJECT_0)
def assertNotSignaled(self, event):
self.assertEquals(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.assertEquals(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.assertEquals(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()