From 08ea93337ecbc0948d99ae0ef5225361123b0512 Mon Sep 17 00:00:00 2001 From: Lucy Linder Date: Thu, 31 Aug 2017 11:59:48 +0200 Subject: [PATCH] rewrite test using pytest's parametrize functionality --- test/test_function_check_barcode.py | 350 +++++++--------------------- 1 file changed, 90 insertions(+), 260 deletions(-) diff --git a/test/test_function_check_barcode.py b/test/test_function_check_barcode.py index ac9cc0f..b2aa8f5 100644 --- a/test/test_function_check_barcode.py +++ b/test/test_function_check_barcode.py @@ -8,265 +8,95 @@ import escpos.printer as printer import pytest -def test_barcode_upca(): - bc = 'UPC-A' - - valid_codes = [ - "01234567890", - "012345678905" - ] - - invalid_codes = [ - "01234567890123", # too long - "0123456789", # too short - "72527273-711", # invalid '-' - "A12345678901", # invalid 'A' - ] - - assert (all([printer.Escpos.check_barcode(bc, code) for code in valid_codes])) - assert (not any([printer.Escpos.check_barcode(bc, code) for code in invalid_codes])) +@pytest.mark.parametrize("bctype,data", [ + ('UPC-A', '01234567890'), + ('UPC-A', '012345678905'), + ('UPC-E', '01234567'), + ('UPC-E', '0123456'), + ('UPC-E', '012345678905'), + ('EAN13', '0123456789012'), + ('EAN13', '012345678901'), + ('EAN8', '01234567'), + ('EAN8', '0123456'), + ('CODE39', 'ABC-1234'), + ('CODE39', 'ABC-1234-$$-+A'), + ('CODE39', '*WIKIPEDIA*'), + ('ITF', '010203040506070809'), + ('ITF', '11221133113344556677889900'), + ('CODABAR', 'A2030405060B'), + ('CODABAR', 'C11221133113344556677889900D'), + ('CODABAR', 'D0D'), + ('NW7', 'A2030405060B'), + ('NW7', 'C11221133113344556677889900D'), + ('NW7', 'D0D'), + ('CODE93', 'A2030405060B'), + ('CODE93', '+:$&23-7@$'), + ('CODE93', 'D0D'), + ('CODE128', '{A2030405060B'), + ('CODE128', '{C+:$&23-7@$'), + ('CODE128', '{B0D'), + ('GS1-128', '{A2030405060B'), + ('GS1-128', '{C+:$&23-7@$'), + ('GS1-128', '{B0D'), + ('GS1 DATABAR OMNIDIRECTIONAL', '0123456789123'), + ('GS1 DATABAR TRUNCATED', '0123456789123'), + ('GS1 DATABAR LIMITED', '0123456789123'), + ('GS1 DATABAR EXPANDED', '(9A{A20304+-%&06a0B'), + ('GS1 DATABAR EXPANDED', '(1 {C+:&23-7%'), + ('GS1 DATABAR EXPANDED', '(00000001234567678'), +]) +def test_check_valid_barcode(bctype, data): + assert (printer.Escpos.check_barcode(bctype, data)) -def test_barcode_upce(): - bc = 'UPC-E' - - valid_codes = [ - "01234567", - "0123456", - "012345678905" - ] - invalid_codes = [ - "01234567890123", # too long - "012345", # too short - "72527-2", # invalid '-' - "A123456", # invalid 'A' - ] - - assert (all([printer.Escpos.check_barcode(bc, code) for code in valid_codes])) - assert (not any([printer.Escpos.check_barcode(bc, code) for code in invalid_codes])) - - -def test_barcode_ean13(): - bc = 'EAN13' - - valid_codes = [ - "0123456789012", - "012345678901" - ] - invalid_codes = [ - "0123456789", # too short - "A123456789012" # invalid 'A' - "012345678901234", # too long - ] - - assert (all([printer.Escpos.check_barcode(bc, code) for code in valid_codes])) - assert (not any([printer.Escpos.check_barcode(bc, code) for code in invalid_codes])) - - -def test_barcode_ean8(): - bc = 'EAN8' - - valid_codes = [ - "01234567", - "0123456" - ] - invalid_codes = [ - "012345", # too short - "A123456789012" # invalid 'A' - "012345678901234", # too long - ] - - assert (all([printer.Escpos.check_barcode(bc, code) for code in valid_codes])) - assert (not any([printer.Escpos.check_barcode(bc, code) for code in invalid_codes])) - - -def test_barcode_code39(): - bc = 'CODE39' - - valid_codes = [ - "ABC-1234", - "ABC-1234-$$-+A", - "*WIKIPEDIA*" # the '*' symbol is not part of the actual code, but it is handled properly by ESCPOS - ] - invalid_codes = [ - "ALKJ_34", # invalid '_' - "A" * 256, # too long - ] - - assert (all([printer.Escpos.check_barcode(bc, code) for code in valid_codes])) - assert (not any([printer.Escpos.check_barcode(bc, code) for code in invalid_codes])) - - -def test_barcode_itf(): - bc = 'ITF' - - valid_codes = [ - "010203040506070809", - "11221133113344556677889900", - ] - invalid_codes = [ - "010203040", # odd length - "0" * 256, # too long - "AB01", # invalid 'A' - ] - - assert (all([printer.Escpos.check_barcode(bc, code) for code in valid_codes])) - assert (not any([printer.Escpos.check_barcode(bc, code) for code in invalid_codes])) - - -def test_barcode_codabar(): - bc = 'CODABAR' - - valid_codes = [ - "A2030405060B", - "C11221133113344556677889900D", - "D0D", - ] - invalid_codes = [ - "010203040", # no start/stop - "0" * 256, # too long - "AB-01F", # invalid 'B' - ] - - assert (all([printer.Escpos.check_barcode(bc, code) for code in valid_codes])) - assert (not any([printer.Escpos.check_barcode(bc, code) for code in invalid_codes])) - - -def test_barcode_nw7(): - bc = 'NW7' # same as CODABAR - - valid_codes = [ - "A2030405060B", - "C11221133113344556677889900D", - "D0D", - ] - invalid_codes = [ - "010203040", # no start/stop - "0" * 256, # too long - "AB-01F", # invalid 'B' - ] - - assert (all([printer.Escpos.check_barcode(bc, code) for code in valid_codes])) - assert (not any([printer.Escpos.check_barcode(bc, code) for code in invalid_codes])) - - -def test_barcode_code93(): - bc = 'CODE93' - - valid_codes = [ - "A2030405060B", - "+:$&23-7@$", - "D0D", - ] - invalid_codes = [ - "é010203040", # invalid 'é' - "0" * 256, # too long - ] - - assert (all([printer.Escpos.check_barcode(bc, code) for code in valid_codes])) - assert (not any([printer.Escpos.check_barcode(bc, code) for code in invalid_codes])) - - -def test_barcode_code128(): - bc = 'CODE128' - - valid_codes = [ - "{A2030405060B", - "{C+:$&23-7@$", - "{B0D", - ] - invalid_codes = [ - "010203040", # missing leading { - "0" * 256, # too long - "{D2354AA", # second char not between A-C - ] - - assert (all([printer.Escpos.check_barcode(bc, code) for code in valid_codes])) - assert (not any([printer.Escpos.check_barcode(bc, code) for code in invalid_codes])) - - -def test_barcode_gs1_128(): - bc = 'GS1-128' # same as code 128 - - valid_codes = [ - "{A2030405060B", - "{C+:$&23-7@$", - "{B0D", - ] - invalid_codes = [ - "010203040", # missing leading { - "0" * 256, # too long - "{D2354AA", # second char not between A-C - ] - - assert (all([printer.Escpos.check_barcode(bc, code) for code in valid_codes])) - assert (not any([printer.Escpos.check_barcode(bc, code) for code in invalid_codes])) - - -def test_barcode_gs1_omni(): - bc = 'GS1 DATABAR OMNIDIRECTIONAL' - - valid_codes = [ - "0123456789123", - ] - invalid_codes = [ - "01234567891234", # too long - "012345678912", # too short - "012345678A1234", # invalid 'A' - ] - - assert (all([printer.Escpos.check_barcode(bc, code) for code in valid_codes])) - assert (not any([printer.Escpos.check_barcode(bc, code) for code in invalid_codes])) - - -def test_barcode_gs1_trunc(): - bc = 'GS1 DATABAR TRUNCATED' # same as OMNIDIRECTIONAL - - valid_codes = [ - "0123456789123", - ] - invalid_codes = [ - "01234567891234", # too long - "012345678912", # too short - "012345678A1234", # invalid 'A' - ] - - assert (all([printer.Escpos.check_barcode(bc, code) for code in valid_codes])) - assert (not any([printer.Escpos.check_barcode(bc, code) for code in invalid_codes])) - - -def test_barcode_gs1_limited(): - bc = 'GS1 DATABAR LIMITED' - - valid_codes = [ - "0123456789123", - "0123456789123", - ] - invalid_codes = [ - "01234567891234", # too long - "012345678912", # too short - "012345678A1234", # invalid 'A' - "02345678912341", # invalid start (should be 01) - ] - - assert (all([printer.Escpos.check_barcode(bc, code) for code in valid_codes])) - assert (not any([printer.Escpos.check_barcode(bc, code) for code in invalid_codes])) - - -def test_barcode_gs1_expanded(): - bc = 'GS1 DATABAR EXPANDED' - - valid_codes = [ - "(9A{A20304+-%&06a0B", - "(1 {C+:$a23-7%", - "(00000001234567678", - ] - invalid_codes = [ - "010203040", # missing leading { - "0" * 256, # too long - "0{D2354AA", # second char not between A-za-z0-9 - "IT will fail", # first char not between 0-9 - ] - - assert (all([printer.Escpos.check_barcode(bc, code) for code in valid_codes])) - assert (not any([printer.Escpos.check_barcode(bc, code) for code in invalid_codes])) +@pytest.mark.parametrize("bctype,data", [ + ('UPC-A', '01234567890123'), # too long + ('UPC-A', '0123456789'), # too short + ('UPC-A', '72527273-711'), # invalid '-' + ('UPC-A', 'A12345678901'), # invalid 'A' + ('UPC-E', '01234567890123'), # too long + ('UPC-E', '012345'), # too short + ('UPC-E', '72527-2'), # invalid '-' + ('UPC-E', 'A123456'), # invalid 'A' + ('EAN13', '0123456789'), # too short + ('EAN13', 'A123456789012'), # invalid 'A' + ('EAN13', '012345678901234'), # too long + ('EAN8', '012345'), # too short + ('EAN8', 'A123456789012'), # invalid 'A' + ('EAN8', '012345678901234'), # too long + ('CODE39', 'ALKJ_34'), # invalid '_' + ('CODE39', 'A' * 256), # too long + ('ITF', '010203040'), # odd length + ('ITF', '0' * 256), # too long + ('ITF', 'AB01'), # invalid 'A' + ('CODABAR', '010203040'), # no start/stop + ('CODABAR', '0' * 256), # too long + ('CODABAR', 'AB-01F'), # invalid 'B' + ('NW7', '010203040'), # no start/stop + ('NW7', '0' * 256), # too long + ('NW7', 'AB-01F'), # invalid 'B' + ('CODE93', 'é010203040'), # invalid 'é' + ('CODE93', '0' * 256), # too long + ('CODE128', '010203040'), # missing leading { + ('CODE128', '{D2354AA'), # second char not between A-C + ('CODE128', '0' * 256), # too long + ('GS1-128', '010203040'), # missing leading { + ('GS1-128', '{D2354AA'), # second char not between A-C + ('GS1-128', '0' * 256), # too long + ('GS1 DATABAR OMNIDIRECTIONAL', '01234567891234'), # too long + ('GS1 DATABAR OMNIDIRECTIONAL', '012345678912'), # too short + ('GS1 DATABAR OMNIDIRECTIONAL', '012345678A1234'), # invalid 'A' + ('GS1 DATABAR TRUNCATED', '01234567891234'), # too long + ('GS1 DATABAR TRUNCATED', '012345678912'), # too short + ('GS1 DATABAR TRUNCATED', '012345678A1234'), # invalid 'A' + ('GS1 DATABAR LIMITED', '01234567891234'), # too long + ('GS1 DATABAR LIMITED', '012345678912'), # too short + ('GS1 DATABAR LIMITED', '012345678A1234'), # invalid 'A' + ('GS1 DATABAR LIMITED', '02345678912341'), # invalid start (should be 01) + ('GS1 DATABAR EXPANDED', '010203040'), # missing leading ( + ('GS1-128', '(' + ('0' * 256)), # too long + ('GS1 DATABAR EXPANDED', '(a{D2354AA'), # second char not between 0-9 + ('GS1 DATABAR EXPANDED', 'IT will fail'), # first char not '(' +]) +def test_check_invalid_barcode(bctype, data): + assert (not printer.Escpos.check_barcode(bctype, data))