95 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
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())
 |