def test_parse_include_element_names(self): include_element_names = ['Segment','Cluster'] result = ebml.parse(self.stream, self.specs, include_element_names=include_element_names) self.validation = [e for e in self.validation if e[2] in include_element_names] self.assertTrue(len(result) == len(self.validation)) for i in range(len(self.validation)): self.check_element(self.validation[i][0], self.validation[i][1], self.validation[i][2], self.validation[i][3], self.validation[i][4], self.validation[i][5], self.validation[i][6], result[i], include_element_names=include_element_names)
def test_parse_ignore_element_types(self): ignore_element_types = [ebml.INTEGER, ebml.BINARY] result = ebml.parse(self.stream, self.specs, ignore_element_types=ignore_element_types) self.validation = [e for e in self.validation if e[1] not in ignore_element_types] self.assertTrue(len(result) == len(self.validation)) for i in range(len(self.validation)): self.check_element(self.validation[i][0], self.validation[i][1], self.validation[i][2], self.validation[i][3], self.validation[i][4], self.validation[i][5], self.validation[i][6], result[i], ignore_element_types=ignore_element_types)
def test_parse_ignore_element_names(self): ignore_element_names = ['EBML', 'SimpleBlock'] result = ebml.parse(self.stream, self.specs, ignore_element_names=ignore_element_names) self.validation = [e for e in self.validation if e[2] not in ignore_element_names] self.assertTrue(len(result) == len(self.validation)) for i in range(len(self.validation)): self.check_element(self.validation[i][0], self.validation[i][1], self.validation[i][2], self.validation[i][3], self.validation[i][4], self.validation[i][5], self.validation[i][6], result[i], ignore_element_names=ignore_element_names)
def test_parse_full(self): result = ebml.parse(self.stream, self.specs) self.assertTrue(len(result) == len(self.validation)) for i in range(len(self.validation)): self.check_element(self.validation[i][0], self.validation[i][1], self.validation[i][2], self.validation[i][3], self.validation[i][4], self.validation[i][5], self.validation[i][6], result[i])
def test_parse_max_level(self): max_level = 3 result = ebml.parse(self.stream, self.specs, max_level=max_level) self.validation = [e for e in self.validation if e[3] <= max_level] self.assertTrue(len(result) == len(self.validation)) for i in range(len(self.validation)): self.check_element(self.validation[i][0], self.validation[i][1], self.validation[i][2], self.validation[i][3], self.validation[i][4], self.validation[i][5], self.validation[i][6], result[i], max_level=max_level)
def generate_yml(filename, specs): """Generate a validation file for the test video""" def _to_builtin(elements): """Recursively convert elements to built-in types""" result = [] for e in elements: if isinstance(e, ebml.MasterElement): result.append((e.id, e.type, e.name, e.level, e.position, e.size, _to_builtin(e.data))) else: result.append((e.id, e.type, e.name, e.level, e.position, e.size, None if isinstance(e.data, io.BytesIO) else e.data)) return result video = io.open(os.path.join(TEST_DIR, filename), 'rb') yml = io.open(os.path.join(EBML_VALIDATION_DIR, filename + '.yml'), 'w') yaml.safe_dump(_to_builtin(ebml.parse(video, specs)), yml)
def test_parse_ignore_element_types(self): ignore_element_types = [ebml.INTEGER, ebml.BINARY] result = ebml.parse(self.stream, self.specs, ignore_element_types=ignore_element_types) self.validation = [ e for e in self.validation if e[1] not in ignore_element_types ] self.assertTrue(len(result) == len(self.validation)) for i in range(len(self.validation)): self.check_element(self.validation[i][0], self.validation[i][1], self.validation[i][2], self.validation[i][3], self.validation[i][4], self.validation[i][5], self.validation[i][6], result[i], ignore_element_types=ignore_element_types)
def generate_yml(filename, specs): """Generate a validation file for the test video""" def _to_builtin(elements): """Recursively convert elements to built-in types""" result = [] for e in elements: if isinstance(e, ebml.MasterElement): result.append( (e.id, e.type, e.name, e.level, e.position, e.size, _to_builtin(e.data))) else: result.append( (e.id, e.type, e.name, e.level, e.position, e.size, None if isinstance(e.data, io.BytesIO) else e.data)) return result video = io.open(os.path.join(TEST_DIR, filename), 'rb') yml = io.open(os.path.join(EBML_VALIDATION_DIR, filename + '.yml'), 'w') yaml.safe_dump(_to_builtin(ebml.parse(video, specs)), yml)
def test_parse_include_element_names(self): include_element_names = ['Segment', 'Cluster'] result = ebml.parse(self.stream, self.specs, include_element_names=include_element_names) self.validation = [ e for e in self.validation if e[2] in include_element_names ] self.assertTrue(len(result) == len(self.validation)) for i in range(len(self.validation)): self.check_element(self.validation[i][0], self.validation[i][1], self.validation[i][2], self.validation[i][3], self.validation[i][4], self.validation[i][5], self.validation[i][6], result[i], include_element_names=include_element_names)
def test_parse_ignore_element_names(self): ignore_element_names = ['EBML', 'SimpleBlock'] result = ebml.parse(self.stream, self.specs, ignore_element_names=ignore_element_names) self.validation = [ e for e in self.validation if e[2] not in ignore_element_names ] self.assertTrue(len(result) == len(self.validation)) for i in range(len(self.validation)): self.check_element(self.validation[i][0], self.validation[i][1], self.validation[i][2], self.validation[i][3], self.validation[i][4], self.validation[i][5], self.validation[i][6], result[i], ignore_element_names=ignore_element_names)