test/tests/test_pdfminer_ccitt.py

162 lines
4.4 KiB
Python
Raw Normal View History

2023-08-07 12:10:10 +00:00
from pdfminer.ccitt import CCITTG4Parser, CCITTFaxDecoder
class TestCCITTG4Parser:
def get_parser(self, bits):
parser = CCITTG4Parser(len(bits))
parser._curline = [int(c) for c in bits]
parser._reset_line()
return parser
def test_b1(self):
parser = self.get_parser("00000")
parser._do_vertical(0)
assert parser._curpos == 0
return
def test_b2(self):
parser = self.get_parser("10000")
parser._do_vertical(-1)
assert parser._curpos == 0
return
def test_b3(self):
parser = self.get_parser("000111")
parser._do_pass()
assert parser._curpos == 3
assert parser._get_bits() == "111"
return
def test_b4(self):
parser = self.get_parser("00000")
parser._do_vertical(+2)
assert parser._curpos == 2
assert parser._get_bits() == "11"
return
def test_b5(self):
parser = self.get_parser("11111111100")
parser._do_horizontal(0, 3)
assert parser._curpos == 3
parser._do_vertical(1)
assert parser._curpos == 10
assert parser._get_bits() == "0001111111"
return
def test_e1(self):
parser = self.get_parser("10000")
parser._do_vertical(0)
assert parser._curpos == 1
parser._do_vertical(0)
assert parser._curpos == 5
assert parser._get_bits() == "10000"
return
def test_e2(self):
parser = self.get_parser("10011")
parser._do_vertical(0)
assert parser._curpos == 1
parser._do_vertical(2)
assert parser._curpos == 5
assert parser._get_bits() == "10000"
return
def test_e3(self):
parser = self.get_parser("011111")
parser._color = 0
parser._do_vertical(0)
assert parser._color == 1
assert parser._curpos == 1
parser._do_vertical(-2)
assert parser._color == 0
assert parser._curpos == 4
parser._do_vertical(0)
assert parser._curpos == 6
assert parser._get_bits() == "011100"
return
def test_e4(self):
parser = self.get_parser("10000")
parser._do_vertical(0)
assert parser._curpos == 1
parser._do_vertical(-2)
assert parser._curpos == 3
parser._do_vertical(0)
assert parser._curpos == 5
assert parser._get_bits() == "10011"
return
def test_e5(self):
parser = self.get_parser("011000")
parser._color = 0
parser._do_vertical(0)
assert parser._curpos == 1
parser._do_vertical(3)
assert parser._curpos == 6
assert parser._get_bits() == "011111"
return
def test_e6(self):
parser = self.get_parser("11001")
parser._do_pass()
assert parser._curpos == 4
parser._do_vertical(0)
assert parser._curpos == 5
assert parser._get_bits() == "11111"
return
def test_e7(self):
parser = self.get_parser("0000000000")
parser._curpos = 2
parser._color = 1
parser._do_horizontal(2, 6)
assert parser._curpos == 10
assert parser._get_bits() == "1111000000"
return
def test_e8(self):
parser = self.get_parser("001100000")
parser._curpos = 1
parser._color = 0
parser._do_vertical(0)
assert parser._curpos == 2
parser._do_horizontal(7, 0)
assert parser._curpos == 9
assert parser._get_bits() == "101111111"
return
def test_m1(self):
parser = self.get_parser("10101")
parser._do_pass()
assert parser._curpos == 2
parser._do_pass()
assert parser._curpos == 4
assert parser._get_bits() == "1111"
return
def test_m2(self):
parser = self.get_parser("101011")
parser._do_vertical(-1)
parser._do_vertical(-1)
parser._do_vertical(1)
parser._do_horizontal(1, 1)
assert parser._get_bits() == "011101"
return
def test_m3(self):
parser = self.get_parser("10111011")
parser._do_vertical(-1)
parser._do_pass()
parser._do_vertical(1)
parser._do_vertical(1)
assert parser._get_bits() == "00000001"
return
class TestCCITTFaxDecoder:
def test_b1(self):
decoder = CCITTFaxDecoder(5)
decoder.output_line(0, b"0")
assert decoder.close() == b"\x80"
return