pdfminer.six/tests/test_pdfminer_ccitt.py

162 lines
4.4 KiB
Python

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