amine@2
|
1 '''
|
amine@2
|
2 @author: Amine Sehili <amine.sehili@gmail.com>
|
amine@2
|
3 September 2015
|
amine@2
|
4
|
amine@2
|
5 '''
|
amine@2
|
6 import unittest
|
amine@2
|
7
|
amine@91
|
8 from auditok import BufferAudioSource, AudioParameterError
|
amine@2
|
9
|
amine@2
|
10
|
amine@2
|
11 class TestBufferAudioSource_SR10_SW1_CH1(unittest.TestCase):
|
amine@71
|
12
|
amine@2
|
13 def setUp(self):
|
amine@2
|
14 self.signal = "ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"
|
amine@2
|
15 self.audio_source = BufferAudioSource(data_buffer=self.signal,
|
amine@71
|
16 sampling_rate=10, sample_width=1, channels=1)
|
amine@2
|
17 self.audio_source.open()
|
amine@71
|
18
|
amine@2
|
19 def tearDown(self):
|
amine@2
|
20 self.audio_source.close()
|
amine@2
|
21
|
amine@2
|
22 def test_sr10_sw1_ch1_read_1(self):
|
amine@71
|
23
|
amine@2
|
24 block = self.audio_source.read(1)
|
amine@2
|
25 self.assertEqual(block, "A", msg="wrong block, expected: 'A', found: {0} ".format(block))
|
amine@71
|
26
|
amine@2
|
27 def test_sr10_sw1_ch1_read_6(self):
|
amine@71
|
28
|
amine@2
|
29 block = self.audio_source.read(6)
|
amine@2
|
30 self.assertEqual(block, "ABCDEF", msg="wrong block, expected: 'ABCDEF', found: {0} ".format(block))
|
amine@71
|
31
|
amine@2
|
32 def test_sr10_sw1_ch1_read_multiple(self):
|
amine@71
|
33
|
amine@2
|
34 block = self.audio_source.read(1)
|
amine@2
|
35 self.assertEqual(block, "A", msg="wrong block, expected: 'A', found: {0} ".format(block))
|
amine@71
|
36
|
amine@2
|
37 block = self.audio_source.read(6)
|
amine@2
|
38 self.assertEqual(block, "BCDEFG", msg="wrong block, expected: 'BCDEFG', found: {0} ".format(block))
|
amine@71
|
39
|
amine@2
|
40 block = self.audio_source.read(13)
|
amine@2
|
41 self.assertEqual(block, "HIJKLMNOPQRST", msg="wrong block, expected: 'HIJKLMNOPQRST', found: {0} ".format(block))
|
amine@71
|
42
|
amine@2
|
43 block = self.audio_source.read(9999)
|
amine@2
|
44 self.assertEqual(block, "UVWXYZ012345", msg="wrong block, expected: 'UVWXYZ012345', found: {0} ".format(block))
|
amine@71
|
45
|
amine@2
|
46 def test_sr10_sw1_ch1_read_all(self):
|
amine@2
|
47 block = self.audio_source.read(9999)
|
amine@2
|
48 self.assertEqual(block, self.signal, msg="wrong block, expected: {0}, found: {1} ".format(self.signal, block))
|
amine@71
|
49
|
amine@2
|
50 block = self.audio_source.read(1)
|
amine@2
|
51 self.assertEqual(block, None, msg="wrong block, expected: {0}, found: {1} ".format(None, block))
|
amine@71
|
52
|
amine@2
|
53 def test_sr10_sw1_ch1_get_sampling_rate(self):
|
amine@71
|
54
|
amine@2
|
55 srate = self.audio_source.get_sampling_rate()
|
amine@2
|
56 self.assertEqual(srate, 10, msg="wrong sampling rate, expected: 10, found: {0} ".format(srate))
|
amine@71
|
57
|
amine@2
|
58 def test_sr10_sw1_ch1_get_sample_width(self):
|
amine@71
|
59
|
amine@2
|
60 swidth = self.audio_source.get_sample_width()
|
amine@2
|
61 self.assertEqual(swidth, 1, msg="wrong sample width, expected: 1, found: {0} ".format(swidth))
|
amine@71
|
62
|
amine@2
|
63 def test_sr10_sw1_ch1_get_channels(self):
|
amine@71
|
64
|
amine@2
|
65 channels = self.audio_source.get_channels()
|
amine@2
|
66 self.assertEqual(channels, 1, msg="wrong number of channels, expected: 1, found: {0} ".format(channels))
|
amine@71
|
67
|
amine@2
|
68 def test_sr10_sw1_ch1_get_position_0(self):
|
amine@71
|
69
|
amine@2
|
70 pos = self.audio_source.get_position()
|
amine@2
|
71 self.assertEqual(pos, 0, msg="wrong position, expected: 0, found: {0} ".format(pos))
|
amine@71
|
72
|
amine@2
|
73 def test_sr10_sw1_ch1_get_position_5(self):
|
amine@71
|
74
|
amine@2
|
75 self.audio_source.read(5)
|
amine@2
|
76 pos = self.audio_source.get_position()
|
amine@2
|
77 self.assertEqual(pos, 5, msg="wrong position, expected: 5, found: {0} ".format(pos))
|
amine@71
|
78
|
amine@2
|
79 def test_sr10_sw1_ch1_get_position_25(self):
|
amine@71
|
80
|
amine@2
|
81 self.audio_source.read(5)
|
amine@2
|
82 self.audio_source.read(20)
|
amine@71
|
83
|
amine@2
|
84 pos = self.audio_source.get_position()
|
amine@2
|
85 self.assertEqual(pos, 25, msg="wrong position, expected: 5, found: {0} ".format(pos))
|
amine@71
|
86
|
amine@2
|
87 def test_sr10_sw1_ch1_set_position_0(self):
|
amine@71
|
88
|
amine@2
|
89 self.audio_source.read(10)
|
amine@2
|
90 self.audio_source.set_position(0)
|
amine@2
|
91 pos = self.audio_source.get_position()
|
amine@2
|
92 self.assertEqual(pos, 0, msg="wrong position, expected: 0, found: {0} ".format(pos))
|
amine@71
|
93
|
amine@2
|
94 def test_sr10_sw1_ch1_set_position_10(self):
|
amine@71
|
95
|
amine@2
|
96 self.audio_source.set_position(10)
|
amine@2
|
97 pos = self.audio_source.get_position()
|
amine@2
|
98 self.assertEqual(pos, 10, msg="wrong position, expected: 10, found: {0} ".format(pos))
|
amine@71
|
99
|
amine@2
|
100 def test_sr10_sw1_ch1_get_time_position_0(self):
|
amine@71
|
101
|
amine@2
|
102 tp = self.audio_source.get_time_position()
|
amine@2
|
103 self.assertEqual(tp, 0.0, msg="wrong time position, expected: 0.0, found: {0} ".format(tp))
|
amine@71
|
104
|
amine@2
|
105 def test_sr10_sw1_ch1_get_time_position_1(self):
|
amine@71
|
106
|
amine@2
|
107 srate = self.audio_source.get_sampling_rate()
|
amine@2
|
108 # read one second
|
amine@2
|
109 self.audio_source.read(srate)
|
amine@2
|
110 tp = self.audio_source.get_time_position()
|
amine@2
|
111 self.assertEqual(tp, 1.0, msg="wrong time position, expected: 1.0, found: {0} ".format(tp))
|
amine@71
|
112
|
amine@2
|
113 def test_sr10_sw1_ch1_get_time_position_2_5(self):
|
amine@71
|
114
|
amine@2
|
115 # read 2.5 seconds
|
amine@2
|
116 self.audio_source.read(25)
|
amine@2
|
117 tp = self.audio_source.get_time_position()
|
amine@2
|
118 self.assertEqual(tp, 2.5, msg="wrong time position, expected: 2.5, found: {0} ".format(tp))
|
amine@71
|
119
|
amine@2
|
120 def test_sr10_sw1_ch1_set_time_position_0(self):
|
amine@71
|
121
|
amine@2
|
122 self.audio_source.read(10)
|
amine@2
|
123 self.audio_source.set_time_position(0)
|
amine@2
|
124 tp = self.audio_source.get_time_position()
|
amine@2
|
125 self.assertEqual(tp, 0.0, msg="wrong time position, expected: 0.0, found: {0} ".format(tp))
|
amine@71
|
126
|
amine@2
|
127 def test_sr10_sw1_ch1_set_time_position_1(self):
|
amine@2
|
128
|
amine@2
|
129 self.audio_source.set_time_position(1)
|
amine@2
|
130 tp = self.audio_source.get_time_position()
|
amine@2
|
131 self.assertEqual(tp, 1.0, msg="wrong time position, expected: 1.0, found: {0} ".format(tp))
|
amine@71
|
132
|
amine@2
|
133 def test_sr10_sw1_ch1_set_time_position_end(self):
|
amine@2
|
134
|
amine@2
|
135 self.audio_source.set_time_position(100)
|
amine@2
|
136 tp = self.audio_source.get_time_position()
|
amine@2
|
137 self.assertEqual(tp, 3.2, msg="wrong time position, expected: 3.2, found: {0} ".format(tp))
|
amine@71
|
138
|
amine@2
|
139 def test_sr10_sw1_ch1_rewind(self):
|
amine@71
|
140
|
amine@2
|
141 self.audio_source.read(10)
|
amine@2
|
142 self.audio_source.rewind()
|
amine@2
|
143 tp = self.audio_source.get_position()
|
amine@2
|
144 self.assertEqual(tp, 0, msg="wrong position, expected: 0.0, found: {0} ".format(tp))
|
amine@71
|
145
|
amine@2
|
146 def test_sr10_sw1_ch1_set_data(self):
|
amine@2
|
147 self.audio_source.set_data("12345")
|
amine@2
|
148 block = self.audio_source.read(9999)
|
amine@2
|
149 self.assertEqual(block, "12345", msg="wrong block, expected: '12345', found: {0} ".format(block))
|
amine@71
|
150
|
amine@2
|
151 def test_sr10_sw1_ch1_read_closed(self):
|
amine@2
|
152 self.audio_source.close()
|
amine@2
|
153 with self.assertRaises(Exception):
|
amine@2
|
154 self.audio_source.read(1)
|
amine@71
|
155
|
amine@2
|
156
|
amine@2
|
157 class TestBufferAudioSource_SR16_SW2_CH1(unittest.TestCase):
|
amine@71
|
158
|
amine@2
|
159 def setUp(self):
|
amine@2
|
160 self.signal = "ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"
|
amine@2
|
161 self.audio_source = BufferAudioSource(data_buffer=self.signal,
|
amine@71
|
162 sampling_rate=16, sample_width=2, channels=1)
|
amine@2
|
163 self.audio_source.open()
|
amine@71
|
164
|
amine@2
|
165 def tearDown(self):
|
amine@2
|
166 self.audio_source.close()
|
amine@2
|
167
|
amine@2
|
168 def test_sr16_sw2_ch1_read_1(self):
|
amine@71
|
169
|
amine@2
|
170 block = self.audio_source.read(1)
|
amine@2
|
171 self.assertEqual(block, "AB", msg="wrong block, expected: 'AB', found: {0} ".format(block))
|
amine@71
|
172
|
amine@2
|
173 def test_sr16_sw2_ch1_read_6(self):
|
amine@71
|
174
|
amine@2
|
175 block = self.audio_source.read(6)
|
amine@2
|
176 self.assertEqual(block, "ABCDEFGHIJKL", msg="wrong block, expected: 'ABCDEFGHIJKL', found: {0} ".format(block))
|
amine@71
|
177
|
amine@2
|
178 def test_sr16_sw2_ch1_read_multiple(self):
|
amine@71
|
179
|
amine@2
|
180 block = self.audio_source.read(1)
|
amine@2
|
181 self.assertEqual(block, "AB", msg="wrong block, expected: 'AB', found: {0} ".format(block))
|
amine@71
|
182
|
amine@2
|
183 block = self.audio_source.read(6)
|
amine@2
|
184 self.assertEqual(block, "CDEFGHIJKLMN", msg="wrong block, expected: 'CDEFGHIJKLMN', found: {0} ".format(block))
|
amine@71
|
185
|
amine@2
|
186 block = self.audio_source.read(5)
|
amine@2
|
187 self.assertEqual(block, "OPQRSTUVWX", msg="wrong block, expected: 'OPQRSTUVWX', found: {0} ".format(block))
|
amine@71
|
188
|
amine@2
|
189 block = self.audio_source.read(9999)
|
amine@2
|
190 self.assertEqual(block, "YZ012345", msg="wrong block, expected: 'YZ012345', found: {0} ".format(block))
|
amine@71
|
191
|
amine@2
|
192 def test_sr16_sw2_ch1_read_all(self):
|
amine@2
|
193 block = self.audio_source.read(9999)
|
amine@2
|
194 self.assertEqual(block, self.signal, msg="wrong block, expected: {0}, found: {1} ".format(self.signal, block))
|
amine@71
|
195
|
amine@2
|
196 block = self.audio_source.read(1)
|
amine@2
|
197 self.assertEqual(block, None, msg="wrong block, expected: {0}, found: {1} ".format(None, block))
|
amine@71
|
198
|
amine@2
|
199 def test_sr16_sw2_ch1_get_sampling_rate(self):
|
amine@71
|
200
|
amine@2
|
201 srate = self.audio_source.get_sampling_rate()
|
amine@2
|
202 self.assertEqual(srate, 16, msg="wrong sampling rate, expected: 10, found: {0} ".format(srate))
|
amine@71
|
203
|
amine@2
|
204 def test_sr16_sw2_ch1_get_sample_width(self):
|
amine@71
|
205
|
amine@2
|
206 swidth = self.audio_source.get_sample_width()
|
amine@2
|
207 self.assertEqual(swidth, 2, msg="wrong sample width, expected: 1, found: {0} ".format(swidth))
|
amine@71
|
208
|
amine@2
|
209 def test_sr16_sw2_ch1_get_channels(self):
|
amine@71
|
210
|
amine@2
|
211 channels = self.audio_source.get_channels()
|
amine@2
|
212 self.assertEqual(channels, 1, msg="wrong number of channels, expected: 1, found: {0} ".format(channels))
|
amine@71
|
213
|
amine@2
|
214 def test_sr16_sw2_ch1_get_position_0(self):
|
amine@71
|
215
|
amine@2
|
216 pos = self.audio_source.get_position()
|
amine@2
|
217 self.assertEqual(pos, 0, msg="wrong position, expected: 0, found: {0} ".format(pos))
|
amine@71
|
218
|
amine@2
|
219 def test_sr16_sw2_ch1_get_position_5(self):
|
amine@71
|
220
|
amine@2
|
221 self.audio_source.read(5)
|
amine@2
|
222 pos = self.audio_source.get_position()
|
amine@2
|
223 self.assertEqual(pos, 5, msg="wrong position, expected: 5, found: {0} ".format(pos))
|
amine@71
|
224
|
amine@2
|
225 def test_sr16_sw2_ch1_get_position_15(self):
|
amine@71
|
226
|
amine@2
|
227 self.audio_source.read(5)
|
amine@2
|
228 self.audio_source.read(10)
|
amine@71
|
229
|
amine@2
|
230 pos = self.audio_source.get_position()
|
amine@2
|
231 self.assertEqual(pos, 15, msg="wrong position, expected: 5, found: {0} ".format(pos))
|
amine@71
|
232
|
amine@2
|
233 def test_sr16_sw2_ch1_set_position_0(self):
|
amine@71
|
234
|
amine@2
|
235 self.audio_source.read(10)
|
amine@2
|
236 self.audio_source.set_position(0)
|
amine@2
|
237 pos = self.audio_source.get_position()
|
amine@2
|
238 self.assertEqual(pos, 0, msg="wrong position, expected: 0, found: {0} ".format(pos))
|
amine@71
|
239
|
amine@2
|
240 def test_sr16_sw2_ch1_set_position_10(self):
|
amine@71
|
241
|
amine@2
|
242 self.audio_source.set_position(10)
|
amine@2
|
243 pos = self.audio_source.get_position()
|
amine@2
|
244 self.assertEqual(pos, 10, msg="wrong position, expected: 10, found: {0} ".format(pos))
|
amine@71
|
245
|
amine@2
|
246 def test_sr16_sw2_ch1_get_time_position_0(self):
|
amine@71
|
247
|
amine@2
|
248 tp = self.audio_source.get_time_position()
|
amine@2
|
249 self.assertEqual(tp, 0.0, msg="wrong time position, expected: 0.0, found: {0} ".format(tp))
|
amine@71
|
250
|
amine@2
|
251 def test_sr16_sw2_ch1_get_time_position_1(self):
|
amine@71
|
252
|
amine@2
|
253 srate = self.audio_source.get_sampling_rate()
|
amine@2
|
254 # read one second
|
amine@2
|
255 self.audio_source.read(srate)
|
amine@2
|
256 tp = self.audio_source.get_time_position()
|
amine@2
|
257 self.assertEqual(tp, 1.0, msg="wrong time position, expected: 1.0, found: {0} ".format(tp))
|
amine@71
|
258
|
amine@2
|
259 def test_sr16_sw2_ch1_get_time_position_0_75(self):
|
amine@71
|
260
|
amine@2
|
261 # read 2.5 seconds
|
amine@2
|
262 self.audio_source.read(12)
|
amine@2
|
263 tp = self.audio_source.get_time_position()
|
amine@2
|
264 self.assertEqual(tp, 0.75, msg="wrong time position, expected: 0.75, found: {0} ".format(tp))
|
amine@71
|
265
|
amine@2
|
266 def test_sr16_sw2_ch1_set_time_position_0(self):
|
amine@71
|
267
|
amine@2
|
268 self.audio_source.read(10)
|
amine@2
|
269 self.audio_source.set_time_position(0)
|
amine@2
|
270 tp = self.audio_source.get_time_position()
|
amine@2
|
271 self.assertEqual(tp, 0.0, msg="wrong time position, expected: 0.0, found: {0} ".format(tp))
|
amine@71
|
272
|
amine@2
|
273 def test_sr16_sw2_ch1_set_time_position_1(self):
|
amine@2
|
274
|
amine@2
|
275 self.audio_source.set_time_position(1)
|
amine@2
|
276 tp = self.audio_source.get_time_position()
|
amine@2
|
277 self.assertEqual(tp, 1.0, msg="wrong time position, expected: 1.0, found: {0} ".format(tp))
|
amine@71
|
278
|
amine@2
|
279 def test_sr16_sw2_ch1_set_time_position_end(self):
|
amine@2
|
280
|
amine@2
|
281 self.audio_source.set_time_position(100)
|
amine@2
|
282 tp = self.audio_source.get_time_position()
|
amine@2
|
283 self.assertEqual(tp, 1.0, msg="wrong time position, expected: 1.0, found: {0} ".format(tp))
|
amine@71
|
284
|
amine@2
|
285 def test_sr16_sw2_ch1_rewind(self):
|
amine@71
|
286
|
amine@2
|
287 self.audio_source.read(10)
|
amine@2
|
288 self.audio_source.rewind()
|
amine@2
|
289 tp = self.audio_source.get_position()
|
amine@2
|
290 self.assertEqual(tp, 0, msg="wrong position, expected: 0.0, found: {0} ".format(tp))
|
amine@71
|
291
|
amine@2
|
292 def test_sr16_sw2_ch1_set_data(self):
|
amine@71
|
293
|
amine@2
|
294 self.audio_source.set_data("abcdef")
|
amine@2
|
295 block = self.audio_source.read(9999)
|
amine@2
|
296 self.assertEqual(block, "abcdef", msg="wrong block, expected: 'abcdef', found: {0} ".format(block))
|
amine@71
|
297
|
amine@2
|
298 def test_sr16_sw2_ch1_set_data_exception(self):
|
amine@91
|
299 with self.assertRaises(AudioParameterError) as audio_param_err:
|
amine@91
|
300 self.audio_source.set_data("abcde")
|
amine@91
|
301 self.assertEqual(
|
amine@91
|
302 "The length of audio data must be an integer "
|
amine@91
|
303 "multiple of `sample_width * channels`",
|
amine@91
|
304 str(audio_param_err.exception),
|
amine@91
|
305 )
|
amine@91
|
306
|
amine@91
|
307 def test_sr16_sw2_ch1_append_data_exception(self):
|
amine@91
|
308 with self.assertRaises(AudioParameterError) as audio_param_err:
|
amine@91
|
309 self.audio_source.append_data("abcde")
|
amine@91
|
310 self.assertEqual(
|
amine@91
|
311 "The length of audio data must be an integer "
|
amine@91
|
312 "multiple of `sample_width * channels`",
|
amine@91
|
313 str(audio_param_err.exception),
|
amine@91
|
314 )
|
amine@71
|
315
|
amine@71
|
316
|
amine@2
|
317
|
amine@2
|
318 class TestBufferAudioSource_SR11_SW4_CH1(unittest.TestCase):
|
amine@71
|
319
|
amine@2
|
320 def setUp(self):
|
amine@2
|
321 self.signal = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefgh"
|
amine@2
|
322 self.audio_source = BufferAudioSource(data_buffer=self.signal,
|
amine@71
|
323 sampling_rate=11, sample_width=4, channels=1)
|
amine@2
|
324 self.audio_source.open()
|
amine@71
|
325
|
amine@2
|
326 def tearDown(self):
|
amine@2
|
327 self.audio_source.close()
|
amine@2
|
328
|
amine@2
|
329 def test_sr11_sw4_ch1_read_1(self):
|
amine@71
|
330
|
amine@2
|
331 block = self.audio_source.read(1)
|
amine@2
|
332 self.assertEqual(block, "ABCD", msg="wrong block, expected: 'ABCD', found: {0} ".format(block))
|
amine@71
|
333
|
amine@2
|
334 def test_sr11_sw4_ch1_read_6(self):
|
amine@71
|
335
|
amine@2
|
336 block = self.audio_source.read(6)
|
amine@71
|
337 self.assertEqual(block, "ABCDEFGHIJKLMNOPQRSTUVWX",
|
amine@71
|
338 msg="wrong block, expected: 'ABCDEFGHIJKLMNOPQRSTUVWX', found: {0} ".format(block))
|
amine@71
|
339
|
amine@2
|
340 def test_sr11_sw4_ch1_read_multiple(self):
|
amine@71
|
341
|
amine@2
|
342 block = self.audio_source.read(1)
|
amine@2
|
343 self.assertEqual(block, "ABCD", msg="wrong block, expected: 'AB', found: {0} ".format(block))
|
amine@71
|
344
|
amine@2
|
345 block = self.audio_source.read(6)
|
amine@71
|
346 self.assertEqual(block, "EFGHIJKLMNOPQRSTUVWXYZ01",
|
amine@71
|
347 msg="wrong block, expected: 'EFGHIJKLMNOPQRSTUVWXYZ01', found: {0} ".format(block))
|
amine@71
|
348
|
amine@2
|
349 block = self.audio_source.read(3)
|
amine@2
|
350 self.assertEqual(block, "23456789abcd", msg="wrong block, expected: '23456789abcd', found: {0} ".format(block))
|
amine@71
|
351
|
amine@2
|
352 block = self.audio_source.read(9999)
|
amine@2
|
353 self.assertEqual(block, "efgh", msg="wrong block, expected: 'efgh', found: {0} ".format(block))
|
amine@71
|
354
|
amine@2
|
355 def test_sr11_sw4_ch1_read_all(self):
|
amine@2
|
356 block = self.audio_source.read(9999)
|
amine@2
|
357 self.assertEqual(block, self.signal, msg="wrong block, expected: {0}, found: {1} ".format(self.signal, block))
|
amine@71
|
358
|
amine@2
|
359 block = self.audio_source.read(1)
|
amine@2
|
360 self.assertEqual(block, None, msg="wrong block, expected: {0}, found: {1} ".format(None, block))
|
amine@71
|
361
|
amine@2
|
362 def test_sr11_sw4_ch1_get_sampling_rate(self):
|
amine@71
|
363
|
amine@2
|
364 srate = self.audio_source.get_sampling_rate()
|
amine@2
|
365 self.assertEqual(srate, 11, msg="wrong sampling rate, expected: 10, found: {0} ".format(srate))
|
amine@71
|
366
|
amine@2
|
367 def test_sr11_sw4_ch1_get_sample_width(self):
|
amine@71
|
368
|
amine@2
|
369 swidth = self.audio_source.get_sample_width()
|
amine@2
|
370 self.assertEqual(swidth, 4, msg="wrong sample width, expected: 1, found: {0} ".format(swidth))
|
amine@71
|
371
|
amine@2
|
372 def test_sr11_sw4_ch1_get_channels(self):
|
amine@71
|
373
|
amine@2
|
374 channels = self.audio_source.get_channels()
|
amine@2
|
375 self.assertEqual(channels, 1, msg="wrong number of channels, expected: 1, found: {0} ".format(channels))
|
amine@71
|
376
|
amine@2
|
377 def test_sr11_sw4_ch1_get_position_0(self):
|
amine@71
|
378
|
amine@2
|
379 pos = self.audio_source.get_position()
|
amine@2
|
380 self.assertEqual(pos, 0, msg="wrong position, expected: 0, found: {0} ".format(pos))
|
amine@71
|
381
|
amine@2
|
382 def test_sr11_sw4_ch1_get_position_5(self):
|
amine@71
|
383
|
amine@2
|
384 self.audio_source.read(5)
|
amine@2
|
385 pos = self.audio_source.get_position()
|
amine@2
|
386 self.assertEqual(pos, 5, msg="wrong position, expected: 5, found: {0} ".format(pos))
|
amine@71
|
387
|
amine@2
|
388 def test_sr11_sw4_ch1_get_position_9(self):
|
amine@71
|
389
|
amine@2
|
390 self.audio_source.read(5)
|
amine@2
|
391 self.audio_source.read(4)
|
amine@71
|
392
|
amine@2
|
393 pos = self.audio_source.get_position()
|
amine@2
|
394 self.assertEqual(pos, 9, msg="wrong position, expected: 5, found: {0} ".format(pos))
|
amine@71
|
395
|
amine@2
|
396 def test_sr11_sw4_ch1_set_position_0(self):
|
amine@71
|
397
|
amine@2
|
398 self.audio_source.read(10)
|
amine@2
|
399 self.audio_source.set_position(0)
|
amine@2
|
400 pos = self.audio_source.get_position()
|
amine@2
|
401 self.assertEqual(pos, 0, msg="wrong position, expected: 0, found: {0} ".format(pos))
|
amine@71
|
402
|
amine@2
|
403 def test_sr11_sw4_ch1_set_position_10(self):
|
amine@71
|
404
|
amine@2
|
405 self.audio_source.set_position(10)
|
amine@2
|
406 pos = self.audio_source.get_position()
|
amine@2
|
407 self.assertEqual(pos, 10, msg="wrong position, expected: 10, found: {0} ".format(pos))
|
amine@71
|
408
|
amine@2
|
409 def test_sr11_sw4_ch1_get_time_position_0(self):
|
amine@71
|
410
|
amine@2
|
411 tp = self.audio_source.get_time_position()
|
amine@2
|
412 self.assertEqual(tp, 0.0, msg="wrong time position, expected: 0.0, found: {0} ".format(tp))
|
amine@71
|
413
|
amine@2
|
414 def test_sr11_sw4_ch1_get_time_position_1(self):
|
amine@71
|
415
|
amine@2
|
416 srate = self.audio_source.get_sampling_rate()
|
amine@2
|
417 # read one second
|
amine@2
|
418 self.audio_source.read(srate)
|
amine@2
|
419 tp = self.audio_source.get_time_position()
|
amine@2
|
420 self.assertEqual(tp, 1.0, msg="wrong time position, expected: 1.0, found: {0} ".format(tp))
|
amine@71
|
421
|
amine@2
|
422 def test_sr11_sw4_ch1_get_time_position_0_63(self):
|
amine@71
|
423
|
amine@2
|
424 # read 2.5 seconds
|
amine@2
|
425 self.audio_source.read(7)
|
amine@2
|
426 tp = self.audio_source.get_time_position()
|
amine@2
|
427 self.assertAlmostEqual(tp, 0.636363636364, msg="wrong time position, expected: 0.636363636364, found: {0} ".format(tp))
|
amine@71
|
428
|
amine@2
|
429 def test_sr11_sw4_ch1_set_time_position_0(self):
|
amine@71
|
430
|
amine@2
|
431 self.audio_source.read(10)
|
amine@2
|
432 self.audio_source.set_time_position(0)
|
amine@2
|
433 tp = self.audio_source.get_time_position()
|
amine@2
|
434 self.assertEqual(tp, 0.0, msg="wrong time position, expected: 0.0, found: {0} ".format(tp))
|
amine@71
|
435
|
amine@2
|
436 def test_sr11_sw4_ch1_set_time_position_1(self):
|
amine@2
|
437
|
amine@2
|
438 self.audio_source.set_time_position(1)
|
amine@2
|
439 tp = self.audio_source.get_time_position()
|
amine@2
|
440 self.assertEqual(tp, 1.0, msg="wrong time position, expected: 1.0, found: {0} ".format(tp))
|
amine@71
|
441
|
amine@2
|
442 def test_sr11_sw4_ch1_set_time_position_end(self):
|
amine@2
|
443
|
amine@2
|
444 self.audio_source.set_time_position(100)
|
amine@2
|
445 tp = self.audio_source.get_time_position()
|
amine@2
|
446 self.assertEqual(tp, 1.0, msg="wrong time position, expected: 1.0, found: {0} ".format(tp))
|
amine@71
|
447
|
amine@2
|
448 def test_sr11_sw4_ch1_rewind(self):
|
amine@71
|
449
|
amine@2
|
450 self.audio_source.read(10)
|
amine@2
|
451 self.audio_source.rewind()
|
amine@2
|
452 tp = self.audio_source.get_position()
|
amine@2
|
453 self.assertEqual(tp, 0, msg="wrong position, expected: 0.0, found: {0} ".format(tp))
|
amine@71
|
454
|
amine@2
|
455 def test_sr11_sw4_ch1_set_data(self):
|
amine@71
|
456
|
amine@2
|
457 self.audio_source.set_data("abcdefgh")
|
amine@2
|
458 block = self.audio_source.read(9999)
|
amine@2
|
459 self.assertEqual(block, "abcdefgh", msg="wrong block, expected: 'abcdef', found: {0} ".format(block))
|
amine@71
|
460
|
amine@2
|
461 def test_sr11_sw4_ch1_set_data_exception(self):
|
amine@91
|
462 with self.assertRaises(AudioParameterError) as audio_param_err:
|
amine@91
|
463 self.audio_source.set_data("abcdef")
|
amine@91
|
464 self.assertEqual(
|
amine@91
|
465 "The length of audio data must be an integer "
|
amine@91
|
466 "multiple of `sample_width * channels`",
|
amine@91
|
467 str(audio_param_err.exception),
|
amine@91
|
468 )
|
amine@91
|
469
|
amine@91
|
470 def test_sr11_sw4_ch1_append_data_exception(self):
|
amine@91
|
471 with self.assertRaises(AudioParameterError) as audio_param_err:
|
amine@91
|
472 self.audio_source.append_data("abcdef")
|
amine@91
|
473 self.assertEqual(
|
amine@91
|
474 "The length of audio data must be an integer "
|
amine@91
|
475 "multiple of `sample_width * channels`",
|
amine@91
|
476 str(audio_param_err.exception),
|
amine@91
|
477 )
|
amine@71
|
478
|
amine@91
|
479
|
amine@91
|
480 class TestBufferAudioSourceCreationException(unittest.TestCase):
|
amine@91
|
481
|
amine@91
|
482 def test_wrong_sample_width_value(self):
|
amine@91
|
483 data = b"ABCDEFGHI"
|
amine@91
|
484 with self.assertRaises(AudioParameterError) as audio_param_err:
|
amine@91
|
485 _ = BufferAudioSource(data_buffer=data,
|
amine@91
|
486 sampling_rate=9,
|
amine@91
|
487 sample_width=3,
|
amine@91
|
488 channels=1)
|
amine@91
|
489 self.assertEqual(
|
amine@91
|
490 "Sample width must be one of: 1, 2 or 4 (bytes)",
|
amine@91
|
491 str(audio_param_err.exception),
|
amine@91
|
492 )
|
amine@91
|
493
|
amine@91
|
494 def test_wrong_channels_value(self):
|
amine@91
|
495 with self.assertRaises(AudioParameterError) as audio_param_err:
|
amine@91
|
496 _ = BufferAudioSource(data_buffer=b"ABCDEFGH",
|
amine@91
|
497 sampling_rate=8,
|
amine@91
|
498 sample_width=2,
|
amine@91
|
499 channels=2)
|
amine@91
|
500 self.assertEqual(
|
amine@91
|
501 "Only mono audio is currently supported",
|
amine@91
|
502 str(audio_param_err.exception),
|
amine@91
|
503 )
|
amine@91
|
504
|
amine@91
|
505 def test_wrong_data_buffer_size(self):
|
amine@91
|
506 with self.assertRaises(AudioParameterError) as audio_param_err:
|
amine@91
|
507 _ = BufferAudioSource(data_buffer=b"ABCDEFGHI",
|
amine@91
|
508 sampling_rate=8,
|
amine@91
|
509 sample_width=2,
|
amine@91
|
510 channels=2)
|
amine@91
|
511 self.assertEqual(
|
amine@91
|
512 "The length of audio data must be an integer "
|
amine@91
|
513 "multiple of `sample_width * channels`",
|
amine@91
|
514 str(audio_param_err.exception),
|
amine@91
|
515 )
|
amine@71
|
516
|
amine@71
|
517
|
amine@71
|
518 class TestAudioSourceProperties(unittest.TestCase):
|
amine@71
|
519
|
amine@71
|
520 def test_read_properties(self):
|
amine@71
|
521
|
amine@71
|
522 data = ""
|
amine@71
|
523 sampling_rate = 8000
|
amine@71
|
524 sample_width = 2
|
amine@71
|
525 channels = 1
|
amine@71
|
526 a_source = BufferAudioSource(data, sampling_rate, sample_width, channels)
|
amine@71
|
527
|
amine@71
|
528 self.assertEqual(a_source.sampling_rate, sampling_rate)
|
amine@71
|
529 self.assertEqual(a_source.sample_width, sample_width)
|
amine@71
|
530 self.assertEqual(a_source.channels, channels)
|
amine@71
|
531
|
amine@71
|
532 def test_set_readonly_properties_exception(self):
|
amine@71
|
533
|
amine@71
|
534 data = ""
|
amine@71
|
535 sampling_rate = 8000
|
amine@71
|
536 sample_width = 2
|
amine@71
|
537 channels = 1
|
amine@71
|
538 a_source = BufferAudioSource(data, sampling_rate, sample_width, channels)
|
amine@71
|
539
|
amine@71
|
540 with self.assertRaises(AttributeError):
|
amine@71
|
541 a_source.sampling_rate = 16000
|
amine@71
|
542 a_source.sample_width = 1
|
amine@71
|
543 a_source.channels = 2
|
amine@2
|
544
|
amine@2
|
545
|
amine@73
|
546 class TestAudioSourceShortProperties(unittest.TestCase):
|
amine@73
|
547
|
amine@73
|
548 def test_read_short_properties(self):
|
amine@73
|
549
|
amine@73
|
550 data = ""
|
amine@73
|
551 sampling_rate = 8000
|
amine@73
|
552 sample_width = 2
|
amine@73
|
553 channels = 1
|
amine@73
|
554 a_source = BufferAudioSource(data, sampling_rate, sample_width, channels)
|
amine@73
|
555
|
amine@73
|
556 self.assertEqual(a_source.sr, sampling_rate)
|
amine@73
|
557 self.assertEqual(a_source.sw, sample_width)
|
amine@73
|
558 self.assertEqual(a_source.ch, channels)
|
amine@73
|
559
|
amine@73
|
560 def test_set_readonly_short_properties_exception(self):
|
amine@73
|
561
|
amine@73
|
562 data = ""
|
amine@73
|
563 sampling_rate = 8000
|
amine@73
|
564 sample_width = 2
|
amine@73
|
565 channels = 1
|
amine@73
|
566 a_source = BufferAudioSource(data, sampling_rate, sample_width, channels)
|
amine@73
|
567
|
amine@73
|
568 with self.assertRaises(AttributeError):
|
amine@73
|
569 a_source.sr = 16000
|
amine@73
|
570 a_source.sw = 1
|
amine@73
|
571 a_source.ch = 2
|
amine@73
|
572
|
amine@73
|
573
|
amine@2
|
574 if __name__ == "__main__":
|
amine@2
|
575 unittest.main()
|