File: hints_test.py

package info (click to toggle)
pysdl2 0.9.9%2Bdfsg1-6
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 3,276 kB
  • sloc: python: 18,592; makefile: 148; sh: 40
file content (77 lines) | stat: -rw-r--r-- 3,294 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import sys
import pytest
from ctypes import cast, c_char_p
from sdl2 import SDL_Init, SDL_Quit, SDL_QuitSubSystem, SDL_INIT_EVERYTHING
from sdl2 import hints
from sdl2.stdinc import SDL_TRUE, SDL_FALSE

class TestSDLHints(object):
    __tags__ = ["sdl"]

    def setup_method(self):
        SDL_Init(SDL_INIT_EVERYTHING)

    def teardown_method(self):
        SDL_QuitSubSystem(SDL_INIT_EVERYTHING)
        SDL_Quit()

    def test_SDL_ClearHints(self):
        assert hints.SDL_SetHint(b"TEST", b"32") == 1
        assert hints.SDL_GetHint(b"TEST") == b"32"
        hints.SDL_ClearHints()
        assert hints.SDL_GetHint(b"TEST") == None

    def test_SDL_GetHint(self):
        assert hints.SDL_SetHint(b"TEST", b"32") == 1
        assert hints.SDL_GetHint(b"TEST") == b"32"
        assert hints.SDL_SetHint(hints.SDL_HINT_ALLOW_TOPMOST, b"true") == 1
        assert hints.SDL_GetHint(hints.SDL_HINT_ALLOW_TOPMOST) == b"true"

    def test_SDL_SetHint(self):
        assert hints.SDL_SetHint(b"TEST", b"32") == 1
        assert hints.SDL_GetHint(b"TEST") == b"32"
        assert hints.SDL_SetHint(b"TEST", b"abcdef") == 1
        assert hints.SDL_GetHint(b"TEST") == b"abcdef"
        assert hints.SDL_SetHint(b"", b"hi") == 1
        assert hints.SDL_GetHint(b"") == b"hi"

    def test_SDL_SetHintWithPriority(self):
        assert hints.SDL_SetHintWithPriority(
                        b"TEST", b"32", hints.SDL_HINT_DEFAULT) == 1
        assert hints.SDL_GetHint(b"TEST") == b"32"
        assert hints.SDL_SetHintWithPriority(
                        b"TEST", b"abcdef", hints.SDL_HINT_NORMAL) == 1
        assert hints.SDL_GetHint(b"TEST") == b"abcdef"
        assert hints.SDL_SetHintWithPriority(
                        b"", b"hi", hints.SDL_HINT_OVERRIDE) == 1
        assert hints.SDL_GetHint(b"") == b"hi"
        assert hints.SDL_SetHintWithPriority(
                        b"", b"bye", hints.SDL_HINT_NORMAL) == 0

    def test_SDL_GetHintBoolean(self):
        assert hints.SDL_SetHint(b"TEST", b"32") == 1
        assert hints.SDL_GetHintBoolean(b"TEST", SDL_TRUE) == SDL_TRUE
        assert hints.SDL_GetHintBoolean(b"TEST", SDL_FALSE) == SDL_TRUE
        assert 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.
        assert len(calls) == 1
        assert calls[0] == (b"banana", hints.SDL_HINT_ALLOW_TOPMOST,
                                    None, None)
        hints.SDL_SetHint(hints.SDL_HINT_ALLOW_TOPMOST, b"true")
        assert len(calls) == 2
        assert 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")
        assert len(calls) == 2