3
"""A unit test on the dll.py module that confirms file matching patterns"""
13
class MatchTestCase(unittest.TestCase):
16
('SDL', ['SDL.dll', 'sdl.DLL', 'libsdl.dll'], ['sdl.dll.a']),
17
('MIXER', ['SDL_mixer.dll', 'sdl_MIXER.DLL', 'libsdl_mixer.dll'], ['sdl_mixer.dll.a']),
18
('IMAGE', ['SDL_image.dll', 'sdl_IMAGE.DLL', 'libsdl_image.dll'], ['sdl_image.dll.a']),
19
('FONT', ['SDL_ttf.dll', 'sdl_TTF.DLL', 'libsdl_ttf.dll'], ['sdl_ttf.dll.a']),
20
('SMPEG', ['smpeg.dll', 'SMPEG.DLL', 'libsmpeg.dll'], ['smpeg.dll.a']),
21
('TIFF', ['tiff.dll', 'TIFF.DLL', 'libtiff.dll'], ['tiff.dll.a']),
22
('JPEG', ['jpeg.dll', 'JPEG.DLL', 'libjpeg.dll'], ['jpeg.dll.a']),
23
('PNG', ['libpng13.dll', 'LIBPNG13.DLL', 'libpng12.dll', 'png12.dll', 'png13.dll'],
24
['libpng.dll', 'libpng13.dll.a']),
25
('Z', ['zlib1.dll', 'ZLIB1.DLL'], ['z.dll', 'libzlib1.dll', 'zlib1.dll.a']),
26
('VORBIS', ['vorbis.dll', 'VORBIS.DLL', 'libvorbis-0.dll'], ['libvorbis-1.dll', 'libvorbis-0.dll.a']),
27
('VORBISFILE', ['vorbisfile.dll', 'VORBISFILE.DLL', 'libvorbisfile-3.dll'],
28
['libvorbisfile-0.dll', 'libvorbisfile-3.dll.a']),
29
('OGG', ['ogg.dll', 'OGG.DLL', 'libogg-0.dll'], ['libogg-1.dll', 'libogg-0.dll.a']),
32
def test_compat(self):
33
"""Validate the test cases"""
34
self.failUnlessEqual(len(self.test_cases), len(dll.regexs))
35
for name, valid_files, invalid_files in self.test_cases:
36
self.failUnless(name in dll.regexs, name)
39
"""Ensure certain file names match"""
40
for name, valid_files, invalid_files in self.test_cases:
41
test = dll.tester(name)
43
self.failUnless(test(f), f)
45
def test_failed_match(self):
46
"""Ensure certain file names do not match"""
47
for name, valid_files, invalid_files in self.test_cases:
48
test = dll.tester(name)
49
for f in invalid_files:
50
self.failUnless(not test(f), f)
52
class DependencyLookupTestCase(unittest.TestCase):
53
def test_no_dependencies(self):
54
"""Ensure no dependencies are returned for a library with non"""
55
self.failUnlessEqual(list(dll.dependencies(['SDL'])), ['SDL'])
57
def test_not_found(self):
58
"""Ensure an empty dependency list is returned for an unrecognized library"""
59
self.failUnless(not dll.dependencies(['?']))
61
def test_multiple_dependencies(self):
62
"""Ensure dependencies are recursively traced"""
63
expected_libs = ['vorbisfile', 'vorbis', 'ogg']
64
libs = dll.dependencies(['vorbisfile'])
65
self.failUnlessEqual(len(libs), len(expected_libs))
66
for lib in expected_libs:
67
self.failUnless(lib in libs)
69
def test_multiple_libs(self):
70
"""Ensure mutliple libraries in a list are handled"""
71
expected_libs = ['SDL', 'z'] # Chosen for not having dependencies
72
libs = dll.dependencies(expected_libs)
73
self.failUnlessEqual(len(libs), len(expected_libs))
74
for lib in expected_libs:
75
self.failUnless(lib in libs)
77
def test_no_libs(self):
78
"""Check special case of an empty library list"""
79
self.failUnless(not dll.dependencies([]))
81
class RootNameLookupTestCase(unittest.TestCase):
83
"""Ensure name -> file root name works for at least one case"""
84
self.failUnlessEqual(dll.name_to_root('FONT'), 'SDL_ttf')
86
def test_not_found(self):
87
"""Ensure an exception is raised for an unrecognized name"""
90
self.failUnlessRaises(KeyError, test)
92
if __name__ == '__main__':