4
if not sys.platform.startswith('win'):
5
raise unittest.SkipTest('Windows-only test')
8
from ctypes import wintypes
10
class WinTypesTest(unittest.TestCase):
11
def test_variant_bool(self):
12
# reads 16-bits from memory, anything non-zero is True
13
for true_value in (1, 32767, 32768, 65535, 65537):
14
true = POINTER(c_int16)(c_int16(true_value))
15
value = cast(true, POINTER(wintypes.VARIANT_BOOL))
16
self.assertEqual(repr(value.contents), 'VARIANT_BOOL(True)')
18
vb = wintypes.VARIANT_BOOL()
19
self.assertIs(vb.value, False)
21
self.assertIs(vb.value, True)
23
self.assertIs(vb.value, True)
25
for false_value in (0, 65536, 262144, 2**33):
26
false = POINTER(c_int16)(c_int16(false_value))
27
value = cast(false, POINTER(wintypes.VARIANT_BOOL))
28
self.assertEqual(repr(value.contents), 'VARIANT_BOOL(False)')
30
# allow any bool conversion on assignment to value
31
for set_value in (65536, 262144, 2**33):
32
vb = wintypes.VARIANT_BOOL()
34
self.assertIs(vb.value, True)
36
vb = wintypes.VARIANT_BOOL()
38
self.assertIs(vb.value, True)
40
self.assertIs(vb.value, False)
42
if __name__ == "__main__":