def test_binarydataspec(self): from mutagen.id3 import BinaryDataSpec s = BinaryDataSpec("name") self.assertEquals(("abcdefg", ""), s.read(None, "abcdefg")) self.assertEquals("None", s.write(None, None)) self.assertEquals("43", s.write(None, 43))
def test_binarydataspec(self): from mutagen.id3 import BinaryDataSpec s = BinaryDataSpec('name') self.assertEqual(s.validate(None, None), None) self.assertEqual(s.validate(None, b"abc"), b"abc") if PY3: self.assertRaises(TypeError, s.validate, None, "abc") else: self.assertEqual(s.validate(None, u"abc"), b"abc") self.assertRaises(ValueError, s.validate, None, u"\xf6\xe4\xfc")
def test_binarydataspec(self): from mutagen.id3 import BinaryDataSpec s = BinaryDataSpec('name') self.assertEquals((b'abcdefg', b''), s.read(None, b'abcdefg')) self.assertEquals(b'', s.write(None, None)) self.assertEquals(b'43', s.write(None, 43)) self.assertEquals(b'abc', s.write(None, b'abc'))
class CTOC(Frame): """ The table of contents frame specified in http://www.id3.org/id3v2-chapters-1.0 """ _framespec = [StringSpec('element_id', 8), BinaryDataSpec('flags')] def __init__(self, element_id, has_parent, ordered, child_element_ids, embeded_frames=[]): self.has_parent = has_parent self.ordered = ordered self.child_element_ids = child_element_ids flags = [] for i in (self.has_parent, self.ordered): if i: flags.append('1') else: flags.append('0') flags = int(''.join(flags)) flags = pack('>H', flags) self.embeded_frames = embeded_frames super(CTOC, self).__init__(element_id, flags) def _writeData(self): def save_frame(frame): #Copied from mutagen.id3.ID3 flags = 0 framedata = frame._writeData() datasize = BitPaddedInt.to_str(len(framedata), width=4) header = pack('>4s4sH', type(frame).__name__, datasize, flags) return header + framedata data = super(CTOC, self)._writeData() for frame in self.embeded_frames: frame = save_frame(frame) data += frame return data