| from fontTools.misc.textTools import deHexStr |
| from fontTools.ttLib.tables.otBase import OTTableReader, OTTableWriter |
| import unittest |
| |
| |
| class OTTableReaderTest(unittest.TestCase): |
| def test_readShort(self): |
| reader = OTTableReader(deHexStr("CA FE")) |
| self.assertEqual(reader.readShort(), -13570) |
| self.assertEqual(reader.pos, 2) |
| |
| def test_readLong(self): |
| reader = OTTableReader(deHexStr("CA FE BE EF")) |
| self.assertEqual(reader.readLong(), -889274641) |
| self.assertEqual(reader.pos, 4) |
| |
| def test_readUInt8(self): |
| reader = OTTableReader(deHexStr("C3")) |
| self.assertEqual(reader.readUInt8(), 0xC3) |
| self.assertEqual(reader.pos, 1) |
| |
| def test_readUShort(self): |
| reader = OTTableReader(deHexStr("CA FE")) |
| self.assertEqual(reader.readUShort(), 0xCAFE) |
| self.assertEqual(reader.pos, 2) |
| |
| def test_readUShortArray(self): |
| reader = OTTableReader(deHexStr("DE AD BE EF CA FE")) |
| self.assertEqual(list(reader.readUShortArray(3)), |
| [0xDEAD, 0xBEEF, 0xCAFE]) |
| self.assertEqual(reader.pos, 6) |
| |
| def test_readUInt24(self): |
| reader = OTTableReader(deHexStr("C3 13 37")) |
| self.assertEqual(reader.readUInt24(), 0xC31337) |
| self.assertEqual(reader.pos, 3) |
| |
| def test_readULong(self): |
| reader = OTTableReader(deHexStr("CA FE BE EF")) |
| self.assertEqual(reader.readULong(), 0xCAFEBEEF) |
| self.assertEqual(reader.pos, 4) |
| |
| def test_readTag(self): |
| reader = OTTableReader(deHexStr("46 6F 6F 64")) |
| self.assertEqual(reader.readTag(), "Food") |
| self.assertEqual(reader.pos, 4) |
| |
| def test_readData(self): |
| reader = OTTableReader(deHexStr("48 65 6C 6C 6F")) |
| self.assertEqual(reader.readData(5), b"Hello") |
| self.assertEqual(reader.pos, 5) |
| |
| def test_getSubReader(self): |
| reader = OTTableReader(deHexStr("CAFE F00D")) |
| sub = reader.getSubReader(2) |
| self.assertEqual(sub.readUShort(), 0xF00D) |
| self.assertEqual(reader.readUShort(), 0xCAFE) |
| |
| |
| class OTTableWriterTest(unittest.TestCase): |
| def test_writeShort(self): |
| writer = OTTableWriter() |
| writer.writeShort(-12345) |
| self.assertEqual(writer.getData(), deHexStr("CF C7")) |
| |
| def test_writeLong(self): |
| writer = OTTableWriter() |
| writer.writeLong(-12345678) |
| self.assertEqual(writer.getData(), deHexStr("FF 43 9E B2")) |
| |
| def test_writeUInt8(self): |
| writer = OTTableWriter() |
| writer.writeUInt8(0xBE) |
| self.assertEqual(writer.getData(), deHexStr("BE")) |
| |
| def test_writeUShort(self): |
| writer = OTTableWriter() |
| writer.writeUShort(0xBEEF) |
| self.assertEqual(writer.getData(), deHexStr("BE EF")) |
| |
| def test_writeUInt24(self): |
| writer = OTTableWriter() |
| writer.writeUInt24(0xBEEF77) |
| self.assertEqual(writer.getData(), deHexStr("BE EF 77")) |
| |
| def test_writeULong(self): |
| writer = OTTableWriter() |
| writer.writeULong(0xBEEFCAFE) |
| self.assertEqual(writer.getData(), deHexStr("BE EF CA FE")) |
| |
| |
| if __name__ == "__main__": |
| import sys |
| sys.exit(unittest.main()) |