def test_read(self): s = EncodedTextSpec('name') f = Frame() f.encoding = 0 header = ID3Header() header.version = (2, 4, 0) self.assertEquals((u'abcd', b'fg'), s.read(header, f, b'abcd\x00fg'))
def test_write_empty(self): header = ID3Header() header.version = (2, 4, 0) spec = ID3FramesSpec("name") config = ID3SaveConfig() tags = ID3Tags() self.assertEqual(spec.write(config, None, tags), b"")
def test_read_empty(self): header = ID3Header() header.version = (2, 4, 0) spec = ID3FramesSpec("name") value, data = spec.read(header, None, b"") self.assertEqual(data, b"") self.assertTrue(isinstance(value, ID3Tags))
def test_read__ignore_CRM(self): tags = ID3Tags() header = ID3Header() header.version = ID3Header._V22 framedata = CRM(owner="foo", desc="bar", data=b"bla")._writeData() datasize = BitPaddedInt.to_str(len(framedata), width=3, bits=8) tags._read(header, b"CRM" + datasize + framedata) self.assertEqual(len(tags), 0)
def test_read(self): s = TimeStampSpec('name') f = Frame() f.encoding = 0 header = ID3Header() header.version = (2, 4, 0) self.assertEquals((ID3TimeStamp('ab'), b'fg'), s.read(header, f, b'ab\x00fg')) self.assertEquals((ID3TimeStamp('1234'), b''), s.read(header, f, b'1234\x00'))
def test_validate(self): header = ID3Header() header.version = (2, 4, 0) spec = ID3FramesSpec("name") self.assertRaises(TypeError, spec.validate, None, None) self.assertTrue(isinstance(spec.validate(None, []), ID3Tags)) v = spec.validate(None, [TIT3(encoding=3, text=[u"foo"])]) self.assertEqual(v.getall("TIT3")[0].text, [u"foo"])
def test_read_tit3(self): header = ID3Header() header.version = (2, 4, 0) spec = ID3FramesSpec("name") value, data = spec.read(header, None, b"TIT3" + b"\x00\x00\x00\x03" + b"\x00\x00" + b"\x03" + b"F\x00") self.assertTrue(isinstance(value, ID3Tags)) self.assertEqual(data, b"") frames = value.getall("TIT3") self.assertEqual(len(frames), 1) self.assertEqual(frames[0].encoding, 3) self.assertEqual(frames[0].text, [u"F"])
def test_header_2_3_extended(self): fileobj = cBytesIO(b'ID3\x03\x00\x40\x00\x00\x00\x00\x00\x00\x00\x06' b'\x00\x00\x56\x78\x9a\xbc') header = ID3Header(fileobj) self.assertEquals(header._extdata, b'\x00\x00\x56\x78\x9a\xbc')
def test_header_2_4_extended_but_not(self): fileobj = cBytesIO( b'ID3\x04\x00\x40\x00\x00\x00\x00TIT1\x00\x00\x00\x01a') header = ID3Header(fileobj) self.assertEquals(header._extdata, b'')
def test_header_2_4_extended(self): fileobj = cBytesIO( b'ID3\x04\x00\x40\x00\x00\x00\x00\x00\x00\x00\x05\x5a') header = ID3Header(fileobj) self.assertEquals(header._extdata, b'\x5a')
def test_header_2_2(self): fileobj = cBytesIO(b'ID3\x02\x00\x00\x00\x00\x00\x00') header = ID3Header(fileobj) self.assertEquals(header.version, (2, 2, 0))
def test_header_2_4_allow_footer(self): fileobj = cBytesIO(b'ID3\x04\x00\x10\x00\x00\x00\x00') self.assertTrue(ID3Header(fileobj).f_footer)
def test_header_silence(self): with open(self.silence, 'rb') as fileobj: header = ID3Header(fileobj) self.assertEquals(header.version, (2, 3, 0)) self.assertEquals(header.size, 1314)