Example #1
0
def check_get_packet(oggtest):
    input_file = io.BytesIO(oggtest.data)
    page = OggPage(input_file)

    packet_reader = page.get_packet_reader()
    for result in oggtest.results:
        packet = packet_reader.read()
        eq_(packet, result.data)
        eq_(len(packet), result.size)
Example #2
0
    def test_read_one_packet_three_pages(self):

        index = 12
        input_file = io.BytesIO(oggtests[index].data)
        page = OggPage(input_file)
        packet_reader = page.get_packet_reader()

        out = packet_reader.read(1)
        out += packet_reader.read(255*255*2)
        out += packet_reader.read(4)

        self.assertEqual(len(out), oggtests[index].results[0].size)
        self.assertEqual(out, oggtests[index].results[0].data)
Example #3
0
    def test_read_one_packet_two_pages_2(self):
        index = 14
        input_file = io.BytesIO(oggtests[index].data)
        page = OggPage(input_file)
        packet_reader = page.get_packet_reader()

        out = packet_reader.read(255*255)
        self.assertEqual(len(out), oggtests[index].results[0].size)
        self.assertEqual(out, oggtests[index].results[0].data)

        out = packet_reader.read(1)
        self.assertEqual(len(out), 1)
        self.assertEqual(out, b'h')
Example #4
0
    def test_read_chunks(self):

        input_file = io.BytesIO(array('B', [0]*26 + [1, 4] +  list(b'pyta') ))
        page = OggPage(input_file)
        packet_reader = page.get_packet_reader()

        #import ipdb; ipdb.set_trace()
        out = packet_reader.read(2)
        self.assertEqual(len(out), 2)
        self.assertEqual(out, b'py')

        out = packet_reader.read(2)
        self.assertEqual(len(out), 2)
        self.assertEqual(out, b'ta')
Example #5
0
    def test_read_one_packet_two_pages(self):
        index = 11
        input_file = io.BytesIO(oggtests[index].data)
        page = OggPage(input_file)
        packet_reader = page.get_packet_reader()

        #import ipdb; ipdb.set_trace()
        out = packet_reader.read(1)
        #for i in range(255):
        out += packet_reader.read(255*255)
        out += packet_reader.read(4)

        self.assertEqual(len(out), oggtests[index].results[0].size)
        self.assertEqual(out, oggtests[index].results[0].data)
Example #6
0
    def assert_new_tags(self):

        new_tags = OggVorbisReader(self.temp_ogg).get_tags()

        self.assertEqual(new_tags, self.tags)

        with open(self.ogg_path, 'rb') as old,\
                open(self.temp_ogg, 'rb') as new:
            ogg_old = OggPage(old)
            ogg_new = OggPage(new)

            self.assertEqual(ogg_old.crc, ogg_new.crc)

            while not ogg_old.is_last_page():
                ogg_old.next_page()
                ogg_new.next_page()
                if ogg_old.number == 1:
                    self.assertNotEqual(ogg_old.crc, ogg_new.crc)
                else:
                    self.assertEqual(ogg_old.crc, ogg_new.crc)

            self.assertTrue(ogg_new.is_last_page())
Example #7
0
    def assert_new_tags(self):

        new_tags = OggVorbisReader(self.temp_ogg).get_tags()

        self.assertEqual(new_tags, self.tags)

        with open(self.ogg_path, 'rb') as old,\
                open(self.temp_ogg, 'rb') as new:
            ogg_old = OggPage(old)
            ogg_new = OggPage(new)

            self.assertEqual(ogg_old.crc, ogg_new.crc)

            while not ogg_old.is_last_page():
                ogg_old.next_page()
                ogg_new.next_page()
                if ogg_old.number == 1:
                    self.assertNotEqual(ogg_old.crc, ogg_new.crc)
                else:
                    self.assertEqual(ogg_old.crc, ogg_new.crc)

            self.assertTrue(ogg_new.is_last_page())
Example #8
0
    def test_write_many_tags(self):
        """Write 255 tags with length of 255, to complete fill a ogg page and
        force to create a new ogg page.
        """

        ogg = OggVorbis(self.temp_ogg)

        self.tags = {}
        keys = [''.join(tup) for tup in (list(itertools.product(
                                              string.ascii_lowercase[:16],
                                              repeat=2)))]

        for key in keys:
            self.tags[key] = 'a'*255

        #tags = utils.tag_dict(tags)

        ogg.write_tags(self.tags)

        #import ipdb; ipdb.set_trace()
        new_tags = OggVorbisReader(self.temp_ogg).get_tags()

        self.assertEqual(new_tags, self.tags)

        with open(self.ogg_path, 'rb') as old,\
                open(self.temp_ogg, 'rb') as new:
            ogg_old = OggPage(old)
            ogg_new = OggPage(new)

            self.assertEqual(ogg_old.crc, ogg_new.crc)

            while not ogg_old.is_last_page():
                ogg_old.next_page()
                ogg_new.next_page()
                self.assertNotEqual(ogg_old.crc, ogg_new.crc)

            self.assertFalse(ogg_new.is_last_page())
            ogg_new.next_page()
            self.assertTrue(ogg_new.is_last_page())
Example #9
0
    def test_write_many_tags(self):
        """Write 255 tags with length of 255, to complete fill a ogg page and
        force to create a new ogg page.
        """

        ogg = OggVorbis(self.temp_ogg)

        self.tags = {}
        keys = [
            ''.join(tup) for tup in (
                list(itertools.product(string.ascii_lowercase[:16], repeat=2)))
        ]

        for key in keys:
            self.tags[key] = 'a' * 255

        #tags = utils.tag_dict(tags)

        ogg.write_tags(self.tags)

        #import ipdb; ipdb.set_trace()
        new_tags = OggVorbisReader(self.temp_ogg).get_tags()

        self.assertEqual(new_tags, self.tags)

        with open(self.ogg_path, 'rb') as old,\
                open(self.temp_ogg, 'rb') as new:
            ogg_old = OggPage(old)
            ogg_new = OggPage(new)

            self.assertEqual(ogg_old.crc, ogg_new.crc)

            while not ogg_old.is_last_page():
                ogg_old.next_page()
                ogg_new.next_page()
                self.assertNotEqual(ogg_old.crc, ogg_new.crc)

            self.assertFalse(ogg_new.is_last_page())
            ogg_new.next_page()
            self.assertTrue(ogg_new.is_last_page())