111 lines
2.5 KiB
Python
111 lines
2.5 KiB
Python
|
'''
|
||
|
TestAudio
|
||
|
=========
|
||
|
|
||
|
Tested platforms:
|
||
|
|
||
|
* macOS
|
||
|
* Windows
|
||
|
|
||
|
.. versionadded:: 1.4.0
|
||
|
'''
|
||
|
|
||
|
import unittest
|
||
|
import time
|
||
|
|
||
|
from os import mkdir, remove, environ
|
||
|
from os.path import join, expanduser, exists
|
||
|
from plyer.tests.common import platform_import, PlatformTest
|
||
|
|
||
|
|
||
|
class TestAudio(unittest.TestCase):
|
||
|
'''
|
||
|
TestCase for plyer.audio.
|
||
|
|
||
|
.. versionadded:: 1.4.0
|
||
|
'''
|
||
|
|
||
|
@PlatformTest('macosx')
|
||
|
def test_audio_macosx(self):
|
||
|
'''
|
||
|
Test macOS audio start, stop and play
|
||
|
|
||
|
.. versionadded:: 1.4.0
|
||
|
'''
|
||
|
|
||
|
path = join(expanduser('~'), 'Music')
|
||
|
if not exists(path):
|
||
|
mkdir(path)
|
||
|
|
||
|
audio = platform_import(
|
||
|
platform='macosx',
|
||
|
module_name='audio',
|
||
|
)
|
||
|
|
||
|
self.assertIn('OSXAudio', dir(audio))
|
||
|
audio = audio.instance()
|
||
|
self.assertIn('OSXAudio', str(audio))
|
||
|
|
||
|
self.assertFalse(exists(audio.file_path))
|
||
|
self.assertIsNone(audio.start())
|
||
|
time.sleep(0.5)
|
||
|
self.assertIsNone(audio.stop())
|
||
|
self.assertIsNone(audio.play())
|
||
|
time.sleep(0.5)
|
||
|
self.assertIsNone(audio.stop())
|
||
|
|
||
|
audio.file_path = audio.file_path.replace(
|
||
|
'file://', ''
|
||
|
)
|
||
|
|
||
|
self.assertTrue(exists(audio.file_path))
|
||
|
|
||
|
remove(audio.file_path)
|
||
|
|
||
|
@PlatformTest('win')
|
||
|
def test_audio_win(self):
|
||
|
'''
|
||
|
Test Windows audio start, stop and play
|
||
|
|
||
|
.. versionadded:: 1.4.0
|
||
|
'''
|
||
|
|
||
|
if environ.get('APPVEYOR'):
|
||
|
# Appveyor has no recording device installed
|
||
|
# therefore the test will 100% fail
|
||
|
#
|
||
|
# error_code: 328
|
||
|
# message:
|
||
|
# 'No wave device is installed that can record files in the current
|
||
|
# format. To install a wave device, go to Control Panel, click P')
|
||
|
return
|
||
|
|
||
|
path = join(environ['USERPROFILE'], 'Music')
|
||
|
if not exists(path):
|
||
|
mkdir(path)
|
||
|
|
||
|
audio = platform_import(
|
||
|
platform='win',
|
||
|
module_name='audio',
|
||
|
)
|
||
|
|
||
|
self.assertIn('WinAudio', dir(audio))
|
||
|
audio = audio.instance()
|
||
|
self.assertIn('WinAudio', str(audio))
|
||
|
|
||
|
self.assertFalse(exists(audio.file_path))
|
||
|
self.assertIsNone(audio.start())
|
||
|
time.sleep(0.5)
|
||
|
self.assertIsNone(audio.stop())
|
||
|
self.assertIsNone(audio.play())
|
||
|
time.sleep(0.5)
|
||
|
self.assertIsNone(audio.stop())
|
||
|
|
||
|
self.assertTrue(exists(audio.file_path))
|
||
|
|
||
|
remove(audio.file_path)
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest.main()
|