Esempio n. 1
0
 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)
Esempio n. 2
0
 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)
Esempio n. 3
0
 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)
Esempio n. 4
0
 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])
Esempio n. 5
0
 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)
Esempio n. 6
0
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)
Esempio n. 7
0
 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)
Esempio n. 8
0
 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)
Esempio n. 9
0
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)
Esempio n. 10
0
 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)
Esempio n. 11
0
 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)
Esempio n. 12
0
 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])