275 lines
13 KiB
Python
275 lines
13 KiB
Python
import sys
|
|
import unittest
|
|
import ctypes
|
|
from .. import log
|
|
|
|
class SDLLogTest(unittest.TestCase):
|
|
__tags__ = ["sdl"]
|
|
|
|
def setUp(self):
|
|
self.logdata = []
|
|
|
|
def logfunc(userdata, category, priority, message):
|
|
if userdata:
|
|
userdata = ctypes.cast(userdata, ctypes.c_char_p).value
|
|
self.logdata.append((userdata, category, priority, message,))
|
|
|
|
# bind to the TestCase, so we do not loose the reference.
|
|
self.funcptr = log.SDL_LogOutputFunction(logfunc)
|
|
log.SDL_LogSetOutputFunction(self.funcptr, None)
|
|
log.SDL_LogSetAllPriority(log.SDL_LOG_PRIORITY_VERBOSE)
|
|
|
|
def tearDown(self):
|
|
log.SDL_LogSetOutputFunction(log.SDL_LogOutputFunction(), None)
|
|
del self.funcptr
|
|
|
|
def test_SDL_LogMessage(self):
|
|
self.logdata = [] # reset the log
|
|
log.SDL_LogMessage(log.SDL_LOG_CATEGORY_APPLICATION,
|
|
log.SDL_LOG_PRIORITY_VERBOSE, b"test")
|
|
self.assertEqual(self.logdata[0], (None,
|
|
log.SDL_LOG_CATEGORY_APPLICATION,
|
|
log.SDL_LOG_PRIORITY_VERBOSE,
|
|
b"test"))
|
|
log.SDL_LogMessage(log.SDL_LOG_CATEGORY_CUSTOM,
|
|
log.SDL_LOG_PRIORITY_CRITICAL, b"test2")
|
|
self.assertEqual(self.logdata[1], (None, log.SDL_LOG_CATEGORY_CUSTOM,
|
|
log.SDL_LOG_PRIORITY_CRITICAL,
|
|
b"test2"))
|
|
|
|
#self.assertRaises(TypeError, log.SDL_LogMessage, None, None, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogMessage, 123, None, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogMessage, 123, 456, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogMessage, 123, 456, "Test")
|
|
#self.assertRaises(TypeError, log.SDL_LogMessage,
|
|
# log.SDL_LOG_CATEGORY_CUSTOM, None, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogMessage,
|
|
# log.SDL_LOG_CATEGORY_CUSTOM, 123, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogMessage,
|
|
# log.SDL_LOG_CATEGORY_CUSTOM, 123, "Test")
|
|
|
|
def test_SDL_Log(self):
|
|
self.logdata = [] # reset the log
|
|
log.SDL_Log(b"test")
|
|
self.assertEqual(self.logdata[0],
|
|
(None, log.SDL_LOG_CATEGORY_APPLICATION,
|
|
log.SDL_LOG_PRIORITY_INFO, b"test"))
|
|
log.SDL_Log(b"abcdeghijk")
|
|
self.assertEqual(self.logdata[1],
|
|
(None, log.SDL_LOG_CATEGORY_APPLICATION,
|
|
log.SDL_LOG_PRIORITY_INFO, b"abcdeghijk"))
|
|
|
|
def test_SDL_LogCritical(self):
|
|
self.logdata = [] # reset the log
|
|
log.SDL_LogCritical(log.SDL_LOG_CATEGORY_APPLICATION, b"test")
|
|
self.assertEqual(self.logdata[0],
|
|
(None, log.SDL_LOG_CATEGORY_APPLICATION,
|
|
log.SDL_LOG_PRIORITY_CRITICAL, b"test"))
|
|
log.SDL_LogCritical(log.SDL_LOG_CATEGORY_SYSTEM, b"test")
|
|
self.assertEqual(self.logdata[1],
|
|
(None, log.SDL_LOG_CATEGORY_SYSTEM,
|
|
log.SDL_LOG_PRIORITY_CRITICAL, b"test"))
|
|
|
|
#self.assertRaises(TypeError, log.SDL_LogCritical, None, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogCritical, 123, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogCritical, 123, "Test")
|
|
|
|
def test_SDL_LogDebug(self):
|
|
self.logdata = [] # reset the log
|
|
log.SDL_LogDebug(log.SDL_LOG_CATEGORY_APPLICATION, b"test")
|
|
self.assertEqual(self.logdata[0],
|
|
(None, log.SDL_LOG_CATEGORY_APPLICATION,
|
|
log.SDL_LOG_PRIORITY_DEBUG, b"test"))
|
|
log.SDL_LogDebug(log.SDL_LOG_CATEGORY_SYSTEM, b"test")
|
|
self.assertEqual(self.logdata[1], (None, log.SDL_LOG_CATEGORY_SYSTEM,
|
|
log.SDL_LOG_PRIORITY_DEBUG,
|
|
b"test"))
|
|
|
|
#self.assertRaises(TypeError, log.SDL_LogDebug, None, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogDebug, 123, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogDebug, 123, "Test")
|
|
|
|
def test_SDL_LogError(self):
|
|
self.logdata = [] # reset the log
|
|
log.SDL_LogError(log.SDL_LOG_CATEGORY_APPLICATION, b"test")
|
|
self.assertEqual(self.logdata[0],
|
|
(None, log.SDL_LOG_CATEGORY_APPLICATION,
|
|
log.SDL_LOG_PRIORITY_ERROR, b"test"))
|
|
log.SDL_LogError(log.SDL_LOG_CATEGORY_SYSTEM, b"test")
|
|
self.assertEqual(self.logdata[1], (None, log.SDL_LOG_CATEGORY_SYSTEM,
|
|
log.SDL_LOG_PRIORITY_ERROR,
|
|
b"test"))
|
|
|
|
#self.assertRaises(TypeError, log.SDL_LogError, None, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogError, 123, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogError, 123, "Test")
|
|
|
|
def test_SDL_LogInfo(self):
|
|
self.logdata = [] # reset the log
|
|
log.SDL_LogInfo(log.SDL_LOG_CATEGORY_APPLICATION, b"test")
|
|
self.assertEqual(self.logdata[0],
|
|
(None, log.SDL_LOG_CATEGORY_APPLICATION,
|
|
log.SDL_LOG_PRIORITY_INFO, b"test"))
|
|
log.SDL_LogInfo(log.SDL_LOG_CATEGORY_SYSTEM, b"test")
|
|
self.assertEqual(self.logdata[1], (None, log.SDL_LOG_CATEGORY_SYSTEM,
|
|
log.SDL_LOG_PRIORITY_INFO,
|
|
b"test"))
|
|
|
|
#self.assertRaises(TypeError, log.SDL_LogInfo, None, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogInfo, 123, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogInfo, 123, "Test")
|
|
|
|
def test_SDL_LogVerbose(self):
|
|
self.logdata = [] # reset the log
|
|
log.SDL_LogVerbose(log.SDL_LOG_CATEGORY_APPLICATION, b"test")
|
|
self.assertEqual(self.logdata[0],
|
|
(None, log.SDL_LOG_CATEGORY_APPLICATION,
|
|
log.SDL_LOG_PRIORITY_VERBOSE, b"test"))
|
|
log.SDL_LogVerbose(log.SDL_LOG_CATEGORY_SYSTEM, b"test")
|
|
self.assertEqual(self.logdata[1], (None, log.SDL_LOG_CATEGORY_SYSTEM,
|
|
log.SDL_LOG_PRIORITY_VERBOSE,
|
|
b"test"))
|
|
|
|
#self.assertRaises(TypeError, log.SDL_LogVerbose, None, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogVerbose, 123, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogVerbose, 123, "Test")
|
|
|
|
def test_SDL_LogWarn(self):
|
|
self.logdata = [] # reset the log
|
|
log.SDL_LogWarn(log.SDL_LOG_CATEGORY_APPLICATION, b"test")
|
|
self.assertEqual(self.logdata[0],
|
|
(None, log.SDL_LOG_CATEGORY_APPLICATION,
|
|
log.SDL_LOG_PRIORITY_WARN, b"test"))
|
|
log.SDL_LogWarn(log.SDL_LOG_CATEGORY_SYSTEM, b"test")
|
|
self.assertEqual(self.logdata[1], (None, log.SDL_LOG_CATEGORY_SYSTEM,
|
|
log.SDL_LOG_PRIORITY_WARN, b"test"))
|
|
|
|
#self.assertRaises(TypeError, log.SDL_LogWarn, None, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogWarn, 123, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogWarn, 123, "Test")
|
|
|
|
def test_SDL_LogSetAllPriority(self):
|
|
self.assertEqual(log.SDL_LogGetPriority
|
|
(log.SDL_LOG_CATEGORY_APPLICATION),
|
|
log.SDL_LOG_PRIORITY_VERBOSE)
|
|
self.assertEqual(log.SDL_LogGetPriority
|
|
(log.SDL_LOG_CATEGORY_SYSTEM),
|
|
log.SDL_LOG_PRIORITY_VERBOSE)
|
|
log.SDL_LogSetAllPriority(log.SDL_LOG_PRIORITY_WARN)
|
|
self.assertEqual(log.SDL_LogGetPriority
|
|
(log.SDL_LOG_CATEGORY_APPLICATION),
|
|
log.SDL_LOG_PRIORITY_WARN)
|
|
self.assertEqual(log.SDL_LogGetPriority
|
|
(log.SDL_LOG_CATEGORY_SYSTEM),
|
|
log.SDL_LOG_PRIORITY_WARN)
|
|
# self.assertRaises(ValueError, log.SDL_LogSetAllPriority, 123)
|
|
# self.assertRaises(TypeError, log.SDL_LogSetAllPriority, None)
|
|
# self.assertRaises(TypeError, log.SDL_LogSetAllPriority, "test")
|
|
|
|
# Reset to the setUp() value, so other tests do not fail
|
|
log.SDL_LogSetAllPriority(log.SDL_LOG_PRIORITY_VERBOSE)
|
|
|
|
def test_SDL_LogGetSetPriority(self):
|
|
self.assertEqual(log.SDL_LogGetPriority
|
|
(log.SDL_LOG_CATEGORY_APPLICATION),
|
|
log.SDL_LOG_PRIORITY_VERBOSE)
|
|
self.assertEqual(log.SDL_LogGetPriority(log.SDL_LOG_CATEGORY_SYSTEM),
|
|
log.SDL_LOG_PRIORITY_VERBOSE)
|
|
self.assertEqual(log.SDL_LogGetPriority(log.SDL_LOG_CATEGORY_CUSTOM),
|
|
log.SDL_LOG_PRIORITY_VERBOSE)
|
|
log.SDL_LogSetPriority(log.SDL_LOG_CATEGORY_CUSTOM,
|
|
log.SDL_LOG_PRIORITY_INFO)
|
|
self.assertEqual(log.SDL_LogGetPriority
|
|
(log.SDL_LOG_CATEGORY_APPLICATION),
|
|
log.SDL_LOG_PRIORITY_VERBOSE)
|
|
self.assertEqual(log.SDL_LogGetPriority(log.SDL_LOG_CATEGORY_SYSTEM),
|
|
log.SDL_LOG_PRIORITY_VERBOSE)
|
|
self.assertEqual(log.SDL_LogGetPriority(log.SDL_LOG_CATEGORY_CUSTOM),
|
|
log.SDL_LOG_PRIORITY_INFO)
|
|
log.SDL_LogSetPriority(log.SDL_LOG_CATEGORY_SYSTEM,
|
|
log.SDL_LOG_PRIORITY_ERROR)
|
|
self.assertEqual(log.SDL_LogGetPriority
|
|
(log.SDL_LOG_CATEGORY_APPLICATION),
|
|
log.SDL_LOG_PRIORITY_VERBOSE)
|
|
self.assertEqual(log.SDL_LogGetPriority(log.SDL_LOG_CATEGORY_SYSTEM),
|
|
log.SDL_LOG_PRIORITY_ERROR)
|
|
self.assertEqual(log.SDL_LogGetPriority(log.SDL_LOG_CATEGORY_CUSTOM),
|
|
log.SDL_LOG_PRIORITY_INFO)
|
|
#self.assertRaises(TypeError, log.SDL_LogSetPriority, None, None)
|
|
#self.assertRaises(TypeError, log.SDL_LogSetPriority, "Test", None)
|
|
#self.assertRaises(ValueError, log.SDL_LogSetPriority, 123, None)
|
|
#self.assertRaises(ValueError, log.SDL_LogSetPriority, 123, "Test")
|
|
#self.assertRaises(TypeError, log.SDL_LogSetPriority,
|
|
# log.SDL_LOG_CATEGORY_APPLICATION, None)
|
|
#self.assertRaises(TypeError, log.SDL_LogSetPriority,
|
|
# log.SDL_LOG_CATEGORY_APPLICATION, "Test")
|
|
#self.assertRaises(ValueError, log.SDL_LogSetPriority,
|
|
# log.SDL_LOG_CATEGORY_APPLICATION, 123)
|
|
|
|
#self.assertRaises(TypeError, log.SDL_LogGetPriority, None)
|
|
#self.assertRaises(TypeError, log.SDL_LogGetPriority, "Test")
|
|
#self.assertRaises(ValueError, log.SDL_LogGetPriority, 123)
|
|
|
|
def test_SDL_LogResetPriorities(self):
|
|
# set in setUp()
|
|
defpriority = log.SDL_LOG_PRIORITY_VERBOSE
|
|
categories = (
|
|
log.SDL_LOG_CATEGORY_APPLICATION,
|
|
log.SDL_LOG_CATEGORY_ERROR,
|
|
log.SDL_LOG_CATEGORY_SYSTEM,
|
|
log.SDL_LOG_CATEGORY_AUDIO,
|
|
log.SDL_LOG_CATEGORY_VIDEO,
|
|
log.SDL_LOG_CATEGORY_RENDER,
|
|
log.SDL_LOG_CATEGORY_INPUT,
|
|
log.SDL_LOG_CATEGORY_CUSTOM
|
|
)
|
|
for cat in categories:
|
|
priority = log.SDL_LogGetPriority(cat)
|
|
self.assertEqual(priority, defpriority)
|
|
|
|
log.SDL_LogResetPriorities()
|
|
for cat in categories:
|
|
priority = log.SDL_LogGetPriority(cat)
|
|
self.assertNotEqual(priority, defpriority)
|
|
|
|
log.SDL_LogSetAllPriority(log.SDL_LOG_PRIORITY_VERBOSE)
|
|
|
|
def test_SDL_LogGetSetOutputFunction(self):
|
|
logentries = []
|
|
|
|
def __log(userdata, category, priority, message):
|
|
if userdata:
|
|
userdata = ctypes.cast(userdata, ctypes.c_char_p).value
|
|
logentries.append((userdata, category, priority, message,))
|
|
|
|
# setUp should have set our output function already.
|
|
origfunc = log.SDL_LogOutputFunction()
|
|
origdata = ctypes.c_void_p(0)
|
|
log.SDL_LogGetOutputFunction(ctypes.byref(origfunc),
|
|
ctypes.byref(origdata))
|
|
self.assertFalse(origdata)
|
|
logcount = len(self.logdata)
|
|
origfunc(None, 0, 0, b"test_log_get_set_output_function")
|
|
self.assertEqual(len(self.logdata), logcount + 1)
|
|
self.assertEqual(self.logdata[logcount][3],
|
|
b"test_log_get_set_output_function")
|
|
|
|
logptr = log.SDL_LogOutputFunction(__log)
|
|
userdata = ctypes.c_char_p(b"Testobject")
|
|
log.SDL_LogSetOutputFunction(logptr, userdata)
|
|
ptr = log.SDL_LogOutputFunction()
|
|
userdata = ctypes.c_void_p(0)
|
|
log.SDL_LogGetOutputFunction(ctypes.byref(ptr), ctypes.byref(userdata))
|
|
userdata = ctypes.cast(userdata, ctypes.c_char_p)
|
|
self.assertEqual(userdata.value, b"Testobject")
|
|
log.SDL_Log(b"output test")
|
|
self.assertEqual(logentries[0],
|
|
(b"Testobject", log.SDL_LOG_CATEGORY_APPLICATION,
|
|
log.SDL_LOG_PRIORITY_INFO, b"output test"))
|
|
|
|
log.SDL_LogSetOutputFunction(origfunc, userdata)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(unittest.main())
|