test-kivy-app/kivy_venv/lib/python3.11/site-packages/kivy/tests/test_audio.py

70 lines
1.8 KiB
Python
Raw Normal View History

2024-09-15 12:12:16 +00:00
'''
Audio tests
===========
'''
import unittest
import os
import pytest
if os.environ.get('KIVY_TEST_AUDIO') == '0':
pytestmark = pytest.mark.skip("Audio is not available")
SAMPLE_FILE = os.path.join(os.path.dirname(__file__), 'sample1.ogg')
SAMPLE_LENGTH = 1.402
DELTA = SAMPLE_LENGTH * 0.01
DELAY = 0.2
class AudioTestCase(unittest.TestCase):
def get_sound(self):
import os
assert os.path.exists(SAMPLE_FILE)
from kivy.core import audio
return audio.SoundLoader.load(SAMPLE_FILE)
def test_length_simple(self):
sound = self.get_sound()
volume = sound.volume = 0.75
length = sound.length
self.assertAlmostEqual(SAMPLE_LENGTH, length, delta=DELTA)
# ensure that the gstreamer play/stop doesn't mess up the volume
assert volume == sound.volume
def test_length_playing(self):
import time
sound = self.get_sound()
sound.play()
try:
time.sleep(DELAY)
length = sound.length
self.assertAlmostEqual(SAMPLE_LENGTH, length, delta=DELTA)
finally:
sound.stop()
self.assertAlmostEqual(SAMPLE_LENGTH, length, delta=DELTA)
def test_length_stopped(self):
import time
sound = self.get_sound()
sound.play()
try:
time.sleep(DELAY)
finally:
sound.stop()
length = sound.length
self.assertAlmostEqual(SAMPLE_LENGTH, length, delta=DELTA)
class AudioGstreamerTestCase(AudioTestCase):
def make_sound(self, source):
from kivy.core.audio import audio_gstreamer
return audio_gstreamer.SoundGstreamer(source)
class AudioPygameTestCase(AudioTestCase):
def make_sound(self, source):
from kivy.core.audio import audio_pygame
return audio_pygame.SoundPygame(source)