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