Traktor/myenv/Lib/site-packages/pygame/tests/touch_test.py
2024-05-26 05:12:46 +02:00

98 lines
3.1 KiB
Python

import unittest
import os
import pygame
from pygame._sdl2 import touch
from pygame.tests.test_utils import question
has_touchdevice = touch.get_num_devices() > 0
class TouchTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
pygame.display.init()
@classmethod
def tearDownClass(cls):
pygame.display.quit()
def test_num_devices(self):
touch.get_num_devices()
@unittest.skipIf(not has_touchdevice, "no touch devices found")
def test_get_device(self):
touch.get_device(0)
def test_get_device__invalid(self):
self.assertRaises(pygame.error, touch.get_device, -1234)
self.assertRaises(TypeError, touch.get_device, "test")
@unittest.skipIf(not has_touchdevice, "no touch devices found")
def test_num_fingers(self):
touch.get_num_fingers(touch.get_device(0))
def test_num_fingers__invalid(self):
self.assertRaises(TypeError, touch.get_num_fingers, "test")
self.assertRaises(pygame.error, touch.get_num_fingers, -1234)
class TouchInteractiveTest(unittest.TestCase):
__tags__ = ["interactive"]
@unittest.skipIf(not has_touchdevice, "no touch devices found")
def test_get_finger(self):
"""ask for touch input and check the dict"""
pygame.display.init()
pygame.font.init()
os.environ["SDL_VIDEO_WINDOW_POS"] = "50,50"
screen = pygame.display.set_mode((800, 600))
screen.fill((255, 255, 255))
font = pygame.font.Font(None, 32)
instructions_str_1 = "Please place some fingers on your touch device"
instructions_str_2 = (
"Close the window when finished, " "and answer the question"
)
inst_1_render = font.render(instructions_str_1, True, pygame.Color("#000000"))
inst_2_render = font.render(instructions_str_2, True, pygame.Color("#000000"))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
finger_data_renders = []
num_devices = pygame._sdl2.touch.get_num_devices()
if num_devices > 0:
first_device = pygame._sdl2.touch.get_device(0)
num_fingers = pygame._sdl2.touch.get_num_fingers(first_device)
if num_fingers > 0:
for finger_index in range(0, num_fingers):
data = pygame._sdl2.touch.get_finger(first_device, finger_index)
render = font.render(
f"finger - {data}", True, pygame.Color("#000000")
)
finger_data_renders.append(render)
screen.fill((255, 255, 255))
screen.blit(inst_1_render, (5, 5))
screen.blit(inst_2_render, (5, 40))
for index, finger in enumerate(finger_data_renders):
screen.blit(finger, (5, 80 + (index * 40)))
pygame.display.update()
response = question("Does the finger data seem correct?")
self.assertTrue(response)
pygame.display.quit()
if __name__ == "__main__":
unittest.main()