53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
|
import sys
|
||
|
import unittest
|
||
|
|
||
|
from pathlib import Path
|
||
|
from contextlib import contextmanager
|
||
|
|
||
|
# TODO Would io.StringIO not work in all cases?
|
||
|
try:
|
||
|
from cStringIO import StringIO
|
||
|
except ImportError:
|
||
|
from io import StringIO
|
||
|
|
||
|
from pyzbar.scripts.read_zbar import main
|
||
|
|
||
|
|
||
|
@contextmanager
|
||
|
def capture_stdout():
|
||
|
sys.stdout, old_stdout = StringIO(), sys.stdout
|
||
|
try:
|
||
|
yield sys.stdout
|
||
|
finally:
|
||
|
sys.stdout = old_stdout
|
||
|
|
||
|
|
||
|
class TestReadZbar(unittest.TestCase):
|
||
|
def test_read_qrcode(self):
|
||
|
"Read QR code"
|
||
|
with capture_stdout() as stdout:
|
||
|
main([str(Path(__file__).parent.joinpath('qrcode.png'))])
|
||
|
|
||
|
if 2 == sys.version_info[0]:
|
||
|
expected = "Thalassiodracon"
|
||
|
else:
|
||
|
expected = "b'Thalassiodracon'"
|
||
|
|
||
|
self.assertEqual(expected, stdout.getvalue().strip())
|
||
|
|
||
|
def test_read_code128(self):
|
||
|
"Read CODE 128 barcodes"
|
||
|
with capture_stdout() as stdout:
|
||
|
main([str(Path(__file__).parent.joinpath('code128.png'))])
|
||
|
|
||
|
if 2 == sys.version_info[0]:
|
||
|
expected = "Foramenifera\nRana temporaria"
|
||
|
else:
|
||
|
expected = "b'Foramenifera'\nb'Rana temporaria'"
|
||
|
|
||
|
self.assertEqual(expected, stdout.getvalue().strip())
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest.main()
|