#!/usr/bin/python import escpos.printer as printer from escpos.capabilities import Profile, BARCODE_B from escpos.exceptions import BarcodeTypeError, BarcodeCodeError import pytest @pytest.mark.parametrize( "bctype,data,expected", [ ( "EAN13", "4006381333931", b"\x1ba\x01\x1dh@\x1dw\x03\x1df\x00\x1dH\x02\x1dk\x024006381333931\x00", ) ], ) def test_barcode(bctype, data, expected): """should generate different barcode types correctly.""" instance = printer.Dummy() instance.barcode(data, bctype) assert instance.output == expected @pytest.mark.parametrize( "bctype,supports_b", [ ("invalid", True), ("CODE128", False), ], ) def test_lacks_support(bctype, supports_b): """should raise an error if the barcode type is not supported.""" profile = Profile(features={BARCODE_B: supports_b}) instance = printer.Dummy(profile=profile) with pytest.raises(BarcodeTypeError): instance.barcode("test", bctype) assert instance.output == b"" @pytest.mark.parametrize( "bctype,data", [ ("EAN13", "AA"), ("CODE128", "{D2354AA"), ], ) def test_code_check(bctype, data): """should raise an error if the barcode code is invalid.""" instance = printer.Dummy() with pytest.raises(BarcodeCodeError): instance.barcode(data, bctype) assert instance.output == b""