Go to the documentation of this file.00001
00002
00003
00004 import os
00005 import logging
00006 import unittest
00007 import ConfigParser
00008
00009 from nose.tools import raises
00010 from nose.tools import nottest
00011 from rospeex_core.sr.microsoft import Client
00012 from rospeex_core import exceptions as ext
00013
00014
00015
00016 FORMAT = '[%(levelname)s] %(message)s @%(filename)s:%(funcName)s:%(lineno)d'
00017 logging.basicConfig(format=FORMAT, level=logging.DEBUG)
00018 logger = logging.getLogger(__name__)
00019
00020
00021 class TestSpeechRecognitionClient_Microsoft(unittest.TestCase):
00022 def setUp(self):
00023 base_dir = os.path.dirname(__file__)
00024 filename = os.path.join(base_dir, 'config.cfg')
00025 settings = ConfigParser.ConfigParser()
00026 settings.read(filename)
00027 self.flac_file = os.path.join(
00028 base_dir,
00029 settings.get('SpeechRecognition', 'flac_file')
00030 )
00031 self.broken_wav_file = os.path.join(
00032 base_dir,
00033 settings.get('SpeechRecognition', 'broken_wav_file')
00034 )
00035 self.wav_file = os.path.join(
00036 base_dir,
00037 settings.get('SpeechRecognition', 'wav_file')
00038 )
00039 self.api_key = settings.get(
00040 'SpeechRecognition',
00041 'microsoft_api_key'
00042 )
00043
00044 @raises(ext.ParameterException)
00045 def test_request_invalid_audio_format_flac(self):
00046 client = Client()
00047 request_data = open(self.flac_file, 'rb').read()
00048 client._api_key = self.api_key
00049 client.request(request_data)
00050
00051 @raises(ext.ParameterException)
00052 def test_request_invalid_audio_format_broken_wav(self):
00053 language = 'ja'
00054 request_data = open(self.broken_wav_file, 'rb').read()
00055 client = Client()
00056 client._api_key = self.api_key
00057 client.request(data=request_data, language=language)
00058
00059 @raises(ext.ParameterException)
00060 def test_request_invalid_language(self):
00061 language = 'hoge'
00062 request_data = open(self.wav_file, 'rb').read()
00063 client = Client()
00064 client._api_key = self.api_key
00065 client.request(data=request_data, language=language)
00066
00067 @raises(ext.ParameterException)
00068 def test_request_invalid_api_key(self):
00069 language = 'ja'
00070 request_data = open(self.wav_file, 'rb').read()
00071 client = Client()
00072 client._api_key = None
00073 client.request(data=request_data, language=language)
00074
00075 @nottest
00076 @raises(ext.RequestTimeoutException)
00077 def test_request_invalid_request_timeout(self):
00078 language = 'ja'
00079 request_data = open(self.wav_file, 'rb').read()
00080 client = Client()
00081 client._api_key = self.api_key
00082 client.request(data=request_data, language=language, timeout=1)
00083
00084 @nottest
00085 def test_request_valid_language(self):
00086 for language in Client.LANGUAGES:
00087 request_data = open(self.wav_file, 'rb').read()
00088 client = Client()
00089 client._api_key = self.api_key
00090 msg = client.request(data=request_data, language=language)
00091 logger.info(msg)
00092
00093 if __name__ == '__main__':
00094 import rosunit
00095 test_class = TestSpeechRecognitionClient_Microsoft
00096 rosunit.unitrun(
00097 'rospeex_core',
00098 'speech_recognition_client_microsoft',
00099 test_class,
00100 None,
00101 coverage_packages=['rospeex_core.sr']
00102 )