From 1288a58eb1916e6adb38884f87383be962c4200e Mon Sep 17 00:00:00 2001 From: Sascha Brawer Date: Fri, 16 Oct 2015 00:05:52 +0200 Subject: [PATCH] Test core functions of OTTableReader and OTTableWriter --- Lib/fontTools/ttLib/tables/otBase.py | 1 + Lib/fontTools/ttLib/tables/otBase_test.py | 73 +++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 Lib/fontTools/ttLib/tables/otBase_test.py diff --git a/Lib/fontTools/ttLib/tables/otBase.py b/Lib/fontTools/ttLib/tables/otBase.py index 2a7dbd70b..c9149dfbd 100644 --- a/Lib/fontTools/ttLib/tables/otBase.py +++ b/Lib/fontTools/ttLib/tables/otBase.py @@ -130,6 +130,7 @@ class OTTableReader(object): def advance(self, count): self.pos += count + def seek(self, pos): self.pos = pos diff --git a/Lib/fontTools/ttLib/tables/otBase_test.py b/Lib/fontTools/ttLib/tables/otBase_test.py new file mode 100644 index 000000000..6464f6c53 --- /dev/null +++ b/Lib/fontTools/ttLib/tables/otBase_test.py @@ -0,0 +1,73 @@ +from __future__ import print_function, division, absolute_import +from fontTools.misc.py23 import * +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_readUShort(self): + reader = OTTableReader(deHexStr("CA FE")) + self.assertEqual(reader.readUShort(), 0xCAFE) + self.assertEqual(reader.pos, 2) + + 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) + + +class OTTableWriterTest(unittest.TestCase): + def test_writeShort(self): + writer = OTTableWriter(globalState={}) + writer.writeShort(-12345) + self.assertEqual(writer.getData(), deHexStr("CF C7")) + + def test_writeLong(self): + writer = OTTableWriter(globalState={}) + writer.writeLong(-12345678) + self.assertEqual(writer.getData(), deHexStr("FF 43 9E B2")) + + def test_writeUShort(self): + writer = OTTableWriter(globalState={}) + writer.writeUShort(0xBEEF) + self.assertEqual(writer.getData(), deHexStr("BE EF")) + + def test_writeUInt24(self): + writer = OTTableWriter(globalState={}) + writer.writeUInt24(0xBEEF77) + self.assertEqual(writer.getData(), deHexStr("BE EF 77")) + + def test_writeULong(self): + writer = OTTableWriter(globalState={}) + writer.writeULong(0xBEEFCAFE) + self.assertEqual(writer.getData(), deHexStr("BE EF CA FE")) + + +if __name__ == "__main__": + unittest.main()