Test suite: update for latest BWIPP

This commit is contained in:
gitlost 2023-04-03 17:41:13 +01:00
parent 2919a20384
commit 217e7d240a
5 changed files with 213 additions and 176 deletions

View File

@ -1,6 +1,6 @@
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2020-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2020-2023 Robin Stuart <rstuart114@gmail.com>
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions modification, are permitted provided that the following conditions
@ -128,7 +128,7 @@ static void test_encode(const testCtx *const p_ctx) {
char *expected; char *expected;
}; };
struct item data[] = { struct item data[] = {
/* 0*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, "123456789012", -1, 0, 15, 15, 1, "ISO/IEC 24778:2008 Figure 1 (left)", /* 0*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 1, "123456789012", -1, 0, 15, 15, 1, "ISO/IEC 24778:2008 Figure 1 (left)",
"000111000011100" "000111000011100"
"110111001110010" "110111001110010"
"111100001000100" "111100001000100"
@ -188,7 +188,7 @@ static void test_encode(const testCtx *const p_ctx) {
"00010010010011001011011010000110001000101" "00010010010011001011011010000110001000101"
"10001000001010100110100000001001001110000" "10001000001010100110100000001001001110000"
}, },
/* 2*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, "Code 2D!", -1, 0, 15, 15, 1, "ISO/IEC 24778:2008 Figure G.2", /* 2*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, "Code 2D!", -1, 0, 15, 15, 0, "ISO/IEC 24778:2008 Figure G.2; BWIPP defaults to full (see following)",
"000110001100000" "000110001100000"
"000000110000010" "000000110000010"
"101100001000101" "101100001000101"
@ -563,7 +563,7 @@ static void test_encode(const testCtx *const p_ctx) {
"011010111000111110011011110" "011010111000111110011011110"
"000010010001000011010000001" "000010010001000011010000001"
}, },
/* 15*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, -1, "\377\000\000\377\300\000\017\377\376\217\300\017", 12, 0, 19, 19, 1, "6 bit words", /* 15*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 2, "\377\000\000\377\300\000\017\377\376\217\300\017", 12, 0, 19, 19, 1, "6 bit words",
"1101000001111000001" "1101000001111000001"
"1101011000011100000" "1101011000011100000"
"1000001010001001001" "1000001010001001001"
@ -779,7 +779,7 @@ static void test_encode(const testCtx *const p_ctx) {
"11000000001000001011101101101101101001100000101000000000010111000000100101000110010000110010000011000101011111000" "11000000001000001011101101101101101001100000101000000000010111000000100101000110010000110010000011000101011111000"
"11100000100000001110111110110000111110011100000010001110101010101111000011001011111001101101010010001011111011101" "11100000100000001110111110110000111110011100000010001110101010101111000011001011111001101101010010001011111011101"
}, },
/* 19*/ { BARCODE_AZTEC, UNICODE_MODE, -1, READER_INIT, -1, -1, "A", -1, 0, 15, 15, 1, "", /* 19*/ { BARCODE_AZTEC, UNICODE_MODE, -1, READER_INIT, -1, 1, "A", -1, 0, 15, 15, 1, "",
"000011000111101" "000011000111101"
"001110010011000" "001110010011000"
"011100100000100" "011100100000100"
@ -817,7 +817,7 @@ static void test_encode(const testCtx *const p_ctx) {
"0011111001001010011" "0011111001001010011"
"1001101000100100001" "1001101000100100001"
}, },
/* 21*/ { BARCODE_AZTEC, DATA_MODE, 3, -1, -1, -1, "\101\300", -1, 0, 15, 15, 1, "", /* 21*/ { BARCODE_AZTEC, DATA_MODE, 3, -1, -1, 1, "\101\300", -1, 0, 15, 15, 1, "",
"000000101011100" "000000101011100"
"000100010100111" "000100010100111"
"001100000110110" "001100000110110"
@ -834,7 +834,7 @@ static void test_encode(const testCtx *const p_ctx) {
"110001000111110" "110001000111110"
"111001100011011" "111001100011011"
}, },
/* 22*/ { BARCODE_AZTEC, UNICODE_MODE, 26, -1, -1, -1, "", -1, 0, 15, 15, 1, "", /* 22*/ { BARCODE_AZTEC, UNICODE_MODE, 26, -1, -1, 1, "", -1, 0, 15, 15, 1, "",
"001111011000101" "001111011000101"
"000110100011000" "000110100011000"
"001100001000111" "001100001000111"
@ -851,7 +851,7 @@ static void test_encode(const testCtx *const p_ctx) {
"001100010010010" "001100010010010"
"011110110011000" "011110110011000"
}, },
/* 23*/ { BARCODE_AZTEC, UNICODE_MODE, 100, -1, -1, -1, "A", -1, 0, 15, 15, 1, "FLG(3)", /* 23*/ { BARCODE_AZTEC, UNICODE_MODE, 100, -1, -1, 1, "A", -1, 0, 15, 15, 1, "FLG(3)",
"001101001111101" "001101001111101"
"000000111011100" "000000111011100"
"001100000100101" "001100000100101"
@ -868,7 +868,7 @@ static void test_encode(const testCtx *const p_ctx) {
"100011101111100" "100011101111100"
"000111110001110" "000111110001110"
}, },
/* 24*/ { BARCODE_AZTEC, UNICODE_MODE, 1000, -1, -1, -1, "A", -1, 0, 15, 15, 1, "FLG(4)", /* 24*/ { BARCODE_AZTEC, UNICODE_MODE, 1000, -1, -1, 1, "A", -1, 0, 15, 15, 1, "FLG(4)",
"001010100011011" "001010100011011"
"001000100000101" "001000100000101"
"001100000100111" "001100000100111"
@ -885,7 +885,7 @@ static void test_encode(const testCtx *const p_ctx) {
"101000000111010" "101000000111010"
"000001110101111" "000001110101111"
}, },
/* 25*/ { BARCODE_AZTEC, UNICODE_MODE, 10000, -1, -1, -1, "A", -1, 0, 15, 15, 1, "FLG(5)", /* 25*/ { BARCODE_AZTEC, UNICODE_MODE, 10000, -1, -1, 1, "A", -1, 0, 15, 15, 1, "FLG(5)",
"000100110110010" "000100110110010"
"000001000010111" "000001000010111"
"001100000110101" "001100000110101"
@ -902,7 +902,7 @@ static void test_encode(const testCtx *const p_ctx) {
"101010001110110" "101010001110110"
"000000011000101" "000000011000101"
}, },
/* 26*/ { BARCODE_AZTEC, UNICODE_MODE, 100000, -1, -1, -1, "A", -1, 0, 15, 15, 1, "FLG(6)", /* 26*/ { BARCODE_AZTEC, UNICODE_MODE, 100000, -1, -1, 1, "A", -1, 0, 15, 15, 1, "FLG(6)",
"000010010000010" "000010010000010"
"001101000100110" "001101000100110"
"001100000110111" "001100000110111"
@ -2480,7 +2480,7 @@ static void test_encode_segs(const testCtx *const p_ctx) {
char *expected; char *expected;
}; };
struct item data[] = { struct item data[] = {
/* 0*/ { UNICODE_MODE, -1, -1, -1, { { TU(""), -1, 0 }, { TU("Ж"), -1, 7 }, { TU(""), 0, 0 } }, 0, 15, 15, 1, "ISO/IEC 24778:2008 16.5 example", /* 0*/ { UNICODE_MODE, -1, -1, 1, { { TU(""), -1, 0 }, { TU("Ж"), -1, 7 }, { TU(""), 0, 0 } }, 0, 15, 15, 1, "ISO/IEC 24778:2008 16.5 example",
"001111000011111" "001111000011111"
"110111100100011" "110111100100011"
"111100001000111" "111100001000111"
@ -2497,7 +2497,7 @@ static void test_encode_segs(const testCtx *const p_ctx) {
"001010111001010" "001010111001010"
"000001011100111" "000001011100111"
}, },
/* 1*/ { UNICODE_MODE, -1, -1, -1, { { TU(""), -1, 0 }, { TU("Ж"), -1, 0 }, { TU(""), 0, 0 } }, ZINT_WARN_USES_ECI, 15, 15, 1, "ISO/IEC 24778:2008 16.5 example auto-ECI", /* 1*/ { UNICODE_MODE, -1, -1, 1, { { TU(""), -1, 0 }, { TU("Ж"), -1, 0 }, { TU(""), 0, 0 } }, ZINT_WARN_USES_ECI, 15, 15, 1, "ISO/IEC 24778:2008 16.5 example auto-ECI",
"001111000011111" "001111000011111"
"110111100100011" "110111100100011"
"111100001000111" "111100001000111"
@ -2607,7 +2607,7 @@ static void test_encode_segs(const testCtx *const p_ctx) {
"1001101000110101111010100111100011111001000100101" "1001101000110101111010100111100011111001000100101"
"0001001010011000000100101101100110101000100000000" "0001001010011000000100101101100110101000100000000"
}, },
/* 5*/ { DATA_MODE, -1, -1, -1, { { TU("\357"), 1, 0 }, { TU("\357"), 1, 7 }, { TU("\357"), 1, 0 } }, 0, 19, 19, 1, "Standard example + extra seg, data mode", /* 5*/ { DATA_MODE, -1, -1, 2, { { TU("\357"), 1, 0 }, { TU("\357"), 1, 7 }, { TU("\357"), 1, 0 } }, 0, 19, 19, 1, "Standard example + extra seg, data mode",
"1110011101010111000" "1110011101010111000"
"1100010001011100011" "1100010001011100011"
"1001110101000010110" "1001110101000010110"

File diff suppressed because it is too large Load Diff

View File

@ -2618,7 +2618,6 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int
*bwipp_data = '0'; *bwipp_data = '0';
} }
} else if (symbology == BARCODE_CODABLOCKF || symbology == BARCODE_HIBC_BLOCKF) { } else if (symbology == BARCODE_CODABLOCKF || symbology == BARCODE_HIBC_BLOCKF) {
sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%ssepheight=0", strlen(bwipp_opts_buf) ? " " : "");
if (option_1 > 0) { if (option_1 > 0) {
sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%srows=%d", sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%srows=%d",
strlen(bwipp_opts_buf) ? " " : "", option_1); strlen(bwipp_opts_buf) ? " " : "", option_1);
@ -2731,14 +2730,13 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int
strcpy(bwipp_data, "fima"); strcpy(bwipp_data, "fima");
bwipp_data[3] = z_isupper(data[0]) ? data[0] - 'A' + 'a' : data[0]; bwipp_data[3] = z_isupper(data[0]) ? data[0] - 'A' + 'a' : data[0];
} else if (symbology == BARCODE_CODE16K || symbology == BARCODE_CODE49) { } else if (symbology == BARCODE_CODE16K || symbology == BARCODE_CODE49) {
sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%ssepheight=0", strlen(bwipp_opts_buf) ? " " : "");
bwipp_opts = bwipp_opts_buf;
if (option_1 >= 2) { if (option_1 >= 2) {
if ((symbology == BARCODE_CODE16K && option_1 <= 16) if ((symbology == BARCODE_CODE16K && option_1 <= 16)
|| (symbology == BARCODE_CODE49 && option_1 <= 8 && option_1 >= symbol->rows)) { || (symbology == BARCODE_CODE49 && option_1 <= 8 && option_1 >= symbol->rows)) {
sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%srows=%d", sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%srows=%d",
strlen(bwipp_opts_buf) ? " " : "", option_1); strlen(bwipp_opts_buf) ? " " : "", option_1);
} }
bwipp_opts = bwipp_opts_buf;
} }
} else if (symbology == BARCODE_AZTEC || symbology == BARCODE_HIBC_AZTEC) { } else if (symbology == BARCODE_AZTEC || symbology == BARCODE_HIBC_AZTEC) {
int compact = 0, full = 0; int compact = 0, full = 0;
@ -3016,18 +3014,15 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int
} }
} }
} else if (symbology == BARCODE_ULTRA) { } else if (symbology == BARCODE_ULTRA) {
const int rev = option_2 == 2 ? 2 : 1;
if (option_1 >= 1 && option_1 <= 6) { if (option_1 >= 1 && option_1 <= 6) {
sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%seclevel=EC%d", sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%seclevel=EC%d",
strlen(bwipp_opts_buf) ? " " : "", option_1 - 1); strlen(bwipp_opts_buf) ? " " : "", option_1 - 1);
bwipp_opts = bwipp_opts_buf;
} }
if (option_2 >= 1 && option_2 <= 2) { sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%srev=%d", strlen(bwipp_opts_buf) ? " " : "", rev);
sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%srev=%d",
strlen(bwipp_opts_buf) ? " " : "", option_2);
bwipp_opts = bwipp_opts_buf; bwipp_opts = bwipp_opts_buf;
} }
} }
}
if ((option_1 != -1 || option_2 != -1 || option_3 != -1) && !bwipp_opts) { if ((option_1 != -1 || option_2 != -1 || option_3 != -1) && !bwipp_opts) {
fprintf(stderr, fprintf(stderr,

View File

@ -67,10 +67,28 @@ ret /pixs known {
/pixs ret /pixs get def /pixs ret /pixs get def
} ifelse } ifelse
/pixx ret /pixx known { ret /pixx get } { 0 } ifelse def
b (codablockf) eq b (hibccodablockf) eq or b (code16k) eq or b (code49) eq or {
% Strip separators and boundary bars
/testi b (code16k) eq { 16 } { b (code49) eq { 11 } { 21 } ifelse } ifelse def
/tmppixs pixs length array def
/j 0 def
0 pixx pixs length 1 sub {
/i exch def
pixs i testi add get 1 ne {
tmppixs j pixs i pixx getinterval putinterval
/j j pixx add def
} if
} for
/pixs j array def
pixs 0 tmppixs 0 j getinterval putinterval
} if
/xs systemdict /xs known { systemdict /xs get cvi } { 0 } ifelse def /xs systemdict /xs known { systemdict /xs get cvi } { 0 } ifelse def
/xe systemdict /xe known { systemdict /xe get cvi } { 0 } ifelse def /xe systemdict /xe known { systemdict /xe get cvi } { 0 } ifelse def
n xs 0 ne or xe 0 ne or ret /pixx known and { % If newlines or start/end indexes requested and have row width n xs 0 ne or xe 0 ne or pixx 0 ne and { % If newlines or start/end indexes requested and have row width
/pixx ret /pixx get def /pixx ret /pixx get def
xs pixx pixs length 1 sub xe sub { % For i = xs; i < pixs length - xe; i += pixx xs pixx pixs length 1 sub xe sub { % For i = xs; i < pixs length - xe; i += pixx
pixs exch pixx xs sub xe sub getinterval { % For j = i; j < i + pixx - xs -xe; j++ pixs exch pixx xs sub xe sub getinterval { % For j = i; j < i + pixx - xs -xe; j++