1import pytest 2 3from ...annotations import skip_if_continuous_integration 4 5 6try: 7 from pyglet.media.drivers import pulse 8 has_pulse = True 9except ImportError: 10 has_pulse = False 11 12try: 13 from pyglet.media.drivers import openal 14 has_openal = True 15except ImportError: 16 has_openal = False 17 18try: 19 from pyglet.media.drivers import directsound 20 has_directsound = True 21except ImportError: 22 has_directsound = False 23 24 25def check_listener_defaults(listener): 26 assert listener.volume == 1.0 27 assert listener.position == (0, 0, 0) 28 assert listener.forward_orientation == (0, 0, -1) 29 assert listener.up_orientation == (0, 1, 0) 30 31 32def check_modifying_values(listener): 33 listener.volume = 0.5 34 listener.position = (-1, 0, 0) 35 listener.forward_orientation = (0, 0, 1) 36 listener.up_orientation = (0, -1, 0) 37 assert listener.volume == 0.5 38 assert listener.position == (-1, 0, 0) 39 assert listener.forward_orientation == (0, 0, 1) 40 assert listener.up_orientation == (0, -1, 0) 41 42 43@pytest.mark.skipif(not has_openal, reason="Test requires OpenAL") 44def test_openal_listener(): 45 driver = openal.create_audio_driver() 46 listener = driver.get_listener() 47 check_listener_defaults(listener=listener) 48 check_modifying_values(listener=listener) 49 # Need to garbage collect the listener before the driver is deleted 50 del listener 51 52 53@skip_if_continuous_integration() # test user cannot connect to PulseAudio daemon 54@pytest.mark.skipif(not has_pulse, reason="Test requires PulseAudio") 55def test_pulse_listener(): 56 driver = pulse.create_audio_driver() 57 listener = driver.get_listener() 58 check_listener_defaults(listener=listener) 59 check_modifying_values(listener=listener) 60 # Need to garbage collect the listener before the driver is deleted 61 del listener 62 63 64@pytest.mark.skipif(not has_directsound, reason="Test requires DirectSound") 65def test_directsound_listener(): 66 driver = directsound.create_audio_driver() 67 listener = driver.get_listener() 68 check_listener_defaults(listener=listener) 69 check_modifying_values(listener=listener) 70 # Need to garbage collect the listener before the driver is deleted 71 del listener 72