45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
import unittest
|
|
import struct
|
|
|
|
from zttf.utils import fixed_version, binary_search_parameters, ttf_checksum, glyph_more_components, glyf_skip_format
|
|
|
|
|
|
class TestUtils(unittest.TestCase):
|
|
def test_fixed_version(self):
|
|
cases = [
|
|
(0x00005000, 0.5),
|
|
(0x00010000, 1.0),
|
|
(0x00035000, 3.5),
|
|
(0x00105000, 10.5)
|
|
]
|
|
for case in cases:
|
|
self.assertEqual(fixed_version(case[0]), case[1])
|
|
|
|
def test_binary_parameters(self):
|
|
cases = {
|
|
39: (32, 5),
|
|
10: (8, 3),
|
|
19: (16, 4)
|
|
}
|
|
for n, result in cases.items():
|
|
self.assertEqual(binary_search_parameters(n), result)
|
|
|
|
def test_checksum(self):
|
|
data = struct.pack(">12I", *range(0, 12))
|
|
self.assertEqual(len(data), 48)
|
|
self.assertEqual(ttf_checksum(data), 66)
|
|
self.assertEqual(ttf_checksum(struct.pack(">12I", *range(1000, 13000, 1000))), 78000)
|
|
self.assertEqual(ttf_checksum(struct.pack(">512I", *range(1024, 1024 * 2048, 4096))), 0x1FF80000)
|
|
|
|
def test_component_flag(self):
|
|
self.assertTrue(glyph_more_components((1 << 5)))
|
|
self.assertFalse(glyph_more_components((1 << 4)))
|
|
|
|
def test_skip_format(self):
|
|
self.assertEqual(glyf_skip_format((1 << 0)), ">I")
|
|
self.assertEqual(glyf_skip_format(0), ">H")
|
|
self.assertEqual(glyf_skip_format((1 << 3)), ">HH")
|
|
self.assertEqual(glyf_skip_format((1 << 3) | (1 << 0)), ">IH")
|
|
self.assertEqual(glyf_skip_format((1 << 7)), ">HII")
|
|
|