diff options
Diffstat (limited to 'Tests/ttLib/tables/_h_m_t_x_test.py')
-rw-r--r-- | Tests/ttLib/tables/_h_m_t_x_test.py | 109 |
1 files changed, 56 insertions, 53 deletions
diff --git a/Tests/ttLib/tables/_h_m_t_x_test.py b/Tests/ttLib/tables/_h_m_t_x_test.py index 79d0cb7e..f7ab8b1d 100644 --- a/Tests/ttLib/tables/_h_m_t_x_test.py +++ b/Tests/ttLib/tables/_h_m_t_x_test.py @@ -8,7 +8,6 @@ import unittest class HmtxTableTest(unittest.TestCase): - def __init__(self, methodName): unittest.TestCase.__init__(self, methodName) # Python 3 renamed assertRaisesRegexp to assertRaisesRegex, @@ -23,10 +22,10 @@ class HmtxTableTest(unittest.TestCase): def makeFont(self, numGlyphs, numberOfMetrics): font = TTFont() - maxp = font['maxp'] = newTable('maxp') + maxp = font["maxp"] = newTable("maxp") maxp.numGlyphs = numGlyphs # from A to ... - font.glyphOrder = [chr(i) for i in range(65, 65+numGlyphs)] + font.glyphOrder = [chr(i) for i in range(65, 65 + numGlyphs)] headerTag = self.tableClass.headerTag font[headerTag] = newTable(headerTag) numberOfMetricsName = self.tableClass.numberOfMetricsName @@ -40,9 +39,9 @@ class HmtxTableTest(unittest.TestCase): mtxTable = newTable(self.tag) mtxTable.decompile(data, font) - self.assertEqual(mtxTable['A'], (674, -11)) - self.assertEqual(mtxTable['B'], (632, 79)) - self.assertEqual(mtxTable['C'], (710, 54)) + self.assertEqual(mtxTable["A"], (674, -11)) + self.assertEqual(mtxTable["B"], (632, 79)) + self.assertEqual(mtxTable["C"], (710, 54)) def test_decompile_additional_SB(self): font = self.makeFont(numGlyphs=4, numberOfMetrics=2) @@ -53,11 +52,11 @@ class HmtxTableTest(unittest.TestCase): mtxTable = newTable(self.tag) mtxTable.decompile(data, font) - self.assertEqual(mtxTable['A'], (674, -11)) - self.assertEqual(mtxTable['B'], (632, 79)) + self.assertEqual(mtxTable["A"], (674, -11)) + self.assertEqual(mtxTable["B"], (632, 79)) # all following have same width as the previous - self.assertEqual(mtxTable['C'], (632, 54)) - self.assertEqual(mtxTable['D'], (632, -4)) + self.assertEqual(mtxTable["C"], (632, 54)) + self.assertEqual(mtxTable["D"], (632, -4)) def test_decompile_not_enough_data(self): font = self.makeFont(numGlyphs=1, numberOfMetrics=1) @@ -75,20 +74,20 @@ class HmtxTableTest(unittest.TestCase): with CapturingLogHandler(log, "WARNING") as captor: mtxTable.decompile(b"\0\0\0\0\0", font) - self.assertTrue( - len([r for r in captor.records if msg == r.msg]) == 1) + self.assertTrue(len([r for r in captor.records if msg == r.msg]) == 1) def test_decompile_num_metrics_greater_than_glyphs(self): font = self.makeFont(numGlyphs=1, numberOfMetrics=2) mtxTable = newTable(self.tag) msg = "The %s.%s exceeds the maxp.numGlyphs" % ( - self.tableClass.headerTag, self.tableClass.numberOfMetricsName) + self.tableClass.headerTag, + self.tableClass.numberOfMetricsName, + ) with CapturingLogHandler(log, "WARNING") as captor: mtxTable.decompile(b"\0\0\0\0", font) - self.assertTrue( - len([r for r in captor.records if msg == r.msg]) == 1) + self.assertTrue(len([r for r in captor.records if msg == r.msg]) == 1) def test_decompile_possibly_negative_advance(self): font = self.makeFont(numGlyphs=1, numberOfMetrics=1) @@ -101,12 +100,12 @@ class HmtxTableTest(unittest.TestCase): mtxTable.decompile(data, font) self.assertTrue( - len([r for r in captor.records - if "has a huge advance" in r.msg]) == 1) + len([r for r in captor.records if "has a huge advance" in r.msg]) == 1 + ) def test_decompile_no_header_table(self): font = TTFont() - maxp = font['maxp'] = newTable('maxp') + maxp = font["maxp"] = newTable("maxp") maxp.numGlyphs = 3 font.glyphOrder = ["A", "B", "C"] @@ -122,7 +121,7 @@ class HmtxTableTest(unittest.TestCase): "A": (400, 30), "B": (400, 40), "C": (400, 50), - } + }, ) def test_compile(self): @@ -130,9 +129,9 @@ class HmtxTableTest(unittest.TestCase): font = self.makeFont(numGlyphs=3, numberOfMetrics=4) mtxTable = font[self.tag] = newTable(self.tag) mtxTable.metrics = { - 'A': (674, -11), - 'B': (632, 79), - 'C': (710, 54), + "A": (674, -11), + "B": (632, 79), + "C": (710, 54), } data = mtxTable.compile(font) @@ -140,17 +139,16 @@ class HmtxTableTest(unittest.TestCase): self.assertEqual(data, deHexStr("02A2 FFF5 0278 004F 02C6 0036")) headerTable = font[self.tableClass.headerTag] - self.assertEqual( - getattr(headerTable, self.tableClass.numberOfMetricsName), 3) + self.assertEqual(getattr(headerTable, self.tableClass.numberOfMetricsName), 3) def test_compile_additional_SB(self): font = self.makeFont(numGlyphs=4, numberOfMetrics=1) mtxTable = font[self.tag] = newTable(self.tag) mtxTable.metrics = { - 'A': (632, -11), - 'B': (632, 79), - 'C': (632, 54), - 'D': (632, -4), + "A": (632, -11), + "B": (632, 79), + "C": (632, 54), + "D": (632, -4), } data = mtxTable.compile(font) @@ -160,20 +158,23 @@ class HmtxTableTest(unittest.TestCase): def test_compile_negative_advance(self): font = self.makeFont(numGlyphs=1, numberOfMetrics=1) mtxTable = font[self.tag] = newTable(self.tag) - mtxTable.metrics = {'A': [-1, 0]} + mtxTable.metrics = {"A": [-1, 0]} with CapturingLogHandler(log, "ERROR") as captor: with self.assertRaisesRegex(TTLibError, "negative advance"): mtxTable.compile(font) self.assertTrue( - len([r for r in captor.records - if "Glyph 'A' has negative advance" in r.msg]) == 1) + len( + [r for r in captor.records if "Glyph 'A' has negative advance" in r.msg] + ) + == 1 + ) def test_compile_struct_out_of_range(self): font = self.makeFont(numGlyphs=1, numberOfMetrics=1) mtxTable = font[self.tag] = newTable(self.tag) - mtxTable.metrics = {'A': (0xFFFF+1, -0x8001)} + mtxTable.metrics = {"A": (0xFFFF + 1, -0x8001)} with self.assertRaises(struct.error): mtxTable.compile(font) @@ -182,9 +183,9 @@ class HmtxTableTest(unittest.TestCase): font = self.makeFont(numGlyphs=3, numberOfMetrics=2) mtxTable = font[self.tag] = newTable(self.tag) mtxTable.metrics = { - 'A': (0.5, 0.5), # round -> (1, 1) - 'B': (0.1, 0.9), # round -> (0, 1) - 'C': (0.1, 0.1), # round -> (0, 0) + "A": (0.5, 0.5), # round -> (1, 1) + "B": (0.1, 0.9), # round -> (0, 1) + "C": (0.1, 0.1), # round -> (0, 0) } data = mtxTable.compile(font) @@ -193,7 +194,7 @@ class HmtxTableTest(unittest.TestCase): def test_compile_no_header_table(self): font = TTFont() - maxp = font['maxp'] = newTable('maxp') + maxp = font["maxp"] = newTable("maxp") maxp.numGlyphs = 3 font.glyphOrder = [chr(i) for i in range(65, 68)] mtxTable = font[self.tag] = newTable(self.tag) @@ -212,44 +213,46 @@ class HmtxTableTest(unittest.TestCase): def test_toXML(self): font = self.makeFont(numGlyphs=2, numberOfMetrics=2) mtxTable = font[self.tag] = newTable(self.tag) - mtxTable.metrics = {'B': (632, 79), 'A': (674, -11)} + mtxTable.metrics = {"B": (632, 79), "A": (674, -11)} self.assertEqual( getXML(mtxTable.toXML), - ('<mtx name="A" %s="674" %s="-11"/>\n' - '<mtx name="B" %s="632" %s="79"/>' % ( - (self.tableClass.advanceName, - self.tableClass.sideBearingName) * 2)).split('\n')) + ( + '<mtx name="A" %s="674" %s="-11"/>\n' + '<mtx name="B" %s="632" %s="79"/>' + % ((self.tableClass.advanceName, self.tableClass.sideBearingName) * 2) + ).split("\n"), + ) def test_fromXML(self): mtxTable = newTable(self.tag) for name, attrs, content in parseXML( - '<mtx name="A" %s="674" %s="-11"/>' - '<mtx name="B" %s="632" %s="79"/>' % ( - (self.tableClass.advanceName, - self.tableClass.sideBearingName) * 2)): + '<mtx name="A" %s="674" %s="-11"/>' + '<mtx name="B" %s="632" %s="79"/>' + % ((self.tableClass.advanceName, self.tableClass.sideBearingName) * 2) + ): mtxTable.fromXML(name, attrs, content, ttFont=None) - self.assertEqual( - mtxTable.metrics, {'A': (674, -11), 'B': (632, 79)}) + self.assertEqual(mtxTable.metrics, {"A": (674, -11), "B": (632, 79)}) def test_delitem(self): mtxTable = newTable(self.tag) - mtxTable.metrics = {'A': (0, 0)} + mtxTable.metrics = {"A": (0, 0)} - del mtxTable['A'] + del mtxTable["A"] - self.assertTrue('A' not in mtxTable.metrics) + self.assertTrue("A" not in mtxTable.metrics) def test_setitem(self): mtxTable = newTable(self.tag) - mtxTable.metrics = {'A': (674, -11), 'B': (632, 79)} - mtxTable['B'] = [0, 0] # list is converted to tuple + mtxTable.metrics = {"A": (674, -11), "B": (632, 79)} + mtxTable["B"] = [0, 0] # list is converted to tuple - self.assertEqual(mtxTable.metrics, {'A': (674, -11), 'B': (0, 0)}) + self.assertEqual(mtxTable.metrics, {"A": (674, -11), "B": (0, 0)}) if __name__ == "__main__": import sys + sys.exit(unittest.main()) |