"""Test of various compression/encoding modules (previously in doctests) """ import binascii from pdfminer.arcfour import Arcfour from pdfminer.ascii85 import asciihexdecode, ascii85decode from pdfminer.lzw import lzwdecode from pdfminer.runlength import rldecode def hex(b): """encode('hex')""" return binascii.hexlify(b) def dehex(b): """decode('hex')""" return binascii.unhexlify(b) class TestAscii85: def test_ascii85decode(self): """The sample string is taken from: http://en.wikipedia.org/w/index.php?title=Ascii85""" assert ascii85decode(b"9jqo^BlbD-BleB1DJ+*+F(f,q") == b"Man is distinguished" assert ascii85decode(b"E,9)oF*2M7/c~>") == b"pleasure." def test_asciihexdecode(self): assert asciihexdecode(b"61 62 2e6364 65") == b"ab.cde" assert asciihexdecode(b"61 62 2e6364 657>") == b"ab.cdep" assert asciihexdecode(b"7>") == b"p" class TestArcfour: def test(self): assert hex(Arcfour(b"Key").process(b"Plaintext")) == b"bbf316e8d940af0ad3" assert hex(Arcfour(b"Wiki").process(b"pedia")) == b"1021bf0420" assert ( hex(Arcfour(b"Secret").process(b"Attack at dawn")) == b"45a01f645fc35b383552544b9bf5" ) class TestLzw: def test_lzwdecode(self): assert ( lzwdecode(b"\x80\x0b\x60\x50\x22\x0c\x0c\x85\x01") == b"\x2d\x2d\x2d\x2d\x2d\x41\x2d\x2d\x2d\x42" ) class TestRunlength: def test_rldecode(self): assert rldecode(b"\x05123456\xfa7\x04abcde\x80junk") == b"1234567777777abcde"