import sys
import unittest
import ctypes
from ..stdinc import SDL_TRUE
from .. import video, syswm, version


class SDLSysWMTest(unittest.TestCase):
    __tags__ = ["sdl"]

    def setUp(self):
        video.SDL_VideoInit(None)

    def tearDown(self):
        video.SDL_VideoQuit()

    def test_SDL_GetWindowWMInfo(self):
        window = video.SDL_CreateWindow(b"Test", 10, 10, 10, 10,
                                        video.SDL_WINDOW_HIDDEN)
        wminfo = syswm.SDL_SysWMinfo()
        version.SDL_VERSION(wminfo.version)
        ret = syswm.SDL_GetWindowWMInfo(window, ctypes.byref(wminfo))
        self.assertEqual(ret, SDL_TRUE)
        if sys.platform in ("win32", "cygwin", "cli"):
            self.assertEqual(wminfo.subsystem, syswm.SDL_SYSWM_WINDOWS)
        elif sys.platform.startswith("linux"):
            self.assertIn(wminfo.subsystem,
                          (syswm.SDL_SYSWM_X11, syswm.SDL_SYSWM_DIRECTFB))
        elif sys.platform.startswith("freebsd"):
            self.assertIn(wminfo.subsystem,
                          (syswm.SDL_SYSWM_X11, syswm.SDL_SYSWM_DIRECTFB))
        elif sys.platform.startswith("darwin"):
            self.assertEqual(wminfo.subsystem, syswm.SDL_SYSWM_COCOA)
        video.SDL_DestroyWindow(window)
        # TODO: not sure, what to test here specifically


if __name__ == '__main__':
    sys.exit(unittest.main())
