amine@93: """ amine@2: @author: Amine Sehili amine@93: """ amine@2: import unittest amine@91: from auditok import BufferAudioSource, AudioParameterError amine@2: amine@2: amine@2: class TestBufferAudioSource_SR10_SW1_CH1(unittest.TestCase): amine@2: def setUp(self): amine@92: self.data = b"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345" amine@93: self.audio_source = BufferAudioSource( amine@93: data_buffer=self.data, sampling_rate=10, sample_width=1, channels=1 amine@93: ) amine@2: self.audio_source.open() amine@71: amine@2: def tearDown(self): amine@2: self.audio_source.close() amine@2: amine@2: def test_sr10_sw1_ch1_read_1(self): amine@2: block = self.audio_source.read(1) amine@92: exp = b"A" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_read_6(self): amine@2: block = self.audio_source.read(6) amine@92: exp = b"ABCDEF" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_read_multiple(self): amine@2: block = self.audio_source.read(1) amine@92: exp = b"A" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: block = self.audio_source.read(6) amine@92: exp = b"BCDEFG" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: block = self.audio_source.read(13) amine@92: exp = b"HIJKLMNOPQRST" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: block = self.audio_source.read(9999) amine@92: exp = b"UVWXYZ012345" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_read_all(self): amine@2: block = self.audio_source.read(9999) amine@93: self.assertEqual( amine@93: block, amine@93: self.data, amine@93: msg="wrong block, expected: {}, found: {} ".format( amine@93: self.data, block amine@93: ), amine@93: ) amine@71: amine@2: block = self.audio_source.read(1) amine@93: self.assertEqual( amine@93: block, amine@93: None, amine@93: msg="wrong block, expected: {}, found: {} ".format(None, block), amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_get_sampling_rate(self): amine@2: srate = self.audio_source.get_sampling_rate() amine@93: self.assertEqual( amine@93: srate, amine@93: 10, amine@93: msg="wrong sampling rate, expected: 10, found: {0} ".format(srate), amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_get_sample_width(self): amine@2: swidth = self.audio_source.get_sample_width() amine@93: self.assertEqual( amine@93: swidth, amine@93: 1, amine@93: msg="wrong sample width, expected: 1, found: {0} ".format(swidth), amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_get_channels(self): amine@2: channels = self.audio_source.get_channels() amine@93: self.assertEqual( amine@93: channels, amine@93: 1, amine@93: msg="wrong number of channels, expected: 1, found: {0} ".format( amine@93: channels amine@93: ), amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_get_position_0(self): amine@2: pos = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: pos, 0, msg="wrong position, expected: 0, found: {0} ".format(pos) amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_get_position_5(self): amine@2: self.audio_source.read(5) amine@2: pos = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: pos, 5, msg="wrong position, expected: 5, found: {0} ".format(pos) amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_get_position_25(self): amine@2: self.audio_source.read(5) amine@2: self.audio_source.read(20) amine@71: amine@2: pos = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: pos, 25, msg="wrong position, expected: 5, found: {0} ".format(pos) amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_set_position_0(self): amine@2: self.audio_source.read(10) amine@2: self.audio_source.set_position(0) amine@2: pos = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: pos, 0, msg="wrong position, expected: 0, found: {0} ".format(pos) amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_set_position_10(self): amine@2: self.audio_source.set_position(10) amine@2: pos = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: pos, amine@93: 10, amine@93: msg="wrong position, expected: 10, found: {0} ".format(pos), amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_get_time_position_0(self): amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 0.0, amine@93: msg="wrong time position, expected: 0.0, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_get_time_position_1(self): amine@2: srate = self.audio_source.get_sampling_rate() amine@2: # read one second amine@2: self.audio_source.read(srate) amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 1.0, amine@93: msg="wrong time position, expected: 1.0, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_get_time_position_2_5(self): amine@2: # read 2.5 seconds amine@2: self.audio_source.read(25) amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 2.5, amine@93: msg="wrong time position, expected: 2.5, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_set_time_position_0(self): amine@2: self.audio_source.read(10) amine@2: self.audio_source.set_time_position(0) amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 0.0, amine@93: msg="wrong time position, expected: 0.0, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_set_time_position_1(self): amine@2: self.audio_source.set_time_position(1) amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 1.0, amine@93: msg="wrong time position, expected: 1.0, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_set_time_position_end(self): amine@2: self.audio_source.set_time_position(100) amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 3.2, amine@93: msg="wrong time position, expected: 3.2, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_rewind(self): amine@2: self.audio_source.read(10) amine@2: self.audio_source.rewind() amine@2: tp = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: tp, 0, msg="wrong position, expected: 0.0, found: {0} ".format(tp) amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_set_data(self): amine@92: self.audio_source.set_data(b"12345") amine@2: block = self.audio_source.read(9999) amine@93: self.assertEqual( amine@93: block, amine@93: b"12345", amine@93: msg="wrong block, expected: '12345', found: {0} ".format(block), amine@93: ) amine@71: amine@2: def test_sr10_sw1_ch1_read_closed(self): amine@2: self.audio_source.close() amine@2: with self.assertRaises(Exception): amine@2: self.audio_source.read(1) amine@71: amine@2: amine@2: class TestBufferAudioSource_SR16_SW2_CH1(unittest.TestCase): amine@2: def setUp(self): amine@92: self.data = b"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345" amine@93: self.audio_source = BufferAudioSource( amine@93: data_buffer=self.data, sampling_rate=16, sample_width=2, channels=1 amine@93: ) amine@2: self.audio_source.open() amine@71: amine@2: def tearDown(self): amine@2: self.audio_source.close() amine@2: amine@2: def test_sr16_sw2_ch1_read_1(self): amine@2: block = self.audio_source.read(1) amine@92: exp = b"AB" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_read_6(self): amine@2: block = self.audio_source.read(6) amine@92: exp = b"ABCDEFGHIJKL" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_read_multiple(self): amine@2: block = self.audio_source.read(1) amine@92: exp = b"AB" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: block = self.audio_source.read(6) amine@92: exp = b"CDEFGHIJKLMN" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: block = self.audio_source.read(5) amine@92: exp = b"OPQRSTUVWX" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: block = self.audio_source.read(9999) amine@92: exp = b"YZ012345" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_read_all(self): amine@2: block = self.audio_source.read(9999) amine@93: self.assertEqual( amine@93: block, amine@93: self.data, amine@93: msg="wrong block, expected: {0}, found: {1} ".format( amine@93: self.data, block amine@93: ), amine@93: ) amine@71: amine@2: block = self.audio_source.read(1) amine@93: self.assertEqual( amine@93: block, amine@93: None, amine@93: msg="wrong block, expected: {0}, found: {1} ".format(None, block), amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_get_sampling_rate(self): amine@2: srate = self.audio_source.get_sampling_rate() amine@93: self.assertEqual( amine@93: srate, amine@93: 16, amine@93: msg="wrong sampling rate, expected: 10, found: {0} ".format(srate), amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_get_sample_width(self): amine@2: swidth = self.audio_source.get_sample_width() amine@93: self.assertEqual( amine@93: swidth, amine@93: 2, amine@93: msg="wrong sample width, expected: 1, found: {0} ".format(swidth), amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_get_channels(self): amine@71: amine@2: channels = self.audio_source.get_channels() amine@93: self.assertEqual( amine@93: channels, amine@93: 1, amine@93: msg="wrong number of channels, expected: 1, found: {0} ".format( amine@93: channels amine@93: ), amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_get_position_0(self): amine@2: pos = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: pos, 0, msg="wrong position, expected: 0, found: {0} ".format(pos) amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_get_position_5(self): amine@2: self.audio_source.read(5) amine@2: pos = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: pos, 5, msg="wrong position, expected: 5, found: {0} ".format(pos) amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_get_position_15(self): amine@2: self.audio_source.read(5) amine@2: self.audio_source.read(10) amine@2: pos = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: pos, 15, msg="wrong position, expected: 5, found: {0} ".format(pos) amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_set_position_0(self): amine@2: self.audio_source.read(10) amine@2: self.audio_source.set_position(0) amine@2: pos = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: pos, 0, msg="wrong position, expected: 0, found: {0} ".format(pos) amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_set_position_10(self): amine@2: self.audio_source.set_position(10) amine@2: pos = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: pos, amine@93: 10, amine@93: msg="wrong position, expected: 10, found: {0} ".format(pos), amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_get_time_position_0(self): amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 0.0, amine@93: msg="wrong time position, expected: 0.0, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_get_time_position_1(self): amine@2: srate = self.audio_source.get_sampling_rate() amine@2: # read one second amine@2: self.audio_source.read(srate) amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 1.0, amine@93: msg="wrong time position, expected: 1.0, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_get_time_position_0_75(self): amine@2: # read 2.5 seconds amine@2: self.audio_source.read(12) amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 0.75, amine@93: msg="wrong time position, expected: 0.75, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_set_time_position_0(self): amine@2: self.audio_source.read(10) amine@2: self.audio_source.set_time_position(0) amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 0.0, amine@93: msg="wrong time position, expected: 0.0, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_set_time_position_1(self): amine@2: self.audio_source.set_time_position(1) amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 1.0, amine@93: msg="wrong time position, expected: 1.0, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_set_time_position_end(self): amine@2: self.audio_source.set_time_position(100) amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 1.0, amine@93: msg="wrong time position, expected: 1.0, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_rewind(self): amine@2: self.audio_source.read(10) amine@2: self.audio_source.rewind() amine@2: tp = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: tp, 0, msg="wrong position, expected: 0.0, found: {0} ".format(tp) amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_set_data(self): amine@92: self.audio_source.set_data(b"abcdef") amine@2: block = self.audio_source.read(9999) amine@93: self.assertEqual( amine@93: block, amine@93: b"abcdef", amine@93: msg="wrong block, expected: 'abcdef', found: {0} ".format(block), amine@93: ) amine@71: amine@2: def test_sr16_sw2_ch1_set_data_exception(self): amine@91: with self.assertRaises(AudioParameterError) as audio_param_err: amine@91: self.audio_source.set_data("abcde") amine@91: self.assertEqual( amine@91: "The length of audio data must be an integer " amine@91: "multiple of `sample_width * channels`", amine@91: str(audio_param_err.exception), amine@91: ) amine@93: amine@91: def test_sr16_sw2_ch1_append_data_exception(self): amine@91: with self.assertRaises(AudioParameterError) as audio_param_err: amine@91: self.audio_source.append_data("abcde") amine@91: self.assertEqual( amine@91: "The length of audio data must be an integer " amine@91: "multiple of `sample_width * channels`", amine@91: str(audio_param_err.exception), amine@91: ) amine@71: amine@71: amine@2: class TestBufferAudioSource_SR11_SW4_CH1(unittest.TestCase): amine@2: def setUp(self): amine@92: self.data = b"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefgh" amine@93: self.audio_source = BufferAudioSource( amine@93: data_buffer=self.data, sampling_rate=11, sample_width=4, channels=1 amine@93: ) amine@2: self.audio_source.open() amine@71: amine@2: def tearDown(self): amine@2: self.audio_source.close() amine@2: amine@2: def test_sr11_sw4_ch1_read_1(self): amine@2: block = self.audio_source.read(1) amine@92: exp = b"ABCD" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_read_6(self): amine@2: block = self.audio_source.read(6) amine@92: exp = b"ABCDEFGHIJKLMNOPQRSTUVWX" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_read_multiple(self): amine@2: block = self.audio_source.read(1) amine@92: exp = b"ABCD" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: block = self.audio_source.read(6) amine@92: exp = b"EFGHIJKLMNOPQRSTUVWXYZ01" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: block = self.audio_source.read(3) amine@92: exp = b"23456789abcd" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: block = self.audio_source.read(9999) amine@92: exp = b"efgh" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_read_all(self): amine@2: block = self.audio_source.read(9999) amine@93: self.assertEqual( amine@93: block, amine@93: self.data, amine@93: msg="wrong block, expected: {0}, found: {1} ".format( amine@93: self.data, block amine@93: ), amine@93: ) amine@71: amine@2: block = self.audio_source.read(1) amine@93: self.assertEqual( amine@93: block, amine@93: None, amine@93: msg="wrong block, expected: {0}, found: {1} ".format(None, block), amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_get_sampling_rate(self): amine@2: srate = self.audio_source.get_sampling_rate() amine@93: self.assertEqual( amine@93: srate, amine@93: 11, amine@93: msg="wrong sampling rate, expected: 10, found: {0} ".format(srate), amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_get_sample_width(self): amine@2: swidth = self.audio_source.get_sample_width() amine@93: self.assertEqual( amine@93: swidth, amine@93: 4, amine@93: msg="wrong sample width, expected: 1, found: {0} ".format(swidth), amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_get_channels(self): amine@2: channels = self.audio_source.get_channels() amine@93: self.assertEqual( amine@93: channels, amine@93: 1, amine@93: msg="wrong number of channels, expected: 1, found: {0} ".format( amine@93: channels amine@93: ), amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_get_position_0(self): amine@2: pos = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: pos, 0, msg="wrong position, expected: 0, found: {0} ".format(pos) amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_get_position_5(self): amine@2: self.audio_source.read(5) amine@2: pos = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: pos, 5, msg="wrong position, expected: 5, found: {0} ".format(pos) amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_get_position_9(self): amine@2: self.audio_source.read(5) amine@2: self.audio_source.read(4) amine@2: pos = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: pos, 9, msg="wrong position, expected: 5, found: {0} ".format(pos) amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_set_position_0(self): amine@2: self.audio_source.read(10) amine@2: self.audio_source.set_position(0) amine@2: pos = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: pos, 0, msg="wrong position, expected: 0, found: {0} ".format(pos) amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_set_position_10(self): amine@2: self.audio_source.set_position(10) amine@2: pos = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: pos, amine@93: 10, amine@93: msg="wrong position, expected: 10, found: {0} ".format(pos), amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_get_time_position_0(self): amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 0.0, amine@93: msg="wrong time position, expected: 0.0, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_get_time_position_1(self): amine@2: srate = self.audio_source.get_sampling_rate() amine@2: # read one second amine@2: self.audio_source.read(srate) amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 1.0, amine@93: msg="wrong time position, expected: 1.0, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_get_time_position_0_63(self): amine@2: # read 2.5 seconds amine@2: self.audio_source.read(7) amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertAlmostEqual( amine@93: tp, amine@93: 0.636363636364, amine@93: msg="wrong time position, expected: 0.636363636364, " amine@93: "found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_set_time_position_0(self): amine@2: self.audio_source.read(10) amine@2: self.audio_source.set_time_position(0) amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 0.0, amine@93: msg="wrong time position, expected: 0.0, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_set_time_position_1(self): amine@2: amine@2: self.audio_source.set_time_position(1) amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 1.0, amine@93: msg="wrong time position, expected: 1.0, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_set_time_position_end(self): amine@2: self.audio_source.set_time_position(100) amine@2: tp = self.audio_source.get_time_position() amine@93: self.assertEqual( amine@93: tp, amine@93: 1.0, amine@93: msg="wrong time position, expected: 1.0, found: {0} ".format(tp), amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_rewind(self): amine@2: self.audio_source.read(10) amine@2: self.audio_source.rewind() amine@2: tp = self.audio_source.get_position() amine@93: self.assertEqual( amine@93: tp, 0, msg="wrong position, expected: 0.0, found: {0} ".format(tp) amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_set_data(self): amine@92: self.audio_source.set_data(b"abcdefgh") amine@2: block = self.audio_source.read(9999) amine@92: exp = b"abcdefgh" amine@93: self.assertEqual( amine@93: block, amine@93: exp, amine@93: msg="wrong block, expected: {}, found: {} ".format(exp, block), amine@93: ) amine@71: amine@2: def test_sr11_sw4_ch1_set_data_exception(self): amine@91: with self.assertRaises(AudioParameterError) as audio_param_err: amine@92: self.audio_source.set_data(b"abcdef") amine@91: self.assertEqual( amine@91: "The length of audio data must be an integer " amine@91: "multiple of `sample_width * channels`", amine@91: str(audio_param_err.exception), amine@91: ) amine@93: amine@91: def test_sr11_sw4_ch1_append_data_exception(self): amine@91: with self.assertRaises(AudioParameterError) as audio_param_err: amine@92: self.audio_source.append_data(b"abcdef") amine@91: self.assertEqual( amine@91: "The length of audio data must be an integer " amine@91: "multiple of `sample_width * channels`", amine@91: str(audio_param_err.exception), amine@91: ) amine@71: amine@91: amine@91: class TestBufferAudioSourceCreationException(unittest.TestCase): amine@91: def test_wrong_sample_width_value(self): amine@91: with self.assertRaises(AudioParameterError) as audio_param_err: amine@93: _ = BufferAudioSource( amine@93: data_buffer=b"ABCDEFGHI", amine@93: sampling_rate=9, amine@93: sample_width=3, amine@93: channels=1, amine@93: ) amine@91: self.assertEqual( amine@91: "Sample width must be one of: 1, 2 or 4 (bytes)", amine@91: str(audio_param_err.exception), amine@91: ) amine@91: amine@91: def test_wrong_data_buffer_size(self): amine@91: with self.assertRaises(AudioParameterError) as audio_param_err: amine@93: _ = BufferAudioSource( amine@93: data_buffer=b"ABCDEFGHI", amine@93: sampling_rate=8, amine@93: sample_width=2, amine@94: channels=1, amine@93: ) amine@91: self.assertEqual( amine@91: "The length of audio data must be an integer " amine@91: "multiple of `sample_width * channels`", amine@91: str(audio_param_err.exception), amine@91: ) amine@71: amine@71: amine@71: class TestAudioSourceProperties(unittest.TestCase): amine@71: def test_read_properties(self): amine@92: data = b"" amine@71: sampling_rate = 8000 amine@71: sample_width = 2 amine@71: channels = 1 amine@93: a_source = BufferAudioSource( amine@93: data, sampling_rate, sample_width, channels amine@93: ) amine@71: amine@71: self.assertEqual(a_source.sampling_rate, sampling_rate) amine@71: self.assertEqual(a_source.sample_width, sample_width) amine@71: self.assertEqual(a_source.channels, channels) amine@71: amine@71: def test_set_readonly_properties_exception(self): amine@92: data = b"" amine@71: sampling_rate = 8000 amine@71: sample_width = 2 amine@71: channels = 1 amine@93: a_source = BufferAudioSource( amine@93: data, sampling_rate, sample_width, channels amine@93: ) amine@71: amine@71: with self.assertRaises(AttributeError): amine@71: a_source.sampling_rate = 16000 amine@71: a_source.sample_width = 1 amine@71: a_source.channels = 2 amine@2: amine@2: amine@73: class TestAudioSourceShortProperties(unittest.TestCase): amine@73: def test_read_short_properties(self): amine@92: data = b"" amine@73: sampling_rate = 8000 amine@73: sample_width = 2 amine@73: channels = 1 amine@93: a_source = BufferAudioSource( amine@93: data, sampling_rate, sample_width, channels amine@93: ) amine@73: amine@73: self.assertEqual(a_source.sr, sampling_rate) amine@73: self.assertEqual(a_source.sw, sample_width) amine@73: self.assertEqual(a_source.ch, channels) amine@73: amine@73: def test_set_readonly_short_properties_exception(self): amine@92: data = b"" amine@73: sampling_rate = 8000 amine@73: sample_width = 2 amine@73: channels = 1 amine@93: a_source = BufferAudioSource( amine@93: data, sampling_rate, sample_width, channels amine@93: ) amine@73: amine@73: with self.assertRaises(AttributeError): amine@73: a_source.sr = 16000 amine@73: a_source.sw = 1 amine@73: a_source.ch = 2 amine@73: amine@73: amine@2: if __name__ == "__main__": amine@2: unittest.main()