annotate tests/test_audio_source.py @ 91:291347075b50

Add tests for BufferAudioSource data validity
author Amine Sehili <amine.sehili@gmail.com>
date Sat, 05 Jan 2019 17:53:12 +0100
parents 60854b74ee5d
children 955a8d91d11f
rev   line source
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()