312 lines
14 KiB
Python
312 lines
14 KiB
Python
import os
|
|
import sys
|
|
import unittest
|
|
from .. import SDL_Init, SDL_Quit, sdlttf, rwops
|
|
|
|
fontfile = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
|
"resources", "tuffy.ttf").encode("utf-8")
|
|
|
|
|
|
class SDLTTFTest(unittest.TestCase):
|
|
__tags__ = ["sdl", "sdlttf"]
|
|
|
|
def setUp(self):
|
|
SDL_Init(0)
|
|
sdlttf.TTF_Init()
|
|
|
|
def tearDown(self):
|
|
SDL_Quit()
|
|
sdlttf.TTF_Quit()
|
|
|
|
def test_TTF_Font(self):
|
|
font = sdlttf.TTF_Font()
|
|
self.assertIsInstance(font, sdlttf.TTF_Font)
|
|
|
|
def test_TTF_InitQuit(self):
|
|
sdlttf.TTF_Init()
|
|
sdlttf.TTF_Init()
|
|
sdlttf.TTF_Init()
|
|
sdlttf.TTF_Quit()
|
|
sdlttf.TTF_Quit()
|
|
sdlttf.TTF_Init()
|
|
|
|
def test_TTF_OpenCloseFont(self):
|
|
for x in range(-10, 15):
|
|
font = sdlttf.TTF_OpenFont(fontfile, x)
|
|
self.assertIsInstance(font.contents, sdlttf.TTF_Font)
|
|
sdlttf.TTF_CloseFont(font)
|
|
#self.assertRaises(TypeError, sdlttf.open_font, None, None)
|
|
#self.assertRaises(TypeError, sdlttf.open_font, filename, None)
|
|
#self.assertRaises(ValueError, sdlttf.open_font, filename, "abcd")
|
|
#self.assertRaises(ValueError, sdlttf.open_font, None, "abcd")
|
|
#self.assertRaises(sdl.SDLError, sdlttf.open_font, "test", 10)
|
|
|
|
def test_TTF_OpenFontIndex(self):
|
|
for x in range(-10, 15):
|
|
font = sdlttf.TTF_OpenFontIndex(fontfile, x, 0)
|
|
self.assertIsInstance(font.contents, sdlttf.TTF_Font)
|
|
sdlttf.TTF_CloseFont(font)
|
|
#self.assertRaises(TypeError, sdlttf.open_font_index, None, None, None)
|
|
#self.assertRaises(TypeError, sdlttf.open_font_index, filename, None,
|
|
# None)
|
|
#self.assertRaises(TypeError, sdlttf.open_font_index, filename, 10,
|
|
# None)
|
|
#self.assertRaises(TypeError, sdlttf.open_font_index, filename, None,0)
|
|
#self.assertRaises(TypeError, sdlttf.open_font_index, filename, None,0)
|
|
#self.assertRaises(ValueError, sdlttf.open_font_index, filename, 10,-2)
|
|
#self.assertRaises(sdl.SDLError, sdlttf.open_font_index, "test", 10, 0)
|
|
|
|
def test_TTF_OpenFontRW(self):
|
|
fp = open(fontfile, "rb")
|
|
fontrw = rwops.rw_from_object(fp)
|
|
for x in range(-10, 15):
|
|
fp.seek(0)
|
|
font = sdlttf.TTF_OpenFontRW(fontrw, 0, x)
|
|
self.assertIsInstance(font.contents, sdlttf.TTF_Font)
|
|
sdlttf.TTF_CloseFont(font)
|
|
fp.close()
|
|
#self.assertRaises(TypeError, sdlttf.open_font_rw, None, False, None)
|
|
#self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.open_font_rw, None, False, 10)
|
|
#self.assertRaises(TypeError, sdlttf.open_font_rw, fontrw, False, None)
|
|
|
|
def test_TTF_OpenFontIndexRW(self):
|
|
fp = open(fontfile, "rb")
|
|
fontrw = rwops.rw_from_object(fp)
|
|
for x in range(-10, 15):
|
|
fp.seek(0)
|
|
font = sdlttf.TTF_OpenFontIndexRW(fontrw, 0, x, 0)
|
|
self.assertIsInstance(font.contents, sdlttf.TTF_Font)
|
|
sdlttf.TTF_CloseFont(font)
|
|
fp.close()
|
|
#self.assertRaises(TypeError, sdlttf.open_font_index_rw, None, False,
|
|
# None, None)
|
|
#self.assertRaises(TypeError, sdlttf.open_font_index_rw, None, False,
|
|
# 10, None)
|
|
#self.assertRaises(TypeError, sdlttf.open_font_index_rw, None, False,
|
|
# None, 0)
|
|
#self.assertRaises(TypeError, sdlttf.open_font_index_rw, fontrw, False,
|
|
# None, 0)
|
|
#self.assertRaises(TypeError, sdlttf.open_font_index_rw, fontrw, False,
|
|
# 10, None)
|
|
|
|
def test_TTF_GetSetFontStyle(self):
|
|
font = sdlttf.TTF_OpenFont(fontfile, 10)
|
|
self.assertIsInstance(font.contents, sdlttf.TTF_Font)
|
|
self.assertEqual(sdlttf.TTF_GetFontStyle(font),
|
|
sdlttf.TTF_STYLE_NORMAL)
|
|
sdlttf.TTF_SetFontStyle(font, sdlttf.TTF_STYLE_BOLD)
|
|
self.assertEqual(sdlttf.TTF_GetFontStyle(font), sdlttf.TTF_STYLE_BOLD)
|
|
sdlttf.TTF_SetFontStyle(font, sdlttf.TTF_STYLE_BOLD |
|
|
sdlttf.TTF_STYLE_ITALIC)
|
|
self.assertEqual(sdlttf.TTF_GetFontStyle(font), sdlttf.TTF_STYLE_BOLD |
|
|
sdlttf.TTF_STYLE_ITALIC)
|
|
sdlttf.TTF_SetFontStyle(font, sdlttf.TTF_STYLE_BOLD |
|
|
sdlttf.TTF_STYLE_UNDERLINE)
|
|
#self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.get_font_style, None)
|
|
#self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.get_font_style, "test")
|
|
#self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.get_font_style, 1234)
|
|
#self.assertRaises(ArgumentError, sdlttf.set_font_style, font, None)
|
|
#self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.set_font_style, "test", None)
|
|
#self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.set_font_style, 1234, None)
|
|
#self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.set_font_style, "test", 3)
|
|
#self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.set_font_style, 1234, 4)
|
|
#self.assertRaises(ArgumentError, sdlttf.set_font_style, font, "test")
|
|
sdlttf.TTF_CloseFont(font)
|
|
|
|
def test_TTF_GetSetFontOutline(self):
|
|
font = sdlttf.TTF_OpenFont(fontfile, 10)
|
|
self.assertEqual(sdlttf.TTF_GetFontOutline(font), 0)
|
|
for x in range(-10, 10):
|
|
sdlttf.TTF_SetFontOutline(font, x)
|
|
self.assertEqual(sdlttf.TTF_GetFontOutline(font), x)
|
|
#self.assertRaises(TypeError, sdlttf.set_font_outline, None, None)
|
|
#self.assertRaises(TypeError, sdlttf.set_font_outline, font, None)
|
|
#self.assertRaises(ValueError, sdlttf.set_font_outline, font, "test")
|
|
#self.assertRaises(ValueError, sdlttf.set_font_outline, None, "test")
|
|
#self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.set_font_outline, None, 123)
|
|
#self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.get_font_outline, None)
|
|
#self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.get_font_outline, None)
|
|
sdlttf.TTF_CloseFont(font)
|
|
|
|
def test_TTF_GetSetFontHinting(self):
|
|
font = sdlttf.TTF_OpenFont(fontfile, 10)
|
|
self.assertEqual(sdlttf.TTF_GetFontHinting(font),
|
|
sdlttf.TTF_HINTING_NORMAL)
|
|
for hint in (sdlttf.TTF_HINTING_NORMAL, sdlttf.TTF_HINTING_LIGHT,
|
|
sdlttf.TTF_HINTING_MONO, sdlttf.TTF_HINTING_NONE):
|
|
sdlttf.TTF_SetFontHinting(font, hint)
|
|
self.assertEqual(sdlttf.TTF_GetFontHinting(font), hint)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.set_font_hinting, None, None)
|
|
# self.assertRaises(ArgumentError, sdlttf.set_font_hinting, font, None)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.set_font_hinting, None, 1)
|
|
# self.assertRaises(ArgumentError, sdlttf.set_font_hinting, font,"test")
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.set_font_hinting, None, "test")
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.get_font_hinting, None)
|
|
sdlttf.TTF_CloseFont(font)
|
|
|
|
def test_TTF_FontHeight(self):
|
|
last = cur = 0
|
|
for ptsize in range(-10, 10):
|
|
font = sdlttf.TTF_OpenFont(fontfile, ptsize)
|
|
cur = sdlttf.TTF_FontHeight(font)
|
|
self.assertGreaterEqual(cur, last)
|
|
last = cur
|
|
sdlttf.TTF_CloseFont(font)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_height, None)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_height, 1234)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_height, "test")
|
|
|
|
def test_TTF_FontAscent(self):
|
|
last = cur = 0
|
|
for ptsize in range(-10, 10):
|
|
font = sdlttf.TTF_OpenFont(fontfile, ptsize)
|
|
cur = sdlttf.TTF_FontAscent(font)
|
|
self.assertGreaterEqual(cur, last)
|
|
last = cur
|
|
sdlttf.TTF_CloseFont(font)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_ascent, None)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_ascent, 1234)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_ascent, "test")
|
|
|
|
def test_TTF_FontDescent(self):
|
|
last = cur = 0
|
|
for ptsize in range(-10, 10):
|
|
font = sdlttf.TTF_OpenFont(fontfile, ptsize)
|
|
cur = sdlttf.TTF_FontDescent(font)
|
|
self.assertLessEqual(cur, last)
|
|
last = cur
|
|
sdlttf.TTF_CloseFont(font)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_descent, None)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_descent, 1234)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_descent, "test")
|
|
|
|
def test_TTF_FontLineSkip(self):
|
|
last = cur = 0
|
|
for ptsize in range(-10, 10):
|
|
font = sdlttf.TTF_OpenFont(fontfile, ptsize)
|
|
cur = sdlttf.TTF_FontLineSkip(font)
|
|
self.assertGreaterEqual(cur, last)
|
|
last = cur
|
|
sdlttf.TTF_CloseFont(font)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_line_skip, None)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_line_skip, 1234)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_line_skip, "test")
|
|
|
|
def test_TTF_GetSetFontKerning(self):
|
|
font = sdlttf.TTF_OpenFont(fontfile, 10)
|
|
self.assertEqual(sdlttf.TTF_GetFontKerning(font), 1)
|
|
sdlttf.TTF_SetFontKerning(font, 0)
|
|
self.assertEqual(sdlttf.TTF_GetFontKerning(font), 0)
|
|
sdlttf.TTF_SetFontKerning(font, 1)
|
|
self.assertEqual(sdlttf.TTF_GetFontKerning(font), 1)
|
|
sdlttf.TTF_SetFontKerning(font, 0)
|
|
self.assertEqual(sdlttf.TTF_GetFontKerning(font), 0)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.get_font_kerning, None)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.get_font_kerning, "test")
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.get_font_kerning, 1234)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.set_font_kerning, None, None)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.set_font_kerning, "test", "test")
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.set_font_kerning, 1234, None)
|
|
sdlttf.TTF_CloseFont(font)
|
|
|
|
def test_TTF_FontFaces(self):
|
|
font = sdlttf.TTF_OpenFont(fontfile, 10)
|
|
self.assertGreaterEqual(sdlttf.TTF_FontFaces(font), 1)
|
|
# self.assertRaises((AttributeError, TypeError), sdlttf.font_faces,None)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_faces, "test")
|
|
# self.assertRaises((AttributeError, TypeError), sdlttf.font_faces,1234)
|
|
sdlttf.TTF_CloseFont(font)
|
|
|
|
def test_TTF_FontFaceIsFixedWidth(self):
|
|
font = sdlttf.TTF_OpenFont(fontfile, 10)
|
|
self.assertFalse(sdlttf.TTF_FontFaceIsFixedWidth(font))
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_face_is_fixed_width, None)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_face_is_fixed_width, "test")
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_face_is_fixed_width, 1234)
|
|
sdlttf.TTF_CloseFont(font)
|
|
|
|
def test_TTF_FontFaceFamilyName(self):
|
|
font = sdlttf.TTF_OpenFont(fontfile, 10)
|
|
self.assertEqual(sdlttf.TTF_FontFaceFamilyName(font), b"Tuffy")
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_face_family_name, None)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_face_family_name, "test")
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_face_family_name, 1234)
|
|
sdlttf.TTF_CloseFont(font)
|
|
|
|
def test_TTF_FontFaceStyleName(self):
|
|
font = sdlttf.TTF_OpenFont(fontfile, 10)
|
|
self.assertEqual(sdlttf.TTF_FontFaceStyleName(font), b"Regular")
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_face_style_name, None)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_face_style_name, "test")
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.font_face_style_name, 1234)
|
|
sdlttf.TTF_CloseFont(font)
|
|
|
|
def test_TTF_GlyphIsProvided(self):
|
|
font = sdlttf.TTF_OpenFont(fontfile, 10)
|
|
self.assertIsInstance(font.contents, sdlttf.TTF_Font)
|
|
for ch in range(32, 127):
|
|
self.assertTrue(sdlttf.TTF_GlyphIsProvided(font, ch))
|
|
self.assertFalse(sdlttf.TTF_GlyphIsProvided(font, 0))
|
|
self.assertFalse(sdlttf.TTF_GlyphIsProvided(font, 0x0ff9))
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.glyph_is_provided, None, None)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.glyph_is_provided, "test", None)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.glyph_is_provided, "test", 1234)
|
|
# self.assertRaises((ArgumentError, TypeError),
|
|
# sdlttf.glyph_is_provided, font, None)
|
|
# self.assertRaises((AttributeError, TypeError),
|
|
# sdlttf.glyph_is_provided, font, "test")
|
|
|
|
@unittest.skip("not implemented")
|
|
def test_TTF_GlyphMetrics(self):
|
|
pass
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(unittest.main())
|