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")
 | |
| 
 |