0
class BLANK_PCM_Reader:
0
#length is the total length of this PCM stream, in seconds
0
@@ -30,25 +33,14 @@ class BLANK_PCM_Reader:
0
self.channels = channels
0
self.bits_per_sample = bits_per_sample
0
- self.bytes_remaining = length * sample_rate * channels * \
0
+ byte_total = length * sample_rate * channels * bits_per_sample / 8
0
+ self.buffer = cStringIO.StringIO('\x01\x00' * (byte_total / 2))
0
- if (bytes < self.bytes_remaining):
0
- if (bytes != len(self.buffer)):
0
- self.buffer = '\x01\x00' * (bytes / 2)
0
- self.bytes_remaining -= bytes
0
- elif (self.bytes_remaining > 0):
0
- self.bytes_remaining = 0
0
- return '\x01\x00' * (bytes / 2)
0
+ return self.buffer.read(bytes)
0
@@ -67,65 +59,141 @@ class DummyMetaData(audiotools.MetaData):
0
album_name=u"Album Name",
0
artist_name=u"Artist Name")
0
+class DummyMetaData2(audiotools.MetaData):
0
+ audiotools.MetaData.__init__(self,
0
+ track_name=u"New Track Name",
0
+ album_name=u"New Album Name",
0
+ artist_name=u"New Artist Name")
0
+class TestWaveAudio(unittest.TestCase):
0
+ self.audio_class = audiotools.WaveAudio
0
+ def testblankencode(self):
0
+ temp = tempfile.NamedTemporaryFile(suffix="." + self.audio_class.SUFFIX)
0
+ new_file = self.audio_class.from_pcm(temp.name,
0
+ BLANK_PCM_Reader(TEST_LENGTH))
0
+ if (new_file.lossless()):
0
+ self.assertEqual(audiotools.pcm_cmp(
0
+ BLANK_PCM_Reader(TEST_LENGTH)),True)
0
+ pcm = new_file.to_pcm()
0
+ audiotools.transfer_data(pcm.read,counter.write)
0
+ self.assert_(len(counter) > 0)
0
+ def testmassencode(self):
0
+ temp = tempfile.NamedTemporaryFile(suffix="." + self.audio_class.SUFFIX)
0
+ tempfiles = [(tempfile.NamedTemporaryFile(
0
+ suffix="." + audio_class.SUFFIX),
0
+ audio_class) for audio_class in audiotools.AVAILABLE_TYPES]
0
+ audio_class.from_pcm(temp_file.name,
0
+ BLANK_PCM_Reader(SHORT_LENGTH))
0
+ for (temp_file,audio_class) in tempfiles]
0
+ new_file = self.audio_class.from_pcm(
0
+ if (new_file.lossless() and f.lossless()):
0
+ self.assertEqual(audiotools.pcm_cmp(
0
+ pcm = new_file.to_pcm()
0
+ audiotools.transfer_data(pcm.read,counter.write)
0
+ self.assert_(len(counter) > 0)
0
+ for (temp_file,audio_class) in tempfiles:
0
+ def testmetadata(self):
0
+ temp = tempfile.NamedTemporaryFile(suffix="." + self.audio_class.SUFFIX)
0
+ new_file = self.audio_class.from_pcm(temp.name,
0
+ BLANK_PCM_Reader(TEST_LENGTH))
0
+ if (new_file.get_metadata() is not None):
0
+ metadata = DummyMetaData()
0
+ new_file.set_metadata(metadata)
0
+ new_file = audiotools.open(temp.name)
0
+ self.assertEqual(metadata,new_file.get_metadata())
0
+ metadata2 = DummyMetaData2()
0
+ new_file.set_metadata(metadata2)
0
+ new_file = audiotools.open(temp.name)
0
+ self.assertEqual(metadata2,new_file.get_metadata())
0
+ metadata2.track_name = u'Track Name 3'
0
+ new_file.set_metadata(metadata2)
0
+ new_file = audiotools.open(temp.name)
0
+ self.assertEqual(metadata2,new_file.get_metadata())
0
+class TestAiffAudio(TestWaveAudio):
0
+ self.audio_class = audiotools.AiffAudio
0
+class TestAuAudio(TestWaveAudio):
0
+ self.audio_class = audiotools.AuAudio
0
+class TestFlacAudio(TestWaveAudio):
0
+ self.audio_class = audiotools.FlacAudio
0
+class TestWavPackAudio(TestWaveAudio):
0
+ self.audio_class = audiotools.WavPackAudio
0
+class TestOggFlacAudio(TestWaveAudio):
0
+ self.audio_class = audiotools.OggFlacAudio
0
+class TestMP3Audio(TestWaveAudio):
0
+ self.audio_class = audiotools.MP3Audio
0
+class TestMP2Audio(TestWaveAudio):
0
+ self.audio_class = audiotools.MP2Audio
0
+class TestVorbisAudio(TestWaveAudio):
0
+ self.audio_class = audiotools.VorbisAudio
0
+class TestM4AAudio(TestWaveAudio):
0
+ self.audio_class = audiotools.M4AAudio
0
+class TestMusepackAudio(TestWaveAudio):
0
+ self.audio_class = audiotools.MusepackAudio
0
+class TestSpeexAudio(TestWaveAudio):
0
+ self.audio_class = audiotools.SpeexAudio
0
-def test_format(AudioFormat):
0
- temp = tempfile.NamedTemporaryFile(suffix="." + AudioFormat.SUFFIX)
0
- dummy_metadata = DummyMetaData()
0
- audiofile = AudioFormat.from_pcm(temp.name,
0
- BLANK_PCM_Reader(TEST_LENGTH))
0
- audiofile.set_metadata(dummy_metadata)
0
- if (audiofile.lossless()):
0
- file_matches = audiotools.pcm_cmp(
0
- audiofile.to_pcm(),BLANK_PCM_Reader(TEST_LENGTH))
0
- p = audiofile.to_pcm()
0
- audiotools.transfer_data(p.read,counter.write)
0
- file_matches = (len(counter) > 0)
0
- audiofile = audiotools.open(audiofile.filename)
0
- file_metadata = audiofile.get_metadata()
0
- if (file_metadata != None):
0
- if (not file_matches):
0
- print >>sys.stderr,"* File data mismatch"
0
- if (file_metadata != dummy_metadata):
0
- #print >>sys.stderr,""
0
- #print >>sys.stderr,repr(file_metadata)
0
- #print >>sys.stderr,repr(dummy_metadata)
0
- print >>sys.stderr,"* File metadata mismatch"
0
- return file_matches and (file_metadata == dummy_metadata)
0
- if (not file_matches):
0
- print >>sys.stderr,"* File data mismatch"
0
if (__name__ == '__main__'):
0
- print "Testing Audio Tools"
0
- if (len(sys.argv) == 1):
0
- type_dict = audiotools.TYPE_MAP
0
- type_dict = dict([(key,value) for (key,value) in
0
- audiotools.TYPE_MAP.items() if
0
- max_suffix_length = max([len(s) for s in type_dict.keys()])
0
- for audiotype in type_dict.values():
0
- "* Testing %%%d.%ds :" % (max_suffix_length,
0
- max_suffix_length) % (audiotype.SUFFIX))
0
- if (test_format(audiotype)):
Comments
No one has commented yet.