1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- # tests for win32gui
- import unittest
- import win32gui
- import pywin32_testutil
- import operator
- import array
- import sys
- # theoretically should be in pywin32_testutil, but this is the only place
- # that currently needs such a function...
- def ob2bytes(ob):
- if sys.version_info < (3,0):
- return str(buffer(ob))
- # py3k.
- return bytes(ob)
- class TestPyGetString(unittest.TestCase):
- def test_get_string(self):
- # test invalid addresses cause a ValueError rather than crash!
- self.assertRaises(ValueError, win32gui.PyGetString, 0)
- self.assertRaises(ValueError, win32gui.PyGetString, 1)
- self.assertRaises(ValueError, win32gui.PyGetString, 1,1)
- class TestPyGetMemory(unittest.TestCase):
- def test_ob(self):
- # Check the PyGetMemory result and a bytes string can be compared
- test_data = pywin32_testutil.str2bytes("\0\1\2\3\4\5\6")
- c = array.array("b", test_data)
- addr, buflen = c.buffer_info()
- got = win32gui.PyGetMemory(addr, buflen)
- self.failUnlessEqual(len(got), len(test_data))
- self.failUnlessEqual(ob2bytes(got), test_data)
- def test_memory_index(self):
- # Check we can index into the buffer object returned by PyGetMemory
- test_data = pywin32_testutil.str2bytes("\0\1\2\3\4\5\6")
- c = array.array("b", test_data)
- addr, buflen = c.buffer_info()
- got = win32gui.PyGetMemory(addr, buflen)
- self.failUnlessEqual(got[0], pywin32_testutil.str2bytes('\0'))
- def test_memory_slice(self):
- # Check we can slice the buffer object returned by PyGetMemory
- test_data = pywin32_testutil.str2bytes("\0\1\2\3\4\5\6")
- c = array.array("b", test_data)
- addr, buflen = c.buffer_info()
- got = win32gui.PyGetMemory(addr, buflen)
- self.failUnlessEqual(got[0:3], pywin32_testutil.str2bytes('\0\1\2'))
-
- def test_real_view(self):
- # Do the PyGetMemory, then change the original memory, then ensure
- # the initial object we fetched sees the new value.
- test_data = pywin32_testutil.str2bytes("\0\1\2\3\4\5\6")
- c = array.array("b", test_data)
- addr, buflen = c.buffer_info()
- got = win32gui.PyGetMemory(addr, buflen)
- self.failUnlessEqual(got[0], pywin32_testutil.str2bytes('\0'))
- new = pywin32_testutil.str2bytes('\1')
- c[0] = 1
- self.failUnlessEqual(got[0], new)
- def test_memory_not_writable(self):
- # Check the buffer object fetched by PyGetMemory isn't writable.
- test_data = pywin32_testutil.str2bytes("\0\1\2\3\4\5\6")
- c = array.array("b", test_data)
- addr, buflen = c.buffer_info()
- got = win32gui.PyGetMemory(addr, buflen)
- new = pywin32_testutil.str2bytes('\1')
- self.failUnlessRaises(TypeError, operator.setitem, got, 0, new)
- if __name__=='__main__':
- unittest.main()
|