67 lines
2.4 KiB
Python
67 lines
2.4 KiB
Python
import sys, os
|
|
import unittest
|
|
import win32rcparser
|
|
import win32con
|
|
import tempfile
|
|
|
|
class TestParser(unittest.TestCase):
|
|
def setUp(self):
|
|
rc_file = os.path.join(os.path.dirname(__file__), "win32rcparser", "test.rc")
|
|
self.resources = win32rcparser.Parse(rc_file)
|
|
|
|
def testStrings(self):
|
|
for sid, expected in [
|
|
("IDS_TEST_STRING4", "Test 'single quoted' string"),
|
|
("IDS_TEST_STRING1", 'Test "quoted" string'),
|
|
("IDS_TEST_STRING3", 'String with single " quote'),
|
|
("IDS_TEST_STRING2", 'Test string'),
|
|
]:
|
|
got = self.resources.stringTable[sid].value
|
|
self.assertEqual(got, expected)
|
|
|
|
def testStandardIds(self):
|
|
for idc in "IDOK IDCANCEL".split():
|
|
correct = getattr(win32con, idc)
|
|
self.assertEqual(self.resources.names[correct], idc)
|
|
self.assertEqual(self.resources.ids[idc], correct)
|
|
|
|
def testTabStop(self):
|
|
d = self.resources.dialogs["IDD_TEST_DIALOG2"]
|
|
tabstop_names = ["IDC_EDIT1", "IDOK"] # should have WS_TABSTOP
|
|
tabstop_ids = [self.resources.ids[name] for name in tabstop_names]
|
|
notabstop_names = ["IDC_EDIT2"] # should have WS_TABSTOP
|
|
notabstop_ids = [self.resources.ids[name] for name in notabstop_names]
|
|
num_ok = 0
|
|
for cdef in d[1:]: # skip dlgdef
|
|
#print cdef
|
|
cid = cdef[2]
|
|
style = cdef[-2]
|
|
styleex = cdef[-1]
|
|
if cid in tabstop_ids:
|
|
self.failUnlessEqual(style & win32con.WS_TABSTOP, win32con.WS_TABSTOP)
|
|
num_ok += 1
|
|
elif cid in notabstop_ids:
|
|
self.failUnlessEqual(style & win32con.WS_TABSTOP, 0)
|
|
num_ok += 1
|
|
self.failUnlessEqual(num_ok, len(tabstop_ids) + len(notabstop_ids))
|
|
|
|
class TestGenerated(TestParser):
|
|
def setUp(self):
|
|
# don't call base!
|
|
rc_file = os.path.join(os.path.dirname(__file__), "win32rcparser", "test.rc")
|
|
py_file = tempfile.mktemp('test_win32rcparser.py')
|
|
try:
|
|
win32rcparser.GenerateFrozenResource(rc_file, py_file)
|
|
py_source = open(py_file).read()
|
|
finally:
|
|
if os.path.isfile(py_file):
|
|
os.unlink(py_file)
|
|
|
|
# poor-man's import :)
|
|
globs = {}
|
|
exec(py_source, globs, globs)
|
|
self.resources = globs["FakeParser"]()
|
|
|
|
if __name__=='__main__':
|
|
unittest.main()
|
|
|