treasurehunting2/PySDL2-0.9.5/sdl2/test/hints_test.py
2017-05-13 11:00:53 +02:00

92 lines
4 KiB
Python

import sys
import unittest
from ctypes import cast, c_char_p
from .. import SDL_Init, SDL_Quit, SDL_QuitSubSystem, SDL_INIT_EVERYTHING
from .. import hints
from ..stdinc import SDL_TRUE, SDL_FALSE
class SDLHintsTest(unittest.TestCase):
__tags__ = ["sdl"]
def setUp(self):
SDL_Init(SDL_INIT_EVERYTHING)
def tearDown(self):
SDL_QuitSubSystem(SDL_INIT_EVERYTHING)
SDL_Quit()
def test_SDL_ClearHints(self):
self.assertEqual(hints.SDL_SetHint(b"TEST", b"32"), 1)
self.assertEqual(hints.SDL_GetHint(b"TEST"), b"32")
hints.SDL_ClearHints()
self.assertEqual(hints.SDL_GetHint(b"TEST"), None)
def test_SDL_GetHint(self):
self.assertEqual(hints.SDL_SetHint(b"TEST", b"32"), 1)
self.assertEqual(hints.SDL_GetHint(b"TEST"), b"32")
self.assertEqual(hints.SDL_SetHint(hints.SDL_HINT_RENDER_DRIVER,
b"dummy"), 1)
self.assertEqual(hints.SDL_GetHint(hints.SDL_HINT_RENDER_DRIVER),
b"dummy")
def test_SDL_SetHint(self):
self.assertEqual(hints.SDL_SetHint(b"TEST", b"32"), 1)
self.assertEqual(hints.SDL_GetHint(b"TEST"), b"32")
self.assertEqual(hints.SDL_SetHint(b"TEST", b"abcdef"), 1)
self.assertEqual(hints.SDL_GetHint(b"TEST"), b"abcdef")
self.assertEqual(hints.SDL_SetHint(b"", b""), 1)
self.assertEqual(hints.SDL_GetHint(b""), b"")
def test_SDL_SetHintWithPriority(self):
self.assertEqual(hints.SDL_SetHintWithPriority
(b"TEST", b"32", hints.SDL_HINT_DEFAULT), 1)
self.assertEqual(hints.SDL_GetHint(b"TEST"), b"32")
self.assertEqual(hints.SDL_SetHintWithPriority
(b"TEST", b"abcdef", hints.SDL_HINT_NORMAL), 1)
self.assertEqual(hints.SDL_GetHint(b"TEST"), b"abcdef")
self.assertEqual(hints.SDL_SetHintWithPriority
(b"", b"", hints.SDL_HINT_OVERRIDE), 1)
self.assertEqual(hints.SDL_GetHint(b""), b"")
# self.assertRaises(ValueError, hints.SDL_SetHintWithPriority,
# "TEST", "123456789", 12)
# self.assertRaises(ValueError, hints.SDL_SetHintWithPriority,
# "TEST", "123456789", -78)
# self.assertRaises(ValueError, hints.SDL_SetHintWithPriority,
# "TEST", "123456789", None)
# self.assertRaises(ValueError, hints.SDL_SetHintWithPriority,
# "TEST", "123456789", "bananas")
def test_SDL_GetHintBoolean(self):
self.assertEqual(hints.SDL_SetHint(b"TEST", b"32"), 1)
self.assertEqual(hints.SDL_GetHintBoolean(b"TEST", SDL_TRUE), SDL_TRUE)
self.assertEqual(hints.SDL_GetHintBoolean(b"TEST", SDL_FALSE), SDL_TRUE)
self.assertNotEqual(hints.SDL_GetHintBoolean(b"TEST2", SDL_FALSE), SDL_TRUE)
def test_SDL_AddDelHintCallback(self):
calls = []
def callback(userdata, name, oldval, newval):
data = cast(userdata, c_char_p)
calls.append((data.value, name, oldval, newval))
hintcb = hints.SDL_HintCallback(callback)
udata = c_char_p(b"banana")
hints.SDL_AddHintCallback(hints.SDL_HINT_ALLOW_TOPMOST, hintcb,
udata)
# SDL_AddHintCallback invokes the callback once.
self.assertEqual(len(calls), 1)
self.assertEqual(calls[0], (b"banana", hints.SDL_HINT_ALLOW_TOPMOST,
None, None))
hints.SDL_SetHint(hints.SDL_HINT_ALLOW_TOPMOST, b"true")
self.assertEqual(len(calls), 2)
self.assertEqual(calls[1], (b"banana", hints.SDL_HINT_ALLOW_TOPMOST,
None, b"true"))
hints.SDL_DelHintCallback(hints.SDL_HINT_ALLOW_TOPMOST, hintcb,
udata)
hints.SDL_SetHint(hints.SDL_HINT_ALLOW_TOPMOST, b"false")
self.assertEqual(len(calls), 2)
if __name__ == '__main__':
sys.exit(unittest.main())