3 from cStringIO import StringIO
5 from StringIO import StringIO
6 from random import randint
10 class ElementSizeTests(unittest.TestCase):
11 def assert_roundtrip(self, value, length=None):
12 encoded = encode_element_size(value, length=length)
13 encoded_stream = StringIO(encoded)
14 self.assertEqual(value, read_element_size(encoded_stream)[0])
16 def test_unknown(self):
17 for length in xrange(1, 9):
18 self.assert_roundtrip(None, length=length)
20 def test_base_10(self):
21 for value in (10**exp for exp in xrange(1, 16)):
22 self.assert_roundtrip(value)
24 def test_base_2(self):
25 for value in (2**exp for exp in xrange(1, 56)):
26 self.assert_roundtrip(value)
28 def test_max_base_2(self):
29 for value in ((2**exp) - 2 for exp in xrange(1, 57)):
30 self.assert_roundtrip(value)
32 def test_random(self):
34 for value in (randint(0, maximum) for i in xrange(0, 200)):
35 self.assert_roundtrip(value)
38 class ElementIDTests(unittest.TestCase):
52 def assert_roundtrip(self, value):
53 encoded = encode_element_id(value)
54 encoded_stream = StringIO(encoded)
55 self.assertEqual(value, read_element_id(encoded_stream)[0])
57 def test_ebml_ids(self):
58 for id_ in self.ebml_ids:
59 self.assert_roundtrip(id_)
62 if __name__ == '__main__':