xref: /aosp_15_r20/external/harfbuzz_ng/test/subset/repack_test.py (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
1*2d1272b8SAndroid Build Coastguard Worker#!/usr/bin/env python3
2*2d1272b8SAndroid Build Coastguard Worker
3*2d1272b8SAndroid Build Coastguard Workerimport os
4*2d1272b8SAndroid Build Coastguard Worker
5*2d1272b8SAndroid Build Coastguard Worker# Parses a single repacking test file. The first line of the file is
6*2d1272b8SAndroid Build Coastguard Worker# the name of the font to use and the remaining lines define the set of
7*2d1272b8SAndroid Build Coastguard Worker# codepoints in the subset.
8*2d1272b8SAndroid Build Coastguard Workerclass RepackTest:
9*2d1272b8SAndroid Build Coastguard Worker
10*2d1272b8SAndroid Build Coastguard Worker	def __init__(self, test_path, definition):
11*2d1272b8SAndroid Build Coastguard Worker		self.test_path = test_path
12*2d1272b8SAndroid Build Coastguard Worker		self.font_name = None
13*2d1272b8SAndroid Build Coastguard Worker		self.codepoints = set ()
14*2d1272b8SAndroid Build Coastguard Worker		self._parse(definition)
15*2d1272b8SAndroid Build Coastguard Worker
16*2d1272b8SAndroid Build Coastguard Worker	def font_path(self):
17*2d1272b8SAndroid Build Coastguard Worker		return os.path.join (self._base_path (), "fonts", self.font_name)
18*2d1272b8SAndroid Build Coastguard Worker
19*2d1272b8SAndroid Build Coastguard Worker	def codepoints_string (self):
20*2d1272b8SAndroid Build Coastguard Worker		return ",".join (self.codepoints)
21*2d1272b8SAndroid Build Coastguard Worker
22*2d1272b8SAndroid Build Coastguard Worker	def _base_path(self):
23*2d1272b8SAndroid Build Coastguard Worker	        return os.path.join(
24*2d1272b8SAndroid Build Coastguard Worker		    os.path.dirname(self.test_path),
25*2d1272b8SAndroid Build Coastguard Worker		    "../")
26*2d1272b8SAndroid Build Coastguard Worker
27*2d1272b8SAndroid Build Coastguard Worker
28*2d1272b8SAndroid Build Coastguard Worker	def _parse(self, definition):
29*2d1272b8SAndroid Build Coastguard Worker		lines = definition.splitlines ()
30*2d1272b8SAndroid Build Coastguard Worker		self.font_name = lines.pop (0)
31*2d1272b8SAndroid Build Coastguard Worker		for line in lines:
32*2d1272b8SAndroid Build Coastguard Worker			line = line.strip()
33*2d1272b8SAndroid Build Coastguard Worker			if not line:
34*2d1272b8SAndroid Build Coastguard Worker				continue
35*2d1272b8SAndroid Build Coastguard Worker
36*2d1272b8SAndroid Build Coastguard Worker			self.codepoints.add (line)
37