mirror of
https://git.code.sf.net/p/zint/code
synced 2026-05-08 07:03:50 +00:00
template, props Dmitry Smirnov (ticket #147, props John Crisp); TODO: enable building with the GS1 Syntax Engine; this involved auditing copyrights which prompted the next item re "tif.c" and will prompt the next next item "pdf417.c" tif.c: replaced LZW compression with tree-based one due to "tif_lzw.h"'s original BSD-TAHOE license which has the equivalent of the "advertising clause", new implementation (which is much faster anyway) props Harald Kuhr and Bob Montgomery pdf417.c: TODO: Replace all code adapted from "pdf417.frm" as it was released under GPL v2.0 or later pdf417.h: replace unnecessary "pdf417.frm" references with ISO/IEC standard as 1st step re above, some expanded comments general: Codablock-F -> Codablock F (i.e. lose hyphen) cmake: frontend/frontend_qt: go back to only setting RPATH on macOS as not Debian compatible and it seems it's not a good idea on Linux anyway; TODO: check BSD + other Unixes CLI/GUI: make "--verbose" option official and document tools/gen_eci_sb_h.php/gen_eci_mb_h.php: add SPDX Unicode-3.0; update haible.de/bruno tarball info - "GB18030.TXT" no longer in "jdk-1.4.2/" so mention "libiconv-1.11/" version instead (same) general: add various SPDXs and normalize some Copyrights reedsol.c: malloced `logt`/`alog` tables int -> short (slight performance improvement) aztec.c: add copyrights, some code fiddling BWIPP: update to latest
1427 lines
146 KiB
C
1427 lines
146 KiB
C
/*
|
|
libzint - the open source barcode library
|
|
Copyright (C) 2025-2026 Robin Stuart <rstuart114@gmail.com>
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions
|
|
are met:
|
|
|
|
1. Redistributions of source code must retain the above copyright
|
|
notice, this list of conditions and the following disclaimer.
|
|
2. Redistributions in binary form must reproduce the above copyright
|
|
notice, this list of conditions and the following disclaimer in the
|
|
documentation and/or other materials provided with the distribution.
|
|
3. Neither the name of the project nor the names of its contributors
|
|
may be used to endorse or promote products derived from this software
|
|
without specific prior written permission.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
SUCH DAMAGE.
|
|
*/
|
|
/* SPDX-License-Identifier: BSD-3-Clause */
|
|
|
|
#include "testcommon.h"
|
|
|
|
#include "../gs1.h"
|
|
|
|
/*
|
|
* Check that GS1_128-based and DBAR_EXP-based symbologies reduce GS1 data
|
|
*/
|
|
static void test_gs1_reduce(const testCtx *const p_ctx) {
|
|
int debug = p_ctx->debug;
|
|
|
|
struct item {
|
|
int symbology;
|
|
int input_mode;
|
|
const char *data;
|
|
const char *composite;
|
|
|
|
int ret;
|
|
int compare_previous;
|
|
const char *comment;
|
|
const char *expected;
|
|
};
|
|
/* s/\v(\/\*)[ 0-9]*(\*\/)/\=printf("%s%3d%s", submatch(1), (@z+setreg('z',@z+1)), submatch(2))/ | let @z=0: */
|
|
static const struct item data[] = {
|
|
/* 0*/ { BARCODE_GS1_128, -1, "12345678901234", "", ZINT_ERROR_INVALID_DATA, 0, "GS1 data required", "" },
|
|
/* 1*/ { BARCODE_GS1_128, -1, "[01]12345678901231", "", 0, 0, "Input mode ignored; verified manually against TEC-IT",
|
|
"11010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110100001100101100011101011"
|
|
},
|
|
/* 2*/ { BARCODE_GS1_128, GS1PARENS_MODE, "(01)12345678901231", "", 0, 1, "Input mode ignored (parentheses instead of square brackets)",
|
|
"11010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110100001100101100011101011"
|
|
},
|
|
/* 3*/ { BARCODE_GS1_128, GS1_MODE, "[01]12345678901231[21]()", "", 0, 0, "Parentheses in AI data",
|
|
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011011100100101111011101000110010011001001000110111000101100011101011"
|
|
},
|
|
/* 4*/ { BARCODE_GS1_128, ESCAPE_MODE | GS1PARENS_MODE, "(01)12345678901231(21)\\(\\)", "", 0, 1, "Parentheses in AI data",
|
|
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011011100100101111011101000110010011001001000110111000101100011101011"
|
|
},
|
|
/* 5*/ { BARCODE_GS1_128, -1, "^011234567890123121()", "", 0, 1, "",
|
|
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011011100100101111011101000110010011001001000110111000101100011101011"
|
|
},
|
|
/* 6*/ { BARCODE_GS1_128, GS1RAW_MODE, "011234567890123121()", "", 0, 1, "",
|
|
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011011100100101111011101000110010011001001000110111000101100011101011"
|
|
},
|
|
/* 7*/ { BARCODE_GS1_128_CC, -1, "[01]12345678901231", "[21]1234", 0, 0, "Input mode ignored",
|
|
"0000000000000000000001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010000000000000000000000000"
|
|
"0000000000000000000001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010000000000000000000000000"
|
|
"0000000000000000000001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010000000000000000000000000"
|
|
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100010100001000101001110011100010100"
|
|
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011101011110111010110001100011101011"
|
|
},
|
|
/* 8*/ { BARCODE_GS1_128_CC, GS1PARENS_MODE, "(01)12345678901231", "(21)1234", 0, 0, "Input mode ignored (parentheses instead of square brackets)",
|
|
"0000000000000000000001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010000000000000000000000000"
|
|
"0000000000000000000001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010000000000000000000000000"
|
|
"0000000000000000000001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010000000000000000000000000"
|
|
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100010100001000101001110011100010100"
|
|
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011101011110111010110001100011101011"
|
|
},
|
|
/* 9*/ { BARCODE_GS1_128_CC, GS1_MODE, "[01]12345678901231[10])", "[21](", 0, 0, "Parentheses in AI data",
|
|
"0000000000000000000000000000000000000000000110110111010100001000001000110000110001010001001110100111010100011100001110001100101100011011000101000000000000000000000000000000000000"
|
|
"0000000000000000000000000000000000000000000110110110011100000101110110110000010011100101001100100100011110010111101101011100010000011001000101000000000000000000000000000000000000"
|
|
"0000000000000000000000000000000000000000000110110100010001000100011110111100101111001001001100110111111010011010001111100100011101011101000101000000000000000000000000000000000000"
|
|
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100110111011010000100010011011011101000100001011101000010011100010100"
|
|
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011001000100101111011101100100100010111011110100010111101100011101011"
|
|
},
|
|
/* 10*/ { BARCODE_GS1_128_CC, ESCAPE_MODE | GS1PARENS_MODE, "(01)12345678901231(10)\\)", "(21)\\(", 0, 1, "Parentheses in AI data",
|
|
"0000000000000000000000000000000000000000000110110111010100001000001000110000110001010001001110100111010100011100001110001100101100011011000101000000000000000000000000000000000000"
|
|
"0000000000000000000000000000000000000000000110110110011100000101110110110000010011100101001100100100011110010111101101011100010000011001000101000000000000000000000000000000000000"
|
|
"0000000000000000000000000000000000000000000110110100010001000100011110111100101111001001001100110111111010011010001111100100011101011101000101000000000000000000000000000000000000"
|
|
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100110111011010000100010011011011101000100001011101000010011100010100"
|
|
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011001000100101111011101100100100010111011110100010111101100011101011"
|
|
},
|
|
/* 11*/ { BARCODE_GS1_128_CC, GS1_MODE, "^011234567890123110)", "^21(", 0, 1, "",
|
|
"0000000000000000000000000000000000000000000110110111010100001000001000110000110001010001001110100111010100011100001110001100101100011011000101000000000000000000000000000000000000"
|
|
"0000000000000000000000000000000000000000000110110110011100000101110110110000010011100101001100100100011110010111101101011100010000011001000101000000000000000000000000000000000000"
|
|
"0000000000000000000000000000000000000000000110110100010001000100011110111100101111001001001100110111111010011010001111100100011101011101000101000000000000000000000000000000000000"
|
|
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100110111011010000100010011011011101000100001011101000010011100010100"
|
|
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011001000100101111011101100100100010111011110100010111101100011101011"
|
|
},
|
|
/* 12*/ { BARCODE_GS1_128_CC, GS1_MODE | GS1RAW_MODE, "011234567890123110)", "21(", 0, 1, "",
|
|
"0000000000000000000000000000000000000000000110110111010100001000001000110000110001010001001110100111010100011100001110001100101100011011000101000000000000000000000000000000000000"
|
|
"0000000000000000000000000000000000000000000110110110011100000101110110110000010011100101001100100100011110010111101101011100010000011001000101000000000000000000000000000000000000"
|
|
"0000000000000000000000000000000000000000000110110100010001000100011110111100101111001001001100110111111010011010001111100100011101011101000101000000000000000000000000000000000000"
|
|
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100110111011010000100010011011011101000100001011101000010011100010100"
|
|
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011001000100101111011101100100100010111011110100010111101100011101011"
|
|
},
|
|
/* 13*/ { BARCODE_EAN14, -1, "1234567890123", "", 0, 0, "Input mode ignored; verified manually against TEC-IT",
|
|
"11010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110100001100101100011101011"
|
|
},
|
|
/* 14*/ { BARCODE_EAN14, GS1PARENS_MODE, "1234567890123", "", 0, 1, "Input mode ignored (parentheses instead of square brackets)",
|
|
"11010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110100001100101100011101011"
|
|
},
|
|
/* 15*/ { BARCODE_NVE18, -1, "12345678901234567", "", 0, 0, "Input mode ignored; verified manually against TEC-IT",
|
|
"110100111001111010111011011001100101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010010101101110001100011101011"
|
|
},
|
|
/* 16*/ { BARCODE_NVE18, GS1PARENS_MODE, "12345678901234567", "", 0, 1, "Input mode ignored (parentheses instead of square brackets)",
|
|
"110100111001111010111011011001100101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010010101101110001100011101011"
|
|
},
|
|
/* 17*/ { BARCODE_DBAR_EXP, -1, "2012", "", ZINT_ERROR_INVALID_DATA, 0, "GS1 data required", "" },
|
|
/* 18*/ { BARCODE_DBAR_EXP, -1, "[20]12[01]12345678901231", "", 0, 0, "Input mode ignored",
|
|
"01001100000110011010111111110000101000001000011001010111110010001110101111110000111010001001111101110111111001110010100011111100001011110011101000010110111000011010001011111111001110000110111101011101"
|
|
},
|
|
/* 19*/ { BARCODE_DBAR_EXP, GS1PARENS_MODE, "(20)12(01)12345678901231", "", 0, 1, "",
|
|
"01001100000110011010111111110000101000001000011001010111110010001110101111110000111010001001111101110111111001110010100011111100001011110011101000010110111000011010001011111111001110000110111101011101"
|
|
},
|
|
/* 20*/ { BARCODE_DBAR_EXP, -1, "^20120112345678901231", "", 0, 1, "",
|
|
"01001100000110011010111111110000101000001000011001010111110010001110101111110000111010001001111101110111111001110010100011111100001011110011101000010110111000011010001011111111001110000110111101011101"
|
|
},
|
|
/* 21*/ { BARCODE_DBAR_EXP, GS1RAW_MODE, "20120112345678901231", "", 0, 1, "",
|
|
"01001100000110011010111111110000101000001000011001010111110010001110101111110000111010001001111101110111111001110010100011111100001011110011101000010110111000011010001011111111001110000110111101011101"
|
|
},
|
|
/* 22*/ { BARCODE_DBAR_EXP, UNICODE_MODE, "[20]12[01]12345678901231", "", 0, 1, "Input mode ignored",
|
|
"01001100000110011010111111110000101000001000011001010111110010001110101111110000111010001001111101110111111001110010100011111100001011110011101000010110111000011010001011111111001110000110111101011101"
|
|
},
|
|
/* 23*/ { BARCODE_DBAR_EXP, -1, "[21])[8006]123456789012310102", "", 0, 0, "Parentheses in AI data",
|
|
"01011100110010001110111111110000101010100000001100010011011111101110101111100000011011011001110000010101100000010000100011111100001010001011100000110100011001011110001011111111001110000100101110000100001110001001101000110000000010100000001100101001110101111011000010111111111001101"
|
|
},
|
|
/* 24*/ { BARCODE_DBAR_EXP, ESCAPE_MODE | GS1PARENS_MODE, "(21)\\)(8006)123456789012310102", "", 0, 1, "Parentheses in AI data",
|
|
"01011100110010001110111111110000101010100000001100010011011111101110101111100000011011011001110000010101100000010000100011111100001010001011100000110100011001011110001011111111001110000100101110000100001110001001101000110000000010100000001100101001110101111011000010111111111001101"
|
|
},
|
|
/* 25*/ { BARCODE_DBAR_EXP, -1, "^21)^8006123456789012310102", "", 0, 1, "",
|
|
"01011100110010001110111111110000101010100000001100010011011111101110101111100000011011011001110000010101100000010000100011111100001010001011100000110100011001011110001011111111001110000100101110000100001110001001101000110000000010100000001100101001110101111011000010111111111001101"
|
|
},
|
|
/* 26*/ { BARCODE_DBAR_EXP, GS1RAW_MODE, "21)\0358006123456789012310102", "", 0, 1, "",
|
|
"01011100110010001110111111110000101010100000001100010011011111101110101111100000011011011001110000010101100000010000100011111100001010001011100000110100011001011110001011111111001110000100101110000100001110001001101000110000000010100000001100101001110101111011000010111111111001101"
|
|
},
|
|
/* 27*/ { BARCODE_DBAR_EXP_CC, -1, "[20]12", "[21]1234[8006]123456789012310102", 0, 0, "",
|
|
"001101001000110100001000001101001100111011000010010001101100001000001011011110111000101100111011001010"
|
|
"001101011000111110110100001001000111011111101010010000101101100001111001010100001111000100110011001010"
|
|
"001101011100100110011001111001001000001001111010110000101011011000011110010100110001111100110111001010"
|
|
"001101011110111100111001001101101001000011000010111000101111011100001011011010011101111000110111101010"
|
|
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
|
|
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
|
|
},
|
|
/* 28*/ { BARCODE_DBAR_EXP_CC, -1, "^2012", "^211234^8006123456789012310102", 0, 1, "",
|
|
"001101001000110100001000001101001100111011000010010001101100001000001011011110111000101100111011001010"
|
|
"001101011000111110110100001001000111011111101010010000101101100001111001010100001111000100110011001010"
|
|
"001101011100100110011001111001001000001001111010110000101011011000011110010100110001111100110111001010"
|
|
"001101011110111100111001001101101001000011000010111000101111011100001011011010011101111000110111101010"
|
|
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
|
|
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
|
|
},
|
|
/* 29*/ { BARCODE_DBAR_EXP_CC, GS1RAW_MODE, "2012", "211234\0358006123456789012310102", 0, 1, "",
|
|
"001101001000110100001000001101001100111011000010010001101100001000001011011110111000101100111011001010"
|
|
"001101011000111110110100001001000111011111101010010000101101100001111001010100001111000100110011001010"
|
|
"001101011100100110011001111001001000001001111010110000101011011000011110010100110001111100110111001010"
|
|
"001101011110111100111001001101101001000011000010111000101111011100001011011010011101111000110111101010"
|
|
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
|
|
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
|
|
},
|
|
/* 30*/ { BARCODE_DBAR_EXP_CC, UNICODE_MODE, "[20]12", "[21]1234[8006]123456789012310102", 0, 1, "Input mode ignored",
|
|
"001101001000110100001000001101001100111011000010010001101100001000001011011110111000101100111011001010"
|
|
"001101011000111110110100001001000111011111101010010000101101100001111001010100001111000100110011001010"
|
|
"001101011100100110011001111001001000001001111010110000101011011000011110010100110001111100110111001010"
|
|
"001101011110111100111001001101101001000011000010111000101111011100001011011010011101111000110111101010"
|
|
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
|
|
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
|
|
},
|
|
/* 31*/ { BARCODE_DBAR_EXP_CC, -1, "[10]()[8006]123456789012310202", "[21]()", 0, 0, "Parentheses in AI data",
|
|
"00110110111010100001000001000110000110001010001001110100111010111001111101100111011001000011011000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
|
"00110110110010001000111110110111101100001101001001100100111110111101110101111101000110111011001000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
|
"00110110100010111110110100000100001111011011001001100110100111001100111001000001001001111011101000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
|
"00000110111001100001000000001010010101110011000001101100100000010001010000010101000100011011110001101110101110111000010100000010100101111101110010111000100010111101110100000000100001100000110011010010001100011000100101001010101001010001101110011110001111011100100101000000000100000"
|
|
"01011001000110011110111111110000101010001100111110010011011111101110101111100000011011100100001110010001010001000111100011111100001010000010001101000111011101000010001011111111001110011111001100101101110011100111011000110000000010101110010001100001110000100011011010111111111001101"
|
|
},
|
|
/* 32*/ { BARCODE_DBAR_EXP_CC, GS1PARENS_MODE, "(10)\\(\\)(8006)123456789012310202", "(21)\\(\\)", 0, 1, "Parentheses in AI data",
|
|
"00110110111010100001000001000110000110001010001001110100111010111001111101100111011001000011011000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
|
"00110110110010001000111110110111101100001101001001100100111110111101110101111101000110111011001000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
|
"00110110100010111110110100000100001111011011001001100110100111001100111001000001001001111011101000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
|
"00000110111001100001000000001010010101110011000001101100100000010001010000010101000100011011110001101110101110111000010100000010100101111101110010111000100010111101110100000000100001100000110011010010001100011000100101001010101001010001101110011110001111011100100101000000000100000"
|
|
"01011001000110011110111111110000101010001100111110010011011111101110101111100000011011100100001110010001010001000111100011111100001010000010001101000111011101000010001011111111001110011111001100101101110011100111011000110000000010101110010001100001110000100011011010111111111001101"
|
|
},
|
|
/* 33*/ { BARCODE_DBAR_EXPSTK, -1, "12", "", ZINT_ERROR_INVALID_DATA, 0, "GS1 data required", "" },
|
|
/* 34*/ { BARCODE_DBAR_EXPSTK, -1, "[01]12345678901231[20]12", "", 0, 0, "",
|
|
"010011010011100000101111111100001011000011101110010111000110110001001011111100001110001111000010101101"
|
|
"000000101100011111010000000010100100111100010001101000111001001110110100000010100001110000111101010000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000000100000000101110010000110100011000111110110010100101000000101001000001111010000000000000000000000"
|
|
"101110011111111010001101111001011100111000001001101010000111111000110111110000101001000000000000000000"
|
|
},
|
|
/* 35*/ { BARCODE_DBAR_EXPSTK, -1, "^01123456789012312012", "", 0, 1, "",
|
|
"010011010011100000101111111100001011000011101110010111000110110001001011111100001110001111000010101101"
|
|
"000000101100011111010000000010100100111100010001101000111001001110110100000010100001110000111101010000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000000100000000101110010000110100011000111110110010100101000000101001000001111010000000000000000000000"
|
|
"101110011111111010001101111001011100111000001001101010000111111000110111110000101001000000000000000000"
|
|
},
|
|
/* 36*/ { BARCODE_DBAR_EXPSTK, GS1RAW_MODE, "01123456789012312012", "", 0, 1, "",
|
|
"010011010011100000101111111100001011000011101110010111000110110001001011111100001110001111000010101101"
|
|
"000000101100011111010000000010100100111100010001101000111001001110110100000010100001110000111101010000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000000100000000101110010000110100011000111110110010100101000000101001000001111010000000000000000000000"
|
|
"101110011111111010001101111001011100111000001001101010000111111000110111110000101001000000000000000000"
|
|
},
|
|
/* 37*/ { BARCODE_DBAR_EXPSTK, UNICODE_MODE, "[01]12345678901231[20]12", "", 0, 1, "Input mode ignored",
|
|
"010011010011100000101111111100001011000011101110010111000110110001001011111100001110001111000010101101"
|
|
"000000101100011111010000000010100100111100010001101000111001001110110100000010100001110000111101010000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000000100000000101110010000110100011000111110110010100101000000101001000001111010000000000000000000000"
|
|
"101110011111111010001101111001011100111000001001101010000111111000110111110000101001000000000000000000"
|
|
},
|
|
/* 38*/ { BARCODE_DBAR_EXPSTK, -1, "[01]12345678901231[21](21)", "", 0, 0, "Parentheses in AI data",
|
|
"010000100011011001101111111100001010010000111011000111000110110001001011111000000110001111000010101101"
|
|
"000011011100100110010000000010100101101111000100111000111001001110110100000101010001110000111101010000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000011000011100010100001000000001011001000110110000111010011011110001001010000001010010000011110100000"
|
|
"101100111100011101011100111111110100110111001001111000101100100001110100001111110001101111100001010010"
|
|
"000011000011100010100001000000001011001000110110000111010011011110001001010000001010010000011110100000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000010010011100000010100001010100101011111000010100000000000000000000000000000000000000000000000000000"
|
|
"010101101100011111100011110000001010100000111101000100000000000000000000000000000000000000000000000000"
|
|
},
|
|
/* 39*/ { BARCODE_DBAR_EXPSTK, ESCAPE_MODE | GS1PARENS_MODE, "(01)12345678901231(21)\\(21\\)", "", 0, 1, "Parentheses in AI data",
|
|
"010000100011011001101111111100001010010000111011000111000110110001001011111000000110001111000010101101"
|
|
"000011011100100110010000000010100101101111000100111000111001001110110100000101010001110000111101010000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000011000011100010100001000000001011001000110110000111010011011110001001010000001010010000011110100000"
|
|
"101100111100011101011100111111110100110111001001111000101100100001110100001111110001101111100001010010"
|
|
"000011000011100010100001000000001011001000110110000111010011011110001001010000001010010000011110100000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000010010011100000010100001010100101011111000010100000000000000000000000000000000000000000000000000000"
|
|
"010101101100011111100011110000001010100000111101000100000000000000000000000000000000000000000000000000"
|
|
},
|
|
/* 40*/ { BARCODE_DBAR_EXPSTK, ESCAPE_MODE | GS1PARENS_MODE, "^011234567890123121(21)", "", 0, 1, "",
|
|
"010000100011011001101111111100001010010000111011000111000110110001001011111000000110001111000010101101"
|
|
"000011011100100110010000000010100101101111000100111000111001001110110100000101010001110000111101010000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000011000011100010100001000000001011001000110110000111010011011110001001010000001010010000011110100000"
|
|
"101100111100011101011100111111110100110111001001111000101100100001110100001111110001101111100001010010"
|
|
"000011000011100010100001000000001011001000110110000111010011011110001001010000001010010000011110100000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000010010011100000010100001010100101011111000010100000000000000000000000000000000000000000000000000000"
|
|
"010101101100011111100011110000001010100000111101000100000000000000000000000000000000000000000000000000"
|
|
},
|
|
/* 41*/ { BARCODE_DBAR_EXPSTK, ESCAPE_MODE | GS1PARENS_MODE | GS1RAW_MODE, "011234567890123121(21)", "", 0, 1, "",
|
|
"010000100011011001101111111100001010010000111011000111000110110001001011111000000110001111000010101101"
|
|
"000011011100100110010000000010100101101111000100111000111001001110110100000101010001110000111101010000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000011000011100010100001000000001011001000110110000111010011011110001001010000001010010000011110100000"
|
|
"101100111100011101011100111111110100110111001001111000101100100001110100001111110001101111100001010010"
|
|
"000011000011100010100001000000001011001000110110000111010011011110001001010000001010010000011110100000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000010010011100000010100001010100101011111000010100000000000000000000000000000000000000000000000000000"
|
|
"010101101100011111100011110000001010100000111101000100000000000000000000000000000000000000000000000000"
|
|
},
|
|
/* 42*/ { BARCODE_DBAR_EXPSTK_CC, -1, "12", "[21]1234", ZINT_ERROR_INVALID_DATA, 0, "GS1 data required", "" },
|
|
/* 43*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[20]12", "[21]1234[8006]123456789012310102", 0, 0, "",
|
|
"001101001000110100001000001101001100111011000010010001101100001000001011011110111000101100111011001010"
|
|
"001101011000111110110100001001000111011111101010010000101101100001111001010100001111000100110011001010"
|
|
"001101011100100110011001111001001000001001111010110000101011011000011110010100110001111100110111001010"
|
|
"001101011110111100111001001101101001000011000010111000101111011100001011011010011101111000110111101010"
|
|
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
|
|
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
|
|
},
|
|
/* 44*/ { BARCODE_DBAR_EXPSTK_CC, GS1PARENS_MODE, "(20)12", "(21)1234(8006)123456789012310102", 0, 1, "",
|
|
"001101001000110100001000001101001100111011000010010001101100001000001011011110111000101100111011001010"
|
|
"001101011000111110110100001001000111011111101010010000101101100001111001010100001111000100110011001010"
|
|
"001101011100100110011001111001001000001001111010110000101011011000011110010100110001111100110111001010"
|
|
"001101011110111100111001001101101001000011000010111000101111011100001011011010011101111000110111101010"
|
|
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
|
|
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
|
|
},
|
|
/* 45*/ { BARCODE_DBAR_EXPSTK_CC, GS1PARENS_MODE, "^2012", "^211234^8006123456789012310102", 0, 1, "",
|
|
"001101001000110100001000001101001100111011000010010001101100001000001011011110111000101100111011001010"
|
|
"001101011000111110110100001001000111011111101010010000101101100001111001010100001111000100110011001010"
|
|
"001101011100100110011001111001001000001001111010110000101011011000011110010100110001111100110111001010"
|
|
"001101011110111100111001001101101001000011000010111000101111011100001011011010011101111000110111101010"
|
|
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
|
|
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
|
|
},
|
|
/* 46*/ { BARCODE_DBAR_EXPSTK_CC, GS1PARENS_MODE | GS1RAW_MODE, "2012", "211234\0358006123456789012310102", 0, 1, "",
|
|
"001101001000110100001000001101001100111011000010010001101100001000001011011110111000101100111011001010"
|
|
"001101011000111110110100001001000111011111101010010000101101100001111001010100001111000100110011001010"
|
|
"001101011100100110011001111001001000001001111010110000101011011000011110010100110001111100110111001010"
|
|
"001101011110111100111001001101101001000011000010111000101111011100001011011010011101111000110111101010"
|
|
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
|
|
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
|
|
},
|
|
/* 47*/ { BARCODE_DBAR_EXPSTK_CC, UNICODE_MODE, "[20]12", "[21]1234[8006]123456789012310102", 0, 1, "Input mode ignored",
|
|
"001101001000110100001000001101001100111011000010010001101100001000001011011110111000101100111011001010"
|
|
"001101011000111110110100001001000111011111101010010000101101100001111001010100001111000100110011001010"
|
|
"001101011100100110011001111001001000001001111010110000101011011000011110010100110001111100110111001010"
|
|
"001101011110111100111001001101101001000011000010111000101111011100001011011010011101111000110111101010"
|
|
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
|
|
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
|
|
},
|
|
/* 48*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]12345678901231[10]1)", "[21]12)(", 0, 0, "Parentheses in AI data",
|
|
"001101101110110100001000001101110111011100111010011101001000010010000001010010001000010000110110001010"
|
|
"001101101100111101000010001001110000110111010010011001001101100011110001011010111000100000110010001010"
|
|
"001101101000111001111101011001011100100000011010011001101001111001000001010000011110010100111010001010"
|
|
"000000111001111001010000000010100100001100110001001000111001001110110100000010100001110000111101010000"
|
|
"010011000110000110101111111100001011110011001110110111000110110001001011111100001110001111000010101101"
|
|
"000000111001111001010000000010100100001100110001001000111001001110110100000010100001110000111101010000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000000011001001111100001000000001010000110111100110101111011011100001001010000001010010000011110100000"
|
|
"101011100110110000011100111111110101111001000011001010000100100011110100001111110001101111100001010010"
|
|
},
|
|
/* 49*/ { BARCODE_DBAR_EXPSTK_CC, GS1PARENS_MODE, "(01)12345678901231(10)1\\)", "(21)12\\)\\(", 0, 1, "Parentheses in AI data",
|
|
"001101101110110100001000001101110111011100111010011101001000010010000001010010001000010000110110001010"
|
|
"001101101100111101000010001001110000110111010010011001001101100011110001011010111000100000110010001010"
|
|
"001101101000111001111101011001011100100000011010011001101001111001000001010000011110010100111010001010"
|
|
"000000111001111001010000000010100100001100110001001000111001001110110100000010100001110000111101010000"
|
|
"010011000110000110101111111100001011110011001110110111000110110001001011111100001110001111000010101101"
|
|
"000000111001111001010000000010100100001100110001001000111001001110110100000010100001110000111101010000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000000011001001111100001000000001010000110111100110101111011011100001001010000001010010000011110100000"
|
|
"101011100110110000011100111111110101111001000011001010000100100011110100001111110001101111100001010010"
|
|
},
|
|
/* 50*/ { BARCODE_DBAR_EXPSTK_CC, -1, "^0112345678901231101)", "^2112)(", 0, 0, "Parentheses in AI data",
|
|
"001101101110110100001000001101110111011100111010011101001000010010000001010010001000010000110110001010"
|
|
"001101101100111101000010001001110000110111010010011001001101100011110001011010111000100000110010001010"
|
|
"001101101000111001111101011001011100100000011010011001101001111001000001010000011110010100111010001010"
|
|
"000000111001111001010000000010100100001100110001001000111001001110110100000010100001110000111101010000"
|
|
"010011000110000110101111111100001011110011001110110111000110110001001011111100001110001111000010101101"
|
|
"000000111001111001010000000010100100001100110001001000111001001110110100000010100001110000111101010000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000000011001001111100001000000001010000110111100110101111011011100001001010000001010010000011110100000"
|
|
"101011100110110000011100111111110101111001000011001010000100100011110100001111110001101111100001010010"
|
|
},
|
|
/* 51*/ { BARCODE_DBAR_EXPSTK_CC, GS1RAW_MODE, "0112345678901231101)", "2112)(", 0, 0, "Parentheses in AI data",
|
|
"001101101110110100001000001101110111011100111010011101001000010010000001010010001000010000110110001010"
|
|
"001101101100111101000010001001110000110111010010011001001101100011110001011010111000100000110010001010"
|
|
"001101101000111001111101011001011100100000011010011001101001111001000001010000011110010100111010001010"
|
|
"000000111001111001010000000010100100001100110001001000111001001110110100000010100001110000111101010000"
|
|
"010011000110000110101111111100001011110011001110110111000110110001001011111100001110001111000010101101"
|
|
"000000111001111001010000000010100100001100110001001000111001001110110100000010100001110000111101010000"
|
|
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
|
|
"000000011001001111100001000000001010000110111100110101111011011100001001010000001010010000011110100000"
|
|
"101011100110110000011100111111110101111001000011001010000100100011110100001111110001101111100001010010"
|
|
},
|
|
};
|
|
const int data_size = ARRAY_SIZE(data);
|
|
int i, length, ret;
|
|
struct zint_symbol *symbol = NULL;
|
|
|
|
struct zint_symbol *previous_symbol = NULL;
|
|
|
|
const char *text;
|
|
|
|
char escaped[1024];
|
|
char escaped2[1024];
|
|
char bwipp_buf[8196];
|
|
char bwipp_msg[1024];
|
|
|
|
/* Only do BWIPP test if asked, too slow otherwise */
|
|
int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript();
|
|
|
|
testStartSymbol(p_ctx->func_name, &symbol);
|
|
|
|
for (i = 0; i < data_size; i++) {
|
|
|
|
if (testContinue(p_ctx, i)) continue;
|
|
|
|
symbol = ZBarcode_Create();
|
|
assert_nonnull(symbol, "Symbol not created\n");
|
|
|
|
if (data[i].composite[0]) {
|
|
text = data[i].composite;
|
|
strcpy(symbol->primary, data[i].data);
|
|
} else {
|
|
text = data[i].data;
|
|
}
|
|
length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/,
|
|
-1 /*option_1*/, -1 /*option_2*/, -1 /*option_3*/, -1 /*output_options*/,
|
|
text, -1, debug);
|
|
|
|
symbol->input_mode |= GS1SYNTAXENGINE_MODE;
|
|
|
|
ret = ZBarcode_Encode(symbol, TCU(text), length);
|
|
|
|
if (p_ctx->generate) {
|
|
const int data_len = (int) strlen(data[i].data);
|
|
const int composite_len = (int) strlen(data[i].composite);
|
|
if (data[i].ret == 0) {
|
|
printf(" /*%3d*/ { %s, %s, \"%s\", \"%s\", %d, %d, \"%s\",\n",
|
|
i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode),
|
|
testUtilEscape(data[i].data, data_len, escaped, sizeof(escaped)),
|
|
testUtilEscape(data[i].composite, composite_len, escaped2, sizeof(escaped2)),
|
|
data[i].ret, data[i].compare_previous, data[i].comment);
|
|
testUtilModulesPrint(symbol, " ", "\n");
|
|
printf(" },\n");
|
|
} else {
|
|
printf(" /*%3d*/ { %s, %s, \"%s\", \"%s\", %s, %d, \"%s\", \"\" },\n",
|
|
i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode),
|
|
testUtilEscape(data[i].data, data_len, escaped, sizeof(escaped)),
|
|
testUtilEscape(data[i].composite, composite_len, escaped2, sizeof(escaped2)),
|
|
testUtilErrorName(data[i].ret), data[i].compare_previous, data[i].comment);
|
|
}
|
|
} else {
|
|
assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n",
|
|
i, ret, data[i].ret, symbol->errtxt);
|
|
if (p_ctx->index == -1 && data[i].compare_previous) {
|
|
int cmp_ret = testUtilSymbolCmp(symbol, previous_symbol);
|
|
assert_zero(cmp_ret, "i:%d testUtilSymbolCmp cmp_ret %d != 0\n", i, cmp_ret);
|
|
}
|
|
|
|
if (ret < ZINT_ERROR) {
|
|
int width, row;
|
|
ret = testUtilModulesCmp(symbol, data[i].expected, &width, &row);
|
|
assert_zero(ret, "i:%d %s testUtilModulesCmp ret %d != 0 width %d row %d (%s)\n",
|
|
i, testUtilBarcodeName(data[i].symbology), ret, width, row, data[i].data);
|
|
|
|
if (do_bwipp && testUtilCanBwipp(i, symbol, -1, -1,
|
|
text[0] == '^' ? ZINT_TESTUTIL_GS1CARET : -1 /*Hack indicator*/, debug)) {
|
|
ret = testUtilBwipp(i, symbol, -1, -1, -1, text, length, symbol->primary, bwipp_buf,
|
|
sizeof(bwipp_buf), NULL);
|
|
assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n",
|
|
i, testUtilBarcodeName(symbol->symbology), ret);
|
|
|
|
ret = testUtilBwippCmp(symbol, bwipp_msg, bwipp_buf, data[i].expected);
|
|
assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n",
|
|
i, testUtilBarcodeName(symbol->symbology), ret, bwipp_msg, bwipp_buf,
|
|
data[i].expected);
|
|
}
|
|
}
|
|
}
|
|
|
|
ZBarcode_Delete(previous_symbol);
|
|
previous_symbol = symbol;
|
|
}
|
|
ZBarcode_Delete(previous_symbol);
|
|
|
|
testFinish();
|
|
}
|
|
|
|
static void test_hrt(const testCtx *const p_ctx) {
|
|
int debug = p_ctx->debug;
|
|
|
|
struct item {
|
|
int symbology;
|
|
int input_mode;
|
|
int output_options;
|
|
const char *data;
|
|
const char *composite;
|
|
|
|
int ret;
|
|
const char *expected;
|
|
const char *expected_content;
|
|
};
|
|
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
|
|
static const struct item data[] = {
|
|
/* 0*/ { BARCODE_EAN8_CC, -1, -1, "1234567", "[20]12", 0, "12345670", "" },
|
|
/* 1*/ { BARCODE_EANX_CC, -1, -1, "1234567", "[20]12", 0, "12345670", "" }, /* EAN-8 */
|
|
/* 2*/ { BARCODE_EAN8_CC, -1, -1, "1234567", "^2012", 0, "12345670", "" },
|
|
/* 3*/ { BARCODE_EANX_CC, -1, -1, "1234567", "^2012", 0, "12345670", "" },
|
|
/* 4*/ { BARCODE_EAN8_CC, GS1RAW_MODE, -1, "1234567", "2012", 0, "12345670", "" },
|
|
/* 5*/ { BARCODE_EANX_CC, GS1RAW_MODE, -1, "1234567", "2012", 0, "12345670", "" },
|
|
/* 6*/ { BARCODE_EAN8_CC, -1, BARCODE_CONTENT_SEGS, "1234567", "[20]12", 0, "12345670", "12345670|2012" },
|
|
/* 7*/ { BARCODE_EANX_CC, -1, BARCODE_CONTENT_SEGS, "1234567", "[20]12", 0, "12345670", "12345670|2012" },
|
|
/* 8*/ { BARCODE_EAN8_CC, -1, BARCODE_CONTENT_SEGS, "1234567", "^2012", 0, "12345670", "12345670|2012" },
|
|
/* 9*/ { BARCODE_EANX_CC, -1, BARCODE_CONTENT_SEGS, "1234567", "^2012", 0, "12345670", "12345670|2012" },
|
|
/* 10*/ { BARCODE_EAN8_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "1234567", "2012", 0, "12345670", "12345670|2012" },
|
|
/* 11*/ { BARCODE_EANX_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "1234567", "2012", 0, "12345670", "12345670|2012" },
|
|
/* 12*/ { BARCODE_EAN13_CC, -1, -1, "123456789012", "[20]12", 0, "1234567890128", "" },
|
|
/* 13*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]12", 0, "1234567890128", "" }, /* EAN-13 */
|
|
/* 14*/ { BARCODE_EAN13_CC, -1, -1, "123456789012", "^2012", 0, "1234567890128", "" },
|
|
/* 15*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "^2012", 0, "1234567890128", "" },
|
|
/* 16*/ { BARCODE_EAN13_CC, GS1RAW_MODE, -1, "123456789012", "2012", 0, "1234567890128", "" },
|
|
/* 17*/ { BARCODE_EANX_CC, GS1RAW_MODE, -1, "123456789012", "2012", 0, "1234567890128", "" },
|
|
/* 18*/ { BARCODE_EAN13_CC, -1, BARCODE_CONTENT_SEGS, "123456789012", "[20]12", 0, "1234567890128", "1234567890128|2012" },
|
|
/* 19*/ { BARCODE_EANX_CC, -1, BARCODE_CONTENT_SEGS, "123456789012", "[20]12", 0, "1234567890128", "1234567890128|2012" },
|
|
/* 20*/ { BARCODE_EAN13_CC, -1, BARCODE_CONTENT_SEGS, "123456789012", "^2012", 0, "1234567890128", "1234567890128|2012" },
|
|
/* 21*/ { BARCODE_EANX_CC, -1, BARCODE_CONTENT_SEGS, "123456789012", "^2012", 0, "1234567890128", "1234567890128|2012" },
|
|
/* 22*/ { BARCODE_EAN13_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "123456789012", "2012", 0, "1234567890128", "1234567890128|2012" },
|
|
/* 23*/ { BARCODE_EANX_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "123456789012", "2012", 0, "1234567890128", "1234567890128|2012" },
|
|
/* 24*/ { BARCODE_EAN13_CC, -1, -1, "123456789012", "[10]LOT123[20]12", 0, "1234567890128", "" },
|
|
/* 25*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[10]LOT123[20]12", 0, "1234567890128", "" }, /* EAN-13 */
|
|
/* 26*/ { BARCODE_EAN13_CC, -1, -1, "123456789012", "^10LOT123^2012", 0, "1234567890128", "" },
|
|
/* 27*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "^10LOT123^2012", 0, "1234567890128", "" },
|
|
/* 28*/ { BARCODE_EAN13_CC, GS1RAW_MODE, -1, "123456789012", "10LOT123\0352012", 0, "1234567890128", "" },
|
|
/* 29*/ { BARCODE_EANX_CC, GS1RAW_MODE, -1, "123456789012", "10LOT123\0352012", 0, "1234567890128", "" },
|
|
/* 30*/ { BARCODE_EAN13_CC, -1, BARCODE_CONTENT_SEGS, "123456789012", "[10]LOT123[20]12", 0, "1234567890128", "1234567890128|10LOT123\0352012" },
|
|
/* 31*/ { BARCODE_EANX_CC, -1, BARCODE_CONTENT_SEGS, "123456789012", "[10]LOT123[20]12", 0, "1234567890128", "1234567890128|10LOT123\0352012" }, /* EAN-13 */
|
|
/* 32*/ { BARCODE_EAN13_CC, -1, BARCODE_CONTENT_SEGS, "123456789012", "^10LOT123^2012", 0, "1234567890128", "1234567890128|10LOT123\0352012" },
|
|
/* 33*/ { BARCODE_EANX_CC, -1, BARCODE_CONTENT_SEGS, "123456789012", "^10LOT123^2012", 0, "1234567890128", "1234567890128|10LOT123\0352012" }, /* EAN-13 */
|
|
/* 34*/ { BARCODE_EAN13_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "123456789012", "10LOT123\0352012", 0, "1234567890128", "1234567890128|10LOT123\0352012" },
|
|
/* 35*/ { BARCODE_EANX_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "123456789012", "10LOT123\0352012", 0, "1234567890128", "1234567890128|10LOT123\0352012" },
|
|
/* 36*/ { BARCODE_EAN13_CC, -1, -1, "1234567890128", "[20]12", 0, "1234567890128", "" },
|
|
/* 37*/ { BARCODE_EANX_CC, -1, -1, "1234567890128", "[20]12", 0, "1234567890128", "" },
|
|
/* 38*/ { BARCODE_EAN13_CC, -1, -1, "1234567890128", "^2012", 0, "1234567890128", "" },
|
|
/* 39*/ { BARCODE_EANX_CC, -1, -1, "1234567890128", "^2012", 0, "1234567890128", "" },
|
|
/* 40*/ { BARCODE_EAN13_CC, GS1RAW_MODE, -1, "1234567890128", "2012", 0, "1234567890128", "" },
|
|
/* 41*/ { BARCODE_EANX_CC, GS1RAW_MODE, -1, "1234567890128", "2012", 0, "1234567890128", "" },
|
|
/* 42*/ { BARCODE_EAN13_CC, -1, -1, "1234567890123", "[20]12", ZINT_ERROR_INVALID_CHECK, "", "" },
|
|
/* 43*/ { BARCODE_EANX_CC, -1, -1, "1234567890123", "[20]12", ZINT_ERROR_INVALID_CHECK, "", "" },
|
|
/* 44*/ { BARCODE_EAN13_CC, GS1NOCHECK_MODE, -1, "1234567890123", "[20]12", ZINT_ERROR_INVALID_CHECK, "", "" }, /* Still checked */
|
|
/* 45*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, -1, "1234567890123", "[20]12", ZINT_ERROR_INVALID_CHECK, "", "" }, /* Still checked */
|
|
/* 46*/ { BARCODE_EAN13_CC, -1, -1, "1234567890128", "[20]1A", ZINT_ERROR_INVALID_DATA, "", "" }, /* AI (20) should be 2 nos. */
|
|
/* 47*/ { BARCODE_EANX_CC, -1, -1, "1234567890128", "[20]1A", ZINT_ERROR_INVALID_DATA, "", "" }, /* AI (20) should be 2 nos. */
|
|
/* 48*/ { BARCODE_EAN13_CC, GS1NOCHECK_MODE, -1, "1234567890128", "[20]1A", 0, "1234567890128", "" },
|
|
/* 49*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, -1, "1234567890128", "[20]1A", 0, "1234567890128", "" },
|
|
/* 50*/ { BARCODE_EAN13_CC, -1, -1, "1234567890128+12", "[20]12", 0, "1234567890128+12", "" },
|
|
/* 51*/ { BARCODE_EANX_CC, -1, -1, "1234567890128+12", "[20]12", 0, "1234567890128+12", "" },
|
|
/* 52*/ { BARCODE_EAN13_CC, -1, -1, "1234567890128+12", "^2012", 0, "1234567890128+12", "" },
|
|
/* 53*/ { BARCODE_EANX_CC, -1, -1, "1234567890128+12", "^2012", 0, "1234567890128+12", "" },
|
|
/* 54*/ { BARCODE_EAN13_CC, GS1RAW_MODE, -1, "1234567890128+12", "2012", 0, "1234567890128+12", "" },
|
|
/* 55*/ { BARCODE_EANX_CC, GS1RAW_MODE, -1, "1234567890128+12", "2012", 0, "1234567890128+12", "" },
|
|
/* 56*/ { BARCODE_EAN13_CC, -1, BARCODE_CONTENT_SEGS, "1234567890128+12", "[20]12", 0, "1234567890128+12", "123456789012812|2012" },
|
|
/* 57*/ { BARCODE_EANX_CC, -1, BARCODE_CONTENT_SEGS, "1234567890128+12", "[20]12", 0, "1234567890128+12", "123456789012812|2012" },
|
|
/* 58*/ { BARCODE_EAN13_CC, -1, BARCODE_CONTENT_SEGS, "1234567890128+12", "^2012", 0, "1234567890128+12", "123456789012812|2012" },
|
|
/* 59*/ { BARCODE_EANX_CC, -1, BARCODE_CONTENT_SEGS, "1234567890128+12", "^2012", 0, "1234567890128+12", "123456789012812|2012" },
|
|
/* 60*/ { BARCODE_EAN13_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "1234567890128+12", "2012", 0, "1234567890128+12", "123456789012812|2012" },
|
|
/* 61*/ { BARCODE_EANX_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "1234567890128+12", "2012", 0, "1234567890128+12", "123456789012812|2012" },
|
|
/* 62*/ { BARCODE_DBAR_OMN_CC, -1, -1, "1234567890123", "[20]12", 0, "(01)12345678901231", "" },
|
|
/* 63*/ { BARCODE_DBAR_OMN_CC, -1, -1, "1234567890123", "^2012", 0, "(01)12345678901231", "" },
|
|
/* 64*/ { BARCODE_DBAR_OMN_CC, GS1RAW_MODE, -1, "1234567890123", "2012", 0, "(01)12345678901231", "" },
|
|
/* 65*/ { BARCODE_DBAR_OMN_CC, -1, BARCODE_CONTENT_SEGS, "1234567890123", "[20]12", 0, "(01)12345678901231", "0112345678901231|2012" },
|
|
/* 66*/ { BARCODE_DBAR_OMN_CC, -1, BARCODE_CONTENT_SEGS, "1234567890123", "^2012", 0, "(01)12345678901231", "0112345678901231|2012" },
|
|
/* 67*/ { BARCODE_DBAR_OMN_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "1234567890123", "2012", 0, "(01)12345678901231", "0112345678901231|2012" },
|
|
/* 68*/ { BARCODE_DBAR_OMN_CC, -1, -1, "12345678901231", "[20]12", 0, "(01)12345678901231", "" },
|
|
/* 69*/ { BARCODE_DBAR_OMN_CC, -1, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "", "" },
|
|
/* 70*/ { BARCODE_DBAR_OMN_CC, GS1NOCHECK_MODE, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "", "" }, /* Still checked */
|
|
/* 71*/ { BARCODE_DBAR_OMN_CC, -1, -1, "12345678901231", "[20]1A", ZINT_ERROR_INVALID_DATA, "", "" }, /* AI (20) should be 2 nos. */
|
|
/* 72*/ { BARCODE_DBAR_OMN_CC, GS1NOCHECK_MODE, -1, "12345678901231", "[20]1A", 0, "(01)12345678901231", "" },
|
|
/* 73*/ { BARCODE_DBAR_LTD_CC, -1, -1, "1234567890123", "[20]12", 0, "(01)12345678901231", "" },
|
|
/* 74*/ { BARCODE_DBAR_LTD_CC, -1, -1, "1234567890123", "^2012", 0, "(01)12345678901231", "" },
|
|
/* 75*/ { BARCODE_DBAR_LTD_CC, GS1RAW_MODE, -1, "1234567890123", "2012", 0, "(01)12345678901231", "" },
|
|
/* 76*/ { BARCODE_DBAR_LTD_CC, -1, BARCODE_CONTENT_SEGS, "1234567890123", "[20]12", 0, "(01)12345678901231", "0112345678901231|2012" },
|
|
/* 77*/ { BARCODE_DBAR_LTD_CC, -1, BARCODE_CONTENT_SEGS, "1234567890123", "^2012", 0, "(01)12345678901231", "0112345678901231|2012" },
|
|
/* 78*/ { BARCODE_DBAR_LTD_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "1234567890123", "2012", 0, "(01)12345678901231", "0112345678901231|2012" },
|
|
/* 79*/ { BARCODE_DBAR_LTD_CC, -1, -1, "12345678901231", "[20]12", 0, "(01)12345678901231", "" },
|
|
/* 80*/ { BARCODE_DBAR_LTD_CC, -1, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "", "" },
|
|
/* 81*/ { BARCODE_DBAR_LTD_CC, GS1NOCHECK_MODE, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "", "" }, /* Still checked */
|
|
/* 82*/ { BARCODE_DBAR_LTD_CC, -1, -1, "12345678901231", "[20]1A", ZINT_ERROR_INVALID_DATA, "", "" }, /* AI (20) should be 2 nos. */
|
|
/* 83*/ { BARCODE_DBAR_LTD_CC, GS1NOCHECK_MODE, -1, "12345678901231", "[20]1A", 0, "(01)12345678901231", "" },
|
|
/* 84*/ { BARCODE_UPCA_CC, -1, -1, "12345678901", "[20]12", 0, "123456789012", "" },
|
|
/* 85*/ { BARCODE_UPCA_CC, -1, -1, "12345678901", "^2012", 0, "123456789012", "" },
|
|
/* 86*/ { BARCODE_UPCA_CC, GS1RAW_MODE, -1, "12345678901", "2012", 0, "123456789012", "" },
|
|
/* 87*/ { BARCODE_UPCA_CC, -1, BARCODE_CONTENT_SEGS, "12345678901", "[20]12", 0, "123456789012", "0123456789012|2012" },
|
|
/* 88*/ { BARCODE_UPCA_CC, -1, BARCODE_CONTENT_SEGS, "12345678901", "^2012", 0, "123456789012", "0123456789012|2012" },
|
|
/* 89*/ { BARCODE_UPCA_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "12345678901", "2012", 0, "123456789012", "0123456789012|2012" },
|
|
/* 90*/ { BARCODE_UPCA_CC, -1, -1, "123456789012", "[20]12", 0, "123456789012", "" },
|
|
/* 91*/ { BARCODE_UPCA_CC, -1, -1, "123456789013", "[20]12", ZINT_ERROR_INVALID_CHECK, "", "" },
|
|
/* 92*/ { BARCODE_UPCA_CC, GS1NOCHECK_MODE, -1, "123456789013", "[20]12", ZINT_ERROR_INVALID_CHECK, "", "" }, /* Still checked */
|
|
/* 93*/ { BARCODE_UPCA_CC, -1, -1, "123456789012", "[20]1A", ZINT_ERROR_INVALID_DATA, "", "" }, /* AI (20) should be 2 nos. */
|
|
/* 94*/ { BARCODE_UPCA_CC, GS1NOCHECK_MODE, -1, "123456789012", "[20]1A", 0, "123456789012", "" },
|
|
/* 95*/ { BARCODE_UPCA_CC, -1, -1, "123456789012+123", "[20]12", 0, "123456789012+00123", "" },
|
|
/* 96*/ { BARCODE_UPCA_CC, -1, BARCODE_CONTENT_SEGS, "123456789012+123", "[20]12", 0, "123456789012+00123", "012345678901200123|2012" },
|
|
/* 97*/ { BARCODE_UPCE_CC, -1, -1, "123456", "[20]12", 0, "01234565", "" },
|
|
/* 98*/ { BARCODE_UPCE_CC, -1, -1, "123456", "^2012", 0, "01234565", "" },
|
|
/* 99*/ { BARCODE_UPCE_CC, GS1RAW_MODE, -1, "123456", "2012", 0, "01234565", "" },
|
|
/*100*/ { BARCODE_UPCE_CC, -1, BARCODE_CONTENT_SEGS, "123456", "[20]12", 0, "01234565", "0012345000065|2012" },
|
|
/*101*/ { BARCODE_UPCE_CC, -1, BARCODE_CONTENT_SEGS, "123456", "^2012", 0, "01234565", "0012345000065|2012" },
|
|
/*102*/ { BARCODE_UPCE_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "123456", "2012", 0, "01234565", "0012345000065|2012" },
|
|
/*103*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]12", 0, "12345670", "" },
|
|
/*104*/ { BARCODE_UPCE_CC, -1, -1, "12345670", "[20]12", 0, "12345670", "" },
|
|
/*105*/ { BARCODE_UPCE_CC, -1, -1, "12345671", "[20]12", ZINT_ERROR_INVALID_CHECK, "", "" },
|
|
/*106*/ { BARCODE_UPCE_CC, GS1NOCHECK_MODE, -1, "12345671", "[20]12", ZINT_ERROR_INVALID_CHECK, "", "" }, /* Still checked */
|
|
/*107*/ { BARCODE_UPCE_CC, -1, -1, "12345670", "[20]12", 0, "12345670", "" }, /* Check digit can now be given for UPCE_CC, like UPCA_CC */
|
|
/*108*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]1A", ZINT_ERROR_INVALID_DATA, "", "" }, /* AI (20) should be 2 nos. */
|
|
/*109*/ { BARCODE_UPCE_CC, GS1NOCHECK_MODE, -1, "1234567", "[20]1A", 0, "12345670", "" },
|
|
/*110*/ { BARCODE_UPCE_CC, -1, BARCODE_CONTENT_SEGS, "1234567+2", "[20]12", 0, "12345670+02", "012345600007002|2012" },
|
|
/*111*/ { BARCODE_DBAR_STK_CC, -1, -1, "12345678901231", "[20]12", 0, "", "" }, /* No HRT for stacked symbologies */
|
|
/*112*/ { BARCODE_DBAR_STK_CC, -1, -1, "12345678901231", "^2012", 0, "", "" }, /* No HRT for stacked symbologies */
|
|
/*113*/ { BARCODE_DBAR_STK_CC, GS1RAW_MODE, -1, "12345678901231", "2012", 0, "", "" }, /* No HRT for stacked symbologies */
|
|
/*114*/ { BARCODE_DBAR_STK_CC, -1, BARCODE_CONTENT_SEGS, "12345678901231", "[20]12", 0, "", "0112345678901231|2012" }, /* But have content segs */
|
|
/*115*/ { BARCODE_DBAR_STK_CC, -1, BARCODE_CONTENT_SEGS, "12345678901231", "^2012", 0, "", "0112345678901231|2012" }, /* But have content segs */
|
|
/*116*/ { BARCODE_DBAR_STK_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "12345678901231", "2012", 0, "", "0112345678901231|2012" }, /* But have content segs */
|
|
/*117*/ { BARCODE_DBAR_OMNSTK_CC, -1, -1, "12345678901231", "[20]12", 0, "", "" },
|
|
/*118*/ { BARCODE_DBAR_OMNSTK_CC, -1, -1, "12345678901231", "^2012", 0, "", "" },
|
|
/*119*/ { BARCODE_DBAR_OMNSTK_CC, GS1RAW_MODE, -1, "12345678901231", "2012", 0, "", "" },
|
|
/*120*/ { BARCODE_DBAR_OMNSTK_CC, -1, BARCODE_CONTENT_SEGS, "12345678901231", "[20]12", 0, "", "0112345678901231|2012" },
|
|
/*121*/ { BARCODE_DBAR_OMNSTK_CC, -1, BARCODE_CONTENT_SEGS, "12345678901231", "^2012", 0, "", "0112345678901231|2012" },
|
|
/*122*/ { BARCODE_DBAR_OMNSTK_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "12345678901231", "2012", 0, "", "0112345678901231|2012" },
|
|
};
|
|
const int data_size = ARRAY_SIZE(data);
|
|
int i, length, composite_length, ret;
|
|
struct zint_symbol *symbol = NULL;
|
|
int expected_length, expected_content_length;
|
|
|
|
testStartSymbol(p_ctx->func_name, &symbol);
|
|
|
|
for (i = 0; i < data_size; i++) {
|
|
|
|
if (testContinue(p_ctx, i)) continue;
|
|
|
|
symbol = ZBarcode_Create();
|
|
assert_nonnull(symbol, "Symbol not created\n");
|
|
|
|
length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/,
|
|
-1 /*option_1*/, -1 /*option_2*/, -1 /*option_3*/, data[i].output_options,
|
|
data[i].data, -1, debug);
|
|
assert_zero(length >= 128, "i:%d length %d >= 128\n", i, length);
|
|
symbol->input_mode |= GS1SYNTAXENGINE_MODE;
|
|
strcpy(symbol->primary, data[i].data);
|
|
|
|
expected_length = (int) strlen(data[i].expected);
|
|
expected_content_length = (int) strlen(data[i].expected_content);
|
|
|
|
composite_length = (int) strlen(data[i].composite);
|
|
|
|
ret = ZBarcode_Encode(symbol, TCU(data[i].composite), composite_length);
|
|
assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, data[i].ret, ret, symbol->errtxt);
|
|
|
|
assert_equal(symbol->text_length, expected_length, "i:%d text_length %d != expected_length %d\n",
|
|
i, symbol->text_length, expected_length);
|
|
assert_zero(strcmp((const char *) symbol->text, data[i].expected), "i:%d strcmp(%s, %s) != 0\n",
|
|
i, symbol->text, data[i].expected);
|
|
if (symbol->output_options & BARCODE_CONTENT_SEGS) {
|
|
assert_nonnull(symbol->content_segs, "i:%d content_segs NULL\n", i);
|
|
assert_nonnull(symbol->content_segs[0].source, "i:%d content_segs[0].source NULL\n", i);
|
|
assert_equal(symbol->content_segs[0].length, expected_content_length,
|
|
"i:%d content_segs[0].length %d != expected_content_length %d\n",
|
|
i, symbol->content_segs[0].length, expected_content_length);
|
|
assert_zero(memcmp(symbol->content_segs[0].source, data[i].expected_content, expected_content_length),
|
|
"i:%d memcmp(%.*s, %s, %d) != 0\n",
|
|
i, symbol->content_segs[0].length, symbol->content_segs[0].source, data[i].expected_content,
|
|
expected_content_length);
|
|
} else {
|
|
assert_null(symbol->content_segs, "i:%d content_segs not NULL\n", i);
|
|
}
|
|
|
|
ZBarcode_Delete(symbol);
|
|
}
|
|
|
|
testFinish();
|
|
}
|
|
|
|
static void test_gs1_verify(const testCtx *const p_ctx) {
|
|
int debug = p_ctx->debug;
|
|
|
|
struct item {
|
|
int symbology;
|
|
int input_mode;
|
|
const char *data;
|
|
int ret;
|
|
const char *expected;
|
|
const char *expected_errtxt;
|
|
};
|
|
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
|
|
static const struct item data[] = {
|
|
/* 0*/ { BARCODE_GS1_128, -1, "", ZINT_ERROR_INVALID_DATA, "", "802: Data does not start with an AI" },
|
|
/* 1*/ { BARCODE_GS1_128, GS1RAW_MODE, "", ZINT_ERROR_INVALID_DATA, "", "802: Data does not start with an AI" },
|
|
/* 2*/ { BARCODE_GS1_128, -1, "A", ZINT_ERROR_INVALID_DATA, "", "802: Data does not start with an AI" },
|
|
/* 3*/ { BARCODE_GS1_128, -1, "^A", ZINT_ERROR_INVALID_DATA, "", "802: Data does not start with an AI" },
|
|
/* 4*/ { BARCODE_GS1_128, GS1RAW_MODE, "A", ZINT_ERROR_INVALID_DATA, "", "802: Data does not start with an AI" },
|
|
/* 5*/ { BARCODE_GS1_128, -1, "[", ZINT_ERROR_INVALID_DATA, "", "802: Data does not start with an AI" },
|
|
/* 6*/ { BARCODE_GS1_128, -1, "^", ZINT_ERROR_INVALID_DATA, "", "802: Data does not start with an AI" },
|
|
/* 7*/ { BARCODE_GS1_128, -1, "[]12", ZINT_ERROR_INVALID_DATA, "", "268: Unrecognised AI: " },
|
|
/* 8*/ { BARCODE_GS1_128, -1, "^^12", ZINT_ERROR_INVALID_DATA, "", "268: No known AI is a prefix of: ^12..." },
|
|
/* 9*/ { BARCODE_GS1_128, -1, "[1]12", ZINT_ERROR_INVALID_DATA, "", "268: Unrecognised AI: 1" },
|
|
/* 10*/ { BARCODE_GS1_128, -1, "^1^12", ZINT_ERROR_INVALID_DATA, "", "268: No known AI is a prefix of: 1^12..." },
|
|
/* 11*/ { BARCODE_GS1_128, -1, "[242]123456[1]12", ZINT_ERROR_INVALID_DATA, "", "268: Unrecognised AI: 1" },
|
|
/* 12*/ { BARCODE_GS1_128, -1, "^242123456^112", ZINT_ERROR_INVALID_DATA, "", "268: AI (11) data has incorrect length" },
|
|
/* 13*/ { BARCODE_GS1_128, GS1RAW_MODE, "242123456\035112", ZINT_ERROR_INVALID_DATA, "", "268: AI (11) data has incorrect length" },
|
|
/* 14*/ { BARCODE_GS1_128, -1, "[242]123456[1]12", ZINT_ERROR_INVALID_DATA, "", "268: Unrecognised AI: 1" },
|
|
/* 15*/ { BARCODE_GS1_128, -1, "[12345]12", ZINT_ERROR_INVALID_DATA, "", "268: Unrecognised AI: 12345" },
|
|
/* 16*/ { BARCODE_GS1_128, -1, "^1234512", ZINT_ERROR_INVALID_DATA, "", "268: AI (12) data has incorrect length" },
|
|
/* 17*/ { BARCODE_GS1_128, GS1RAW_MODE, "1234512", ZINT_ERROR_INVALID_DATA, "", "268: AI (12) data has incorrect length" },
|
|
/* 18*/ { BARCODE_GS1_128, -1, "[9999]1234", ZINT_ERROR_INVALID_DATA, "", "268: Unrecognised AI: 9999" },
|
|
/* 19*/ { BARCODE_GS1_128, -1, "^99991234", 0, "99991234", "" },
|
|
/* 20*/ { BARCODE_GS1_128, GS1RAW_MODE, "99991234", 0, "99991234", "" },
|
|
/* 21*/ { BARCODE_GS1_128, -1, "[[01]]1234", ZINT_ERROR_INVALID_DATA, "", "268: Unrecognised AI: (01" },
|
|
/* 22*/ { BARCODE_GS1_128, GS1PARENS_MODE, "((01))1234", ZINT_ERROR_INVALID_DATA, "", "268: Unrecognised AI: (01" },
|
|
/* 23*/ { BARCODE_GS1_128, -1, "[1A]12", ZINT_ERROR_INVALID_DATA, "", "268: Unrecognised AI: 1A" },
|
|
/* 24*/ { BARCODE_GS1_128, -1, "^1A12", ZINT_ERROR_INVALID_DATA, "", "268: No known AI is a prefix of: 1A12..." },
|
|
/* 25*/ { BARCODE_GS1_128, GS1RAW_MODE, "1A12", ZINT_ERROR_INVALID_DATA, "", "268: No known AI is a prefix of: 1A12..." },
|
|
/* 26*/ { BARCODE_GS1_128, -1, "[10]", ZINT_ERROR_INVALID_DATA, "", "268: Failed to parse AI data" },
|
|
/* 27*/ { BARCODE_GS1_128, -1, "^10", ZINT_ERROR_INVALID_DATA, "", "268: AI (10) data is empty" },
|
|
/* 28*/ { BARCODE_GS1_128, GS1RAW_MODE, "10", ZINT_ERROR_INVALID_DATA, "", "268: AI (10) data is empty" },
|
|
/* 29*/ { BARCODE_GS1_128, -1, "[90]\012", ZINT_ERROR_INVALID_DATA, "", "267: AI (90): A non-CSET 82 character was found where a CSET 82 character is expected. (90)|\\x0A|" },
|
|
/* 30*/ { BARCODE_GS1_128, -1, "^90\012", ZINT_ERROR_INVALID_DATA, "", "267: AI (90): A non-CSET 82 character was found where a CSET 82 character is expected. (90)|\\x0A|" },
|
|
/* 31*/ { BARCODE_GS1_128, GS1RAW_MODE, "90\012", ZINT_ERROR_INVALID_DATA, "", "267: AI (90): A non-CSET 82 character was found where a CSET 82 character is expected. (90)|\\x0A|" },
|
|
/* 32*/ { BARCODE_GS1_128, -1, "[00]123456789012345678", ZINT_ERROR_INVALID_DATA, "", "267: AI (00): The numeric check digit is incorrect. (00)12345678901234567|8|" },
|
|
/* 33*/ { BARCODE_GS1_128, -1, "^00123456789012345678", ZINT_ERROR_INVALID_DATA, "", "267: AI (00): The numeric check digit is incorrect. (00)12345678901234567|8|" },
|
|
/* 34*/ { BARCODE_GS1_128, GS1RAW_MODE, "00123456789012345678", ZINT_ERROR_INVALID_DATA, "", "267: AI (00): The numeric check digit is incorrect. (00)12345678901234567|8|" },
|
|
/* 35*/ { BARCODE_GS1_128, -1, "[00]123456789012345675", 0, "00123456789012345675", "" },
|
|
/* 36*/ { BARCODE_GS1_128, -1, "^00123456789012345675", 0, "00123456789012345675", "" },
|
|
/* 37*/ { BARCODE_GS1_128, GS1RAW_MODE, "00123456789012345675", 0, "00123456789012345675", "" },
|
|
/* 38*/ { BARCODE_GS1_128, GS1PARENS_MODE, "(00)123456789012345675", 0, "00123456789012345675", "" },
|
|
/* 39*/ { BARCODE_GS1_128, -1, "[00]12345678901234567", ZINT_ERROR_INVALID_DATA, "", "268: AI (00) value is too short" },
|
|
/* 40*/ { BARCODE_GS1_128, -1, "^0012345678901234567", ZINT_ERROR_INVALID_DATA, "", "268: AI (00) data has incorrect length" },
|
|
/* 41*/ { BARCODE_GS1_128, GS1RAW_MODE, "0012345678901234567", ZINT_ERROR_INVALID_DATA, "", "268: AI (00) data has incorrect length" },
|
|
/* 42*/ { BARCODE_GS1_128, -1, "[00]1234567890123456789", ZINT_ERROR_INVALID_DATA, "", "268: AI (00) value is too long" },
|
|
/* 43*/ { BARCODE_GS1_128, -1, "^001234567890123456789", ZINT_ERROR_INVALID_DATA, "", "267: AI (00): The numeric check digit is incorrect. (00)12345678901234567|8|" },
|
|
/* 44*/ { BARCODE_GS1_128, GS1RAW_MODE, "001234567890123456789", ZINT_ERROR_INVALID_DATA, "", "267: AI (00): The numeric check digit is incorrect. (00)12345678901234567|8|" },
|
|
/* 45*/ { BARCODE_GS1_128, -1, "[3910]123123456789012345", ZINT_ERROR_INVALID_DATA, "", "267: AI (3910): A valid ISO 4217 three-digit currency code is required. (3910)|123|" },
|
|
/* 46*/ { BARCODE_GS1_128, -1, "^3910123123456789012345", ZINT_ERROR_INVALID_DATA, "", "267: AI (3910): A valid ISO 4217 three-digit currency code is required. (3910)|123|" },
|
|
/* 47*/ { BARCODE_GS1_128, GS1RAW_MODE, "3910123123456789012345", ZINT_ERROR_INVALID_DATA, "", "267: AI (3910): A valid ISO 4217 three-digit currency code is required. (3910)|123|" },
|
|
/* 48*/ { BARCODE_GS1_128, -1, "[3910]997123456789012345", 0, "3910997123456789012345", "" },
|
|
/* 49*/ { BARCODE_GS1_128, -1, "^3910997123456789012345", 0, "3910997123456789012345", "" },
|
|
/* 50*/ { BARCODE_GS1_128, GS1RAW_MODE, "3910997123456789012345", 0, "3910997123456789012345", "" },
|
|
/* 51*/ { BARCODE_DBAR_EXP, -1, "[3910]997123456789012345", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (3910) are not satisfied: 8020" },
|
|
/* 52*/ { BARCODE_DBAR_EXP, -1, "^3910997123456789012345", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (3910) are not satisfied: 8020" },
|
|
/* 53*/ { BARCODE_DBAR_EXP, GS1RAW_MODE, "3910997123456789012345", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (3910) are not satisfied: 8020" },
|
|
/* 54*/ { BARCODE_GS1_128, -1, "[3910]997123456789012345[8020]REF123", 0, "3910997123456789012345\0358020REF123", "" },
|
|
/* 55*/ { BARCODE_GS1_128, -1, "^3910997123456789012345^8020REF123", 0, "3910997123456789012345\0358020REF123", "" },
|
|
/* 56*/ { BARCODE_GS1_128, GS1RAW_MODE, "3910997123456789012345\0358020REF123", 0, "3910997123456789012345\0358020REF123", "" },
|
|
/* 57*/ { BARCODE_DBAR_EXP, -1, "[3910]997123456789012345[8020]REF123", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (8020) are not satisfied: 415" },
|
|
/* 58*/ { BARCODE_DBAR_EXP, -1, "^3910997123456789012345^8020REF123", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (8020) are not satisfied: 415" },
|
|
/* 59*/ { BARCODE_DBAR_EXP, GS1RAW_MODE, "3910997123456789012345\0358020REF123", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (8020) are not satisfied: 415" },
|
|
/* 60*/ { BARCODE_GS1_128, -1, "[3910]997123456789012345[8020]REF123[415]1234567890123", ZINT_ERROR_INVALID_DATA, "", "267: AI (415): The numeric check digit is incorrect. (415)123456789012|3|" },
|
|
/* 61*/ { BARCODE_GS1_128, -1, "^3910997123456789012345^8020REF123^4151234567890123", ZINT_ERROR_INVALID_DATA, "", "267: AI (415): The numeric check digit is incorrect. (415)123456789012|3|" },
|
|
/* 62*/ { BARCODE_GS1_128, GS1RAW_MODE, "3910997123456789012345\0358020REF123\0354151234567890123", ZINT_ERROR_INVALID_DATA, "", "267: AI (415): The numeric check digit is incorrect. (415)123456789012|3|" },
|
|
/* 63*/ { BARCODE_GS1_128, -1, "[3910]997123456789012345[8020]REF123[415]1234567890128", 0, "3910997123456789012345\0358020REF123\0354151234567890128", "" },
|
|
/* 64*/ { BARCODE_GS1_128, -1, "^3910997123456789012345^8020REF123^4151234567890128", 0, "3910997123456789012345\0358020REF123\0354151234567890128", "" },
|
|
/* 65*/ { BARCODE_GS1_128, GS1RAW_MODE, "3910997123456789012345\0358020REF123\0354151234567890128", 0, "3910997123456789012345\0358020REF123\0354151234567890128", "" },
|
|
/* 66*/ { BARCODE_GS1_128, GS1PARENS_MODE, "(3910)997123456789012345(8020)REF123(415)1234567890128", 0, "3910997123456789012345\0358020REF123\0354151234567890128", "" },
|
|
/* 67*/ { BARCODE_GS1_128, GS1PARENS_MODE, "^3910997123456789012345^8020REF123^4151234567890128", 0, "3910997123456789012345\0358020REF123\0354151234567890128", "" },
|
|
/* 68*/ { BARCODE_GS1_128, GS1PARENS_MODE | GS1RAW_MODE, "3910997123456789012345\0358020REF123\0354151234567890128", 0, "3910997123456789012345\0358020REF123\0354151234567890128", "" },
|
|
/* 69*/ { BARCODE_GS1_128, -1, "[402]13131313131313132", ZINT_ERROR_INVALID_DATA, "", "267: AI (402): The numeric check digit is incorrect. (402)1313131313131313|2|" },
|
|
/* 70*/ { BARCODE_GS1_128, -1, "^40213131313131313132", ZINT_ERROR_INVALID_DATA, "", "267: AI (402): The numeric check digit is incorrect. (402)1313131313131313|2|" },
|
|
/* 71*/ { BARCODE_GS1_128, GS1RAW_MODE, "40213131313131313132", ZINT_ERROR_INVALID_DATA, "", "267: AI (402): The numeric check digit is incorrect. (402)1313131313131313|2|" },
|
|
/* 72*/ { BARCODE_GS1_128, -1, "[402]13131313131313130", 0, "40213131313131313130", "" },
|
|
/* 73*/ { BARCODE_GS1_128, -1, "^40213131313131313130", 0, "40213131313131313130", "" },
|
|
/* 74*/ { BARCODE_GS1_128, GS1RAW_MODE, "40213131313131313130", 0, "40213131313131313130", "" },
|
|
/* 75*/ { BARCODE_GS1_128, -1, "[4309]1234567890123456789A", ZINT_ERROR_INVALID_DATA, "", "267: AI (4309): A non-digit character was found where a digit is expected. (4309)1234567890123456789|A|" },
|
|
/* 76*/ { BARCODE_GS1_128, -1, "^43091234567890123456789A", ZINT_ERROR_INVALID_DATA, "", "267: AI (4309): A non-digit character was found where a digit is expected. (4309)1234567890123456789|A|" },
|
|
/* 77*/ { BARCODE_GS1_128, GS1RAW_MODE, "43091234567890123456789A", ZINT_ERROR_INVALID_DATA, "", "267: AI (4309): A non-digit character was found where a digit is expected. (4309)1234567890123456789|A|" },
|
|
/* 78*/ { BARCODE_GS1_128, -1, "[7006]200132", ZINT_ERROR_INVALID_DATA, "", "267: AI (7006): The date contains an illegal day of the month. (7006)2001|32|" },
|
|
/* 79*/ { BARCODE_GS1_128, -1, "^7006200132", ZINT_ERROR_INVALID_DATA, "", "267: AI (7006): The date contains an illegal day of the month. (7006)2001|32|" },
|
|
/* 80*/ { BARCODE_GS1_128, GS1RAW_MODE, "7006200132", ZINT_ERROR_INVALID_DATA, "", "267: AI (7006): The date contains an illegal day of the month. (7006)2001|32|" },
|
|
/* 81*/ { BARCODE_GS1_128, -1, "[7006]200131", 0, "7006200131", "" },
|
|
/* 82*/ { BARCODE_GS1_128, -1, "^7006200131", 0, "7006200131", "" },
|
|
/* 83*/ { BARCODE_GS1_128, GS1RAW_MODE, "7006200131", 0, "7006200131", "" },
|
|
/* 84*/ { BARCODE_AZTEC, GS1_MODE, "[7006]200131", ZINT_ERROR_INVALID_DATA, "7006200131", "268: Required AIs for AI (7006) are not satisfied: 01,02" },
|
|
/* 85*/ { BARCODE_AZTEC, GS1_MODE, "^7006200131", ZINT_ERROR_INVALID_DATA, "7006200131", "268: Required AIs for AI (7006) are not satisfied: 01,02" },
|
|
/* 86*/ { BARCODE_AZTEC, GS1_MODE | GS1RAW_MODE, "7006200131", ZINT_ERROR_INVALID_DATA, "7006200131", "268: Required AIs for AI (7006) are not satisfied: 01,02" },
|
|
/* 87*/ { BARCODE_GS1_128, -1, "[7006]200131[01]12345678901231", 0, "7006200131\0350112345678901231", "" },
|
|
/* 88*/ { BARCODE_GS1_128, -1, "^7006200131^0112345678901231", 0, "7006200131\0350112345678901231", "" },
|
|
/* 89*/ { BARCODE_GS1_128, GS1RAW_MODE, "7006200131\0350112345678901231", 0, "7006200131\0350112345678901231", "" },
|
|
/* 90*/ { BARCODE_GS1_128, -1, "[8001]12345678901234", ZINT_ERROR_INVALID_DATA, "", "267: AI (8001): The winding direction must be either \"0\", \"1\" or \"9\". (8001)123456789012|3|" },
|
|
/* 91*/ { BARCODE_GS1_128, -1, "^800112345678901234", ZINT_ERROR_INVALID_DATA, "", "267: AI (8001): The winding direction must be either \"0\", \"1\" or \"9\". (8001)123456789012|3|" },
|
|
/* 92*/ { BARCODE_GS1_128, GS1RAW_MODE, "800112345678901234", ZINT_ERROR_INVALID_DATA, "", "267: AI (8001): The winding direction must be either \"0\", \"1\" or \"9\". (8001)123456789012|3|" },
|
|
/* 93*/ { BARCODE_GS1_128, -1, "[8001]12345678901294", 0, "800112345678901294", "" },
|
|
/* 94*/ { BARCODE_GS1_128, -1, "^800112345678901294", 0, "800112345678901294", "" },
|
|
/* 95*/ { BARCODE_GS1_128, GS1RAW_MODE, "800112345678901294", 0, "800112345678901294", "" },
|
|
/* 96*/ { BARCODE_QRCODE, GS1_MODE, "[8001]12345678901294", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (8001) are not satisfied: 01" },
|
|
/* 97*/ { BARCODE_QRCODE, GS1_MODE, "^800112345678901294", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (8001) are not satisfied: 01" },
|
|
/* 98*/ { BARCODE_QRCODE, GS1_MODE | GS1RAW_MODE, "800112345678901294", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (8001) are not satisfied: 01" },
|
|
/* 99*/ { BARCODE_GS1_128, -1, "[8001]12345678901294[01]12345678901231", 0, "800112345678901294\0350112345678901231", "" },
|
|
/*100*/ { BARCODE_GS1_128, -1, "^800112345678901294^0112345678901231", 0, "800112345678901294\0350112345678901231", "" },
|
|
/*101*/ { BARCODE_GS1_128, GS1RAW_MODE, "800112345678901294\0350112345678901231", 0, "800112345678901294\0350112345678901231", "" },
|
|
/*102*/ { BARCODE_GS1_128, -1, "[8004]abcdefghijklmnopqrstuvwxyz1234", ZINT_ERROR_INVALID_DATA, "", "267: AI (8004): The GS1 Company Prefix is invalid. (8004)|a|bcdefghijklmnopqrstuvwxyz1234" },
|
|
/*103*/ { BARCODE_GS1_128, -1, "^8004abcdefghijklmnopqrstuvwxyz1234", ZINT_ERROR_INVALID_DATA, "", "267: AI (8004): The GS1 Company Prefix is invalid. (8004)|a|bcdefghijklmnopqrstuvwxyz1234" },
|
|
/*104*/ { BARCODE_GS1_128, GS1RAW_MODE, "8004abcdefghijklmnopqrstuvwxyz1234", ZINT_ERROR_INVALID_DATA, "", "267: AI (8004): The GS1 Company Prefix is invalid. (8004)|a|bcdefghijklmnopqrstuvwxyz1234" },
|
|
/*105*/ { BARCODE_GS1_128, -1, "[8004]123", ZINT_ERROR_INVALID_DATA, "", "267: AI (8004): The component is shorter than the minimum length GS1 Company Prefix. (8004)|123|" },
|
|
/*106*/ { BARCODE_GS1_128, -1, "^8004123", ZINT_ERROR_INVALID_DATA, "", "267: AI (8004): The component is shorter than the minimum length GS1 Company Prefix. (8004)|123|" },
|
|
/*107*/ { BARCODE_GS1_128, GS1RAW_MODE, "8004123", ZINT_ERROR_INVALID_DATA, "", "267: AI (8004): The component is shorter than the minimum length GS1 Company Prefix. (8004)|123|" },
|
|
/*108*/ { BARCODE_GS1_128, -1, "[8004]1234efghijklmnopqrstuvwxyz1234", 0, "80041234efghijklmnopqrstuvwxyz1234", "" },
|
|
/*109*/ { BARCODE_GS1_128, -1, "^80041234efghijklmnopqrstuvwxyz1234", 0, "80041234efghijklmnopqrstuvwxyz1234", "" },
|
|
/*110*/ { BARCODE_GS1_128, GS1RAW_MODE, "80041234efghijklmnopqrstuvwxyz1234", 0, "80041234efghijklmnopqrstuvwxyz1234", "" },
|
|
/*111*/ { BARCODE_GS1_128, -1, "[8007]abcdefghijklmnopqrstuvwxyz12345678", ZINT_ERROR_INVALID_DATA, "", "267: AI (8007): The IBAN must start with a valid ISO 3166 two-character country code. (8007)|ab|cdefghijklmnopqrstuvwxyz12345678" },
|
|
/*112*/ { BARCODE_GS1_128, -1, "^8007abcdefghijklmnopqrstuvwxyz12345678", ZINT_ERROR_INVALID_DATA, "", "267: AI (8007): The IBAN must start with a valid ISO 3166 two-character country code. (8007)|ab|cdefghijklmnopqrstuvwxyz12345678" },
|
|
/*113*/ { BARCODE_GS1_128, GS1RAW_MODE, "8007abcdefghijklmnopqrstuvwxyz12345678", ZINT_ERROR_INVALID_DATA, "", "267: AI (8007): The IBAN must start with a valid ISO 3166 two-character country code. (8007)|ab|cdefghijklmnopqrstuvwxyz12345678" },
|
|
/*114*/ { BARCODE_GS1_128, -1, "[8007]AD95EFGHIJKLMNOPQRSTUVWXYZ12345678", 0, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678", "" },
|
|
/*115*/ { BARCODE_GS1_128, -1, "^8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678", 0, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678", "" },
|
|
/*116*/ { BARCODE_GS1_128, GS1RAW_MODE, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678", 0, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678", "" },
|
|
/*117*/ { BARCODE_DATAMATRIX, GS1_MODE, "[8007]AD95EFGHIJKLMNOPQRSTUVWXYZ12345678", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (8007) are not satisfied: 415" },
|
|
/*118*/ { BARCODE_DATAMATRIX, GS1_MODE, "^8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (8007) are not satisfied: 415" },
|
|
/*119*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1RAW_MODE, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (8007) are not satisfied: 415" },
|
|
/*120*/ { BARCODE_GS1_128, -1, "[8007]AD95EFGHIJKLMNOPQRSTUVWXYZ12345678[415]1234567890128", 0, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678\0354151234567890128", "" },
|
|
/*121*/ { BARCODE_GS1_128, -1, "^8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678^4151234567890128", 0, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678\0354151234567890128", "" },
|
|
/*122*/ { BARCODE_GS1_128, GS1RAW_MODE, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678\0354151234567890128", 0, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678\0354151234567890128", "" },
|
|
/*123*/ { BARCODE_GS1_128, -1, "[8007]AD95EFGHIJKLMNOPQRSTUVWXYZ12345678[415]1234567890128[8020]REF123", 0, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678\03541512345678901288020REF123", "" },
|
|
/*124*/ { BARCODE_GS1_128, -1, "^8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678^41512345678901288020REF123", 0, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678\03541512345678901288020REF123", "" },
|
|
/*125*/ { BARCODE_GS1_128, GS1RAW_MODE, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678\03541512345678901288020REF123", 0, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678\03541512345678901288020REF123", "" },
|
|
/*126*/ { BARCODE_GS1_128, -1, "[8030]-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXY^", ZINT_ERROR_INVALID_DATA, "", "268: AI (8030) contains illegal ^ character" },
|
|
/*127*/ { BARCODE_GS1_128, -1, "^8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXY^", 0, "8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXY\035", "" }, /* (Redundant) caret at end encoded */
|
|
/*128*/ { BARCODE_GS1_128, GS1RAW_MODE, "8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXY^", 0, "8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXY\035", "" }, /* Caret at end encoded as GS */
|
|
/*129*/ { BARCODE_GS1_128, -1, "[8030]-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, "8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ", "" },
|
|
/*130*/ { BARCODE_GS1_128, -1, "^8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, "8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ", "" },
|
|
/*131*/ { BARCODE_GS1_128, GS1RAW_MODE, "8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, "8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ", "" },
|
|
/*132*/ { BARCODE_DBAR_EXP, -1, "[8030]-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (8030) are not satisfied: 00,01+21,253,255,8003,8004,8006+21,8010+8011,8017,8018" },
|
|
/*133*/ { BARCODE_DBAR_EXP, -1, "^8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (8030) are not satisfied: 00,01+21,253,255,8003,8004,8006+21,8010+8011,8017,8018" },
|
|
/*134*/ { BARCODE_DBAR_EXP, GS1RAW_MODE, "8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (8030) are not satisfied: 00,01+21,253,255,8003,8004,8006+21,8010+8011,8017,8018" },
|
|
/*135*/ { BARCODE_GS1_128, -1, "[8030]-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ[8018]123456789012345675", 0, "8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ\0358018123456789012345675", "" },
|
|
/*136*/ { BARCODE_GS1_128, -1, "^8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ^8018123456789012345675", 0, "8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ\0358018123456789012345675", "" },
|
|
/*137*/ { BARCODE_GS1_128, GS1RAW_MODE, "8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ\0358018123456789012345675", 0, "8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ\0358018123456789012345675", "" },
|
|
/*138*/ { BARCODE_GS1_128, -1, "[01]12345678901234[7006]200101", ZINT_ERROR_INVALID_DATA, "", "267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/*139*/ { BARCODE_GS1_128, -1, "^01123456789012347006200101", ZINT_ERROR_INVALID_DATA, "", "267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/*140*/ { BARCODE_GS1_128, GS1RAW_MODE, "01123456789012347006200101", ZINT_ERROR_INVALID_DATA, "", "267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/*141*/ { BARCODE_GS1_128, -1, "[01]12345678901231[7006]200101", 0, "01123456789012317006200101", "" },
|
|
/*142*/ { BARCODE_GS1_128, -1, "^01123456789012317006200101", 0, "01123456789012317006200101", "" },
|
|
/*143*/ { BARCODE_GS1_128, GS1RAW_MODE, "01123456789012317006200101", 0, "01123456789012317006200101", "" },
|
|
/*144*/ { BARCODE_GS1_128, -1, "[253]12345678901284[01]12345678901231[3901]12345678901234[20]12", 0, "25312345678901284\0350112345678901231390112345678901234\0352012", "" },
|
|
/*145*/ { BARCODE_GS1_128, -1, "^25312345678901284^0112345678901231390112345678901234^2012", 0, "25312345678901284\0350112345678901231390112345678901234\0352012", "" },
|
|
/*146*/ { BARCODE_GS1_128, GS1RAW_MODE, "25312345678901284\0350112345678901231390112345678901234\0352012", 0, "25312345678901284\0350112345678901231390112345678901234\0352012", "" },
|
|
/*147*/ { BARCODE_AZTEC, GS1_MODE, "[253]12345678901284[01]12345678901231[3901]12345678901234[20]12", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (3901) are not satisfied: 255,8020" },
|
|
/*148*/ { BARCODE_AZTEC, GS1_MODE, "^25312345678901284^0112345678901231390112345678901234^2012", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (3901) are not satisfied: 255,8020" },
|
|
/*149*/ { BARCODE_AZTEC, GS1_MODE | GS1RAW_MODE, "25312345678901284\0350112345678901231390112345678901234\0352012", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (3901) are not satisfied: 255,8020" },
|
|
/*150*/ { BARCODE_GS1_128, -1, "[253]12345678901284[01]12345678901231[3901]12345678901234[20]12[255]1234567890128", ZINT_ERROR_INVALID_DATA, "", "268: It is invalid to pair AI (01) with AI (255)" },
|
|
/*151*/ { BARCODE_GS1_128, -1, "^25312345678901284^0112345678901231390112345678901234^20122551234567890128", ZINT_ERROR_INVALID_DATA, "", "268: It is invalid to pair AI (01) with AI (255)" },
|
|
/*152*/ { BARCODE_GS1_128, GS1RAW_MODE, "25312345678901284\0350112345678901231390112345678901234\03520122551234567890128", ZINT_ERROR_INVALID_DATA, "", "268: It is invalid to pair AI (01) with AI (255)" },
|
|
/*153*/ { BARCODE_GS1_128, -1, "[253]12345678901284[01]12345678901231[3901]12345678901234[20]12[8020]REF123", 0, "25312345678901284\0350112345678901231390112345678901234\03520128020REF123", "" },
|
|
/*154*/ { BARCODE_GS1_128, -1, "^25312345678901284^0112345678901231390112345678901234^20128020REF123", 0, "25312345678901284\0350112345678901231390112345678901234\03520128020REF123", "" },
|
|
/*155*/ { BARCODE_GS1_128, GS1RAW_MODE, "25312345678901284\0350112345678901231390112345678901234\03520128020REF123", 0, "25312345678901284\0350112345678901231390112345678901234\03520128020REF123", "" },
|
|
/*156*/ { BARCODE_DATAMATRIX, GS1_MODE, "[253]12345678901284[01]12345678901231[3901]12345678901234[20]12[8020]REF123", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (8020) are not satisfied: 415" },
|
|
/*157*/ { BARCODE_DATAMATRIX, GS1_MODE, "^25312345678901284^0112345678901231390112345678901234^20128020REF123", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (8020) are not satisfied: 415" },
|
|
/*158*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1RAW_MODE, "25312345678901284\0350112345678901231390112345678901234\03520128020REF123", ZINT_ERROR_INVALID_DATA, "", "268: Required AIs for AI (8020) are not satisfied: 415" },
|
|
/*159*/ { BARCODE_GS1_128, -1, "[253]12345678901284[01]12345678901231[3901]12345678901234[20]12[8020]REF123[415]1234567890128", 0, "25312345678901284\0350112345678901231390112345678901234\03520128020REF123\0354151234567890128", "" },
|
|
/*160*/ { BARCODE_GS1_128, -1, "[253]12345678901284[01]12345678901231[3901]12345678901234[20]12[8020]REF123[415]1234567890128[90]123", 0, "25312345678901284\0350112345678901231390112345678901234\03520128020REF123\035415123456789012890123", "" },
|
|
/*161*/ { BARCODE_GS1_128, -1, "^25312345678901284^0112345678901231390112345678901234^20128020REF123^415123456789012890123", 0, "25312345678901284\0350112345678901231390112345678901234\03520128020REF123\035415123456789012890123", "" },
|
|
/*162*/ { BARCODE_GS1_128, GS1RAW_MODE, "25312345678901284\0350112345678901231390112345678901234\03520128020REF123\035415123456789012890123", 0, "25312345678901284\0350112345678901231390112345678901234\03520128020REF123\035415123456789012890123", "" },
|
|
};
|
|
const int data_size = ARRAY_SIZE(data);
|
|
int i, length, ret;
|
|
struct zint_symbol *symbol = NULL;
|
|
int reduced_length = 0; /* Suppress clang -fsanitize=memory false positive */
|
|
|
|
char reduced[1024] = {0}; /* Suppress clang -fsanitize=memory false positive */
|
|
char escaped[1024];
|
|
char escaped2[1024];
|
|
|
|
testStartSymbol(p_ctx->func_name, &symbol);
|
|
|
|
for (i = 0; i < data_size; i++) {
|
|
|
|
if (testContinue(p_ctx, i)) continue;
|
|
|
|
symbol = ZBarcode_Create();
|
|
assert_nonnull(symbol, "Symbol not created\n");
|
|
|
|
length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/,
|
|
-1 /*option_1*/, -1 /*option_2*/, -1 /*option_3*/, -1 /*output_options*/,
|
|
data[i].data, -1, debug);
|
|
symbol->input_mode |= GS1SYNTAXENGINE_MODE;
|
|
|
|
ret = zint_gs1_verify(symbol, ZUCP(data[i].data), length, ZUCP(reduced), &reduced_length, 0 /*set_hrt*/);
|
|
|
|
if (p_ctx->generate) {
|
|
printf(" /*%3d*/ { %s, %s, \"%s\", %s, \"%s\", \"%s\" },\n",
|
|
i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode),
|
|
testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), testUtilErrorName(ret),
|
|
data[i].expected, symbol->errtxt);
|
|
} else {
|
|
assert_equal(ret, data[i].ret, "i:%d ret %d != %d (length %d \"%s\") (%s)\n",
|
|
i, ret, data[i].ret, length, data[i].data, symbol->errtxt);
|
|
|
|
if (ret < ZINT_ERROR) {
|
|
const int expected_length = (int) strlen(data[i].expected);
|
|
assert_zero(strcmp(reduced, data[i].expected), "i:%d strcmp(%s, %s) != 0\n",
|
|
i, testUtilEscape(reduced, (int) strlen(reduced), escaped, (int) sizeof(escaped)),
|
|
testUtilEscape(data[i].expected, expected_length, escaped2, (int) sizeof(escaped2)));
|
|
assert_equal(reduced_length, (int) strlen(reduced), "i:%d reduced_length %d != strlen %d\n",
|
|
i, reduced_length, (int) strlen(reduced));
|
|
}
|
|
assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d strcmp(%s, %s) != 0\n",
|
|
i, symbol->errtxt, data[i].expected_errtxt);
|
|
}
|
|
|
|
ZBarcode_Delete(symbol);
|
|
}
|
|
|
|
testFinish();
|
|
}
|
|
|
|
static void test_gs1_digital_link(const testCtx *const p_ctx) {
|
|
int debug = p_ctx->debug;
|
|
|
|
struct item {
|
|
int input_mode;
|
|
const char *data;
|
|
int ret;
|
|
const char *expected;
|
|
const char *expected_errtxt;
|
|
};
|
|
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
|
|
static const struct item data[] = {
|
|
/* 0*/ { -1, "https://", ZINT_ERROR_INVALID_DATA, "", "268: URI must contain a domain and path info" },
|
|
/* 1*/ { -1, "HTTPS://", ZINT_ERROR_INVALID_DATA, "", "268: URI must contain a domain and path info" },
|
|
/* 2*/ { -1, "http://", ZINT_ERROR_INVALID_DATA, "", "268: URI must contain a domain and path info" },
|
|
/* 3*/ { -1, "HTTP://", ZINT_ERROR_INVALID_DATA, "", "268: URI must contain a domain and path info" },
|
|
/* 4*/ { -1, "Https://", ZINT_ERROR_INVALID_DATA, "", "268: Failed to parse AI data" },
|
|
/* 5*/ { -1, "https:/", ZINT_ERROR_INVALID_DATA, "", "268: Failed to parse AI data" },
|
|
/* 6*/ { -1, "http:/", ZINT_ERROR_INVALID_DATA, "", "268: Failed to parse AI data" },
|
|
/* 7*/ { -1, "http://1", ZINT_ERROR_INVALID_DATA, "", "268: URI must contain a domain and path info" },
|
|
/* 8*/ { -1, "http:///", ZINT_ERROR_INVALID_DATA, "", "268: URI must contain a domain and path info" },
|
|
/* 9*/ { -1, "http:///01", ZINT_ERROR_INVALID_DATA, "", "268: URI must contain a domain and path info" },
|
|
/* 10*/ { -1, "http:///01/", ZINT_ERROR_INVALID_DATA, "", "268: URI must contain a domain and path info" },
|
|
/* 11*/ { -1, "http://01/", ZINT_ERROR_INVALID_DATA, "", "268: No GS1 DL keys found in path info" },
|
|
/* 12*/ { -1, "http://01/1", ZINT_ERROR_INVALID_DATA, "", "268: No GS1 DL keys found in path info" },
|
|
/* 13*/ { -1, "http://1/", ZINT_ERROR_INVALID_DATA, "", "268: No GS1 DL keys found in path info" },
|
|
/* 14*/ { -1, "http://1/1/", ZINT_ERROR_INVALID_DATA, "", "268: No GS1 DL keys found in path info" },
|
|
/* 15*/ { -1, "http://1/1/1", ZINT_ERROR_INVALID_DATA, "", "268: No GS1 DL keys found in path info" },
|
|
/* 16*/ { -1, "http://1/01/", ZINT_ERROR_INVALID_DATA, "", "268: AI (01) value path element is empty" },
|
|
/* 17*/ { -1, "http://1/04/", ZINT_ERROR_INVALID_DATA, "", "268: No GS1 DL keys found in path info" },
|
|
/* 18*/ { -1, "http://1/04/1", ZINT_ERROR_INVALID_DATA, "", "268: No GS1 DL keys found in path info" },
|
|
/* 19*/ { -1, "http://1/01/1", ZINT_ERROR_INVALID_DATA, "http://1/01/1234567890123", "268: AI (01) value is too short" },
|
|
/* 20*/ { -1, "http://1/01/1234567890123", ZINT_ERROR_INVALID_DATA, "", "268: AI (01) value is too short" },
|
|
/* 21*/ { -1, "http://1/01/12345678901231", 0, "http://1/01/12345678901231", "" },
|
|
/* 22*/ { -1, "https://example.com/123", ZINT_ERROR_INVALID_DATA, "", "268: No GS1 DL keys found in path info" },
|
|
/* 23*/ { -1, "https://example.com/01/12345678901231", 0, "https://example.com/01/12345678901231", "" },
|
|
/* 24*/ { -1, "https://example.com/gtin/12345678901231", ZINT_ERROR_INVALID_DATA, "", "268: No GS1 DL keys found in path info" },
|
|
/* 25*/ { -1, "https://example.com/gtin/01/12345678901231", 0, "https://example.com/gtin/01/12345678901231", "" },
|
|
/* 26*/ { -1, "https://example.com/01/12345678901231/90/123", ZINT_ERROR_INVALID_DATA, "", "268: The AIs in the path are not a valid key-qualifier sequence for the key" },
|
|
/* 27*/ { -1, "https://example.com/01/12345678901231?90=123", 0, "https://example.com/01/12345678901231?90=123", "" },
|
|
/* 28*/ { -1, "https://example.com/01/12345678901231?987=123", ZINT_ERROR_INVALID_DATA, "", "268: Unknown AI (987) in query parameters" },
|
|
/* 29*/ { -1, "https://example.com/01/12345678901231?12345=123", ZINT_ERROR_INVALID_DATA, "", "268: Unknown AI (12345) in query parameters" },
|
|
/* 30*/ { -1, "https://example.com/01/12345678901231?mutualParameter=123", 0, "https://example.com/01/12345678901231?mutualParameter=123", "" },
|
|
/* 31*/ { -1, "https://example.com/01/12345678901231?mutualParamete=123", 0, "https://example.com/01/12345678901231?mutualParamete=123", "" },
|
|
/* 32*/ { -1, "https://example.com/01/12345678901231?m=123", 0, "https://example.com/01/12345678901231?m=123", "" },
|
|
/* 33*/ { -1, "https://example.com/01/12345678901231?zyx=123", 0, "https://example.com/01/12345678901231?zyx=123", "" },
|
|
/* 34*/ { -1, "https://example.com/01/12345678901231/10/123", 0, "https://example.com/01/12345678901231/10/123", "" },
|
|
/* 35*/ { -1, "https://example.com/01/12345678901231/10/12+3", 0, "https://example.com/01/12345678901231/10/12+3", "" },
|
|
/* 36*/ { -1, "https://example.com/01/12345678901231/10/12%2B3", 0, "https://example.com/01/12345678901231/10/12%2B3", "" },
|
|
/* 37*/ { -1, "http://example.com/01/09520123456788/22/2A?linkType=gs1:traceability", 0, "http://example.com/01/09520123456788/22/2A?linkType=gs1:traceability", "" },
|
|
/* 38*/ { -1, "https://example.com/01/12345678901231/10/12?3", 0, "https://example.com/01/12345678901231/10/12?3", "" },
|
|
/* 39*/ { -1, "https://example.com/01/12345678901231/10/12=3", 0, "https://example.com/01/12345678901231/10/12=3", "" },
|
|
/* 40*/ { -1, "https://example.com/01/12345678901231/10/1?2=3", ZINT_ERROR_INVALID_DATA, "", "268: Unknown AI (2) in query parameters" },
|
|
/* 41*/ { -1, "https://example.com/01/12345678901231/10/1%3F2=3", 0, "https://example.com/01/12345678901231/10/1%3F2=3", "" },
|
|
/* 42*/ { -1, "https://example.com/01/12345678901231?3103=000195", 0, "https://example.com/01/12345678901231?3103=000195", "" },
|
|
/* 43*/ { -1, "https://example.com/01/12345678901231|(20)12", ZINT_ERROR_INVALID_DATA, "", "268: URI contains illegal characters" },
|
|
/* 44*/ { -1, "https://example.com/01/12345678901231|", ZINT_ERROR_INVALID_DATA, "", "268: URI contains illegal characters" },
|
|
/* 45*/ { -1, "https://example.com/01/12345678901231(", ZINT_ERROR_INVALID_DATA, "", "268: AI (01) value is too long" },
|
|
};
|
|
const int data_size = ARRAY_SIZE(data);
|
|
int i, length, ret;
|
|
struct zint_symbol *symbol = NULL;
|
|
int reduced_length = 0; /* Suppress clang -fsanitize=memory false positive */
|
|
|
|
char reduced[1024] = {0}; /* Suppress clang -fsanitize=memory false positive */
|
|
char escaped[1024];
|
|
char escaped2[1024];
|
|
|
|
testStartSymbol(p_ctx->func_name, &symbol);
|
|
|
|
for (i = 0; i < data_size; i++) {
|
|
|
|
if (testContinue(p_ctx, i)) continue;
|
|
|
|
symbol = ZBarcode_Create();
|
|
assert_nonnull(symbol, "Symbol not created\n");
|
|
|
|
length = testUtilSetSymbol(symbol, BARCODE_QRCODE, GS1_MODE | GS1SYNTAXENGINE_MODE, -1 /*eci*/,
|
|
-1 /*option_1*/, -1 /*option_2*/, -1 /*option_3*/, -1 /*output_options*/,
|
|
data[i].data, -1, debug);
|
|
if (data[i].input_mode != -1) {
|
|
symbol->input_mode |= data[i].input_mode;
|
|
}
|
|
|
|
ret = zint_gs1_verify(symbol, ZUCP(data[i].data), length, ZUCP(reduced), &reduced_length, 0 /*set_hrt*/);
|
|
|
|
if (p_ctx->generate) {
|
|
printf(" /*%3d*/ { %s, \"%s\", %s, \"%s\", \"%s\" },\n",
|
|
i, testUtilInputModeName(data[i].input_mode),
|
|
testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), testUtilErrorName(ret),
|
|
data[i].expected, symbol->errtxt);
|
|
} else {
|
|
assert_equal(ret, data[i].ret, "i:%d ret %d != %d (length %d \"%s\") (%s)\n",
|
|
i, ret, data[i].ret, length, data[i].data, symbol->errtxt);
|
|
|
|
if (ret < ZINT_ERROR) {
|
|
const int expected_length = (int) strlen(data[i].expected);
|
|
assert_zero(strcmp(reduced, data[i].expected), "i:%d strcmp(%s, %s) != 0\n",
|
|
i, testUtilEscape(reduced, (int) strlen(reduced), escaped, (int) sizeof(escaped)),
|
|
testUtilEscape(data[i].expected, expected_length, escaped2, (int) sizeof(escaped2)));
|
|
assert_equal(reduced_length, (int) strlen(reduced), "i:%d reduced_length %d != strlen %d\n",
|
|
i, reduced_length, (int) strlen(reduced));
|
|
}
|
|
assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d strcmp(%s, %s) != 0\n",
|
|
i, symbol->errtxt, data[i].expected_errtxt);
|
|
}
|
|
|
|
ZBarcode_Delete(symbol);
|
|
}
|
|
|
|
testFinish();
|
|
}
|
|
|
|
/* Check non-forced GS1 compliant symbologies (see gs1_compliant() in library.c) */
|
|
static void test_non_forced(const testCtx *const p_ctx) {
|
|
int debug = p_ctx->debug;
|
|
|
|
struct item {
|
|
int symbology;
|
|
int input_mode;
|
|
int output_options;
|
|
const char *data;
|
|
int ret;
|
|
const char *expected_errtxt;
|
|
};
|
|
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
|
|
static const struct item data[] = {
|
|
/* 0*/ { BARCODE_AZTEC, GS1_MODE, -1, "[01]12345678901231", 0, "" },
|
|
/* 1*/ { BARCODE_AZTEC, GS1_MODE, -1, "^0112345678901231", 0, "" },
|
|
/* 2*/ { BARCODE_AZTEC, GS1_MODE | GS1RAW_MODE, -1, "0112345678901231", 0, "" },
|
|
/* 3*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231", 0, "" },
|
|
/* 4*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901234", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/* 5*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)12345678901234", 0, "" },
|
|
/* 6*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE, -1, "(01)123456789012345", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/* 7*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)123456789012345", 0, "" },
|
|
/* 8*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901234A", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/* 9*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)12345678901234A", 0, "" },
|
|
/* 10*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE, -1, "(01)1234567890123A", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|A|" },
|
|
/* 11*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)1234567890123A", 0, "" },
|
|
/* 12*/ { BARCODE_AZTEC, GS1_MODE, -1, "[01]1234567890123", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too short" },
|
|
/* 13*/ { BARCODE_AZTEC, GS1_MODE, -1, "^011234567890123", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) data has incorrect length" },
|
|
/* 14*/ { BARCODE_AZTEC, GS1_MODE | GS1RAW_MODE, -1, "011234567890123", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) data has incorrect length" },
|
|
/* 15*/ { BARCODE_AZTEC, GS1_MODE | GS1NOCHECK_MODE, -1, "[01]1234567890123", 0, "" },
|
|
/* 16*/ { BARCODE_AZTEC, GS1_MODE | GS1NOCHECK_MODE, -1, "^011234567890123", 0, "" },
|
|
/* 17*/ { BARCODE_AZTEC, GS1_MODE | GS1NOCHECK_MODE | GS1RAW_MODE, -1, "011234567890123", 0, "" },
|
|
/* 18*/ { BARCODE_AZTEC, GS1_MODE, READER_INIT, "[01]12345678901231", ZINT_ERROR_INVALID_OPTION, "Error 501: Cannot use Reader Initialisation in GS1 mode" },
|
|
/* 19*/ { BARCODE_AZTEC, GS1_MODE, -1, "[01]12345678901231[10]()", 0, "" },
|
|
/* 20*/ { BARCODE_AZTEC, GS1_MODE, -1, "^011234567890123110()", 0, "" },
|
|
/* 21*/ { BARCODE_AZTEC, GS1_MODE | GS1RAW_MODE, -1, "011234567890123110()", 0, "" },
|
|
/* 22*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231(10)()", ZINT_ERROR_INVALID_DATA, "Error 268: AI (10) value is too short" },
|
|
/* 23*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231(10)\\(\\)", 0, "" },
|
|
/* 24*/ { BARCODE_AZTEC, GS1_MODE, -1, "1234", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/* 25*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "1234", ZINT_ERROR_INVALID_DATA, "Error 855: Data does not start with an AI or Digital Link URI" }, /* Must still begin with AI */
|
|
/* 26*/ { BARCODE_AZTEC, GS1_MODE, -1, "[02]12345678901231[10]()[37]12345678[00]123456789012345675", 0, "" },
|
|
/* 27*/ { BARCODE_AZTEC, GS1_MODE, -1, "^021234567890123110()^3712345678^00123456789012345675", 0, "" },
|
|
/* 28*/ { BARCODE_AZTEC, GS1_MODE | GS1RAW_MODE, -1, "021234567890123110()\0353712345678\03500123456789012345675", 0, "" },
|
|
/* 29*/ { BARCODE_AZTEC, GS1_MODE, -1, "[02]12345678901231[10]()[37]1234567A[00]123456789012345675", ZINT_ERROR_INVALID_DATA, "Error 267: AI (37): A non-digit character was found where a digit is expected. (37)1234567|A|" },
|
|
/* 30*/ { BARCODE_AZTEC, GS1_MODE, -1, "^021234567890123110()^371234567A^00123456789012345675", ZINT_ERROR_INVALID_DATA, "Error 267: AI (37): A non-digit character was found where a digit is expected. (37)1234567|A|" },
|
|
/* 31*/ { BARCODE_AZTEC, GS1_MODE | GS1RAW_MODE, -1, "021234567890123110()\035371234567A\03500123456789012345675", ZINT_ERROR_INVALID_DATA, "Error 267: AI (37): A non-digit character was found where a digit is expected. (37)1234567|A|" },
|
|
/* 32*/ { BARCODE_AZTEC, GS1_MODE | GS1NOCHECK_MODE, -1, "[02]12345678901231[10]()[37]12345678[00]123456789012345675", 0, "" },
|
|
/* 33*/ { BARCODE_AZTEC, GS1_MODE | GS1NOCHECK_MODE, -1, "^021234567890123110()^3712345678^00123456789012345675", 0, "" },
|
|
/* 34*/ { BARCODE_AZTEC, GS1_MODE | GS1NOCHECK_MODE | GS1RAW_MODE, -1, "021234567890123110()\0353712345678\03500123456789012345675", 0, "" },
|
|
/* 35*/ { BARCODE_CODABLOCKF, GS1_MODE, -1, "[01]12345678901231", ZINT_ERROR_INVALID_OPTION, "Error 220: Selected symbology does not support GS1 mode" }, /* Codablock F does not support GS1 */
|
|
/* 36*/ { BARCODE_CODABLOCKF, GS1_MODE | GS1NOCHECK_MODE, -1, "[01]12345678901231", ZINT_ERROR_INVALID_OPTION, "Error 220: Selected symbology does not support GS1 mode" },
|
|
/* 37*/ { BARCODE_CODABLOCKF, GS1_MODE, -1, "1234", ZINT_ERROR_INVALID_OPTION, "Error 220: Selected symbology does not support GS1 mode" },
|
|
/* 38*/ { BARCODE_CODEONE, GS1_MODE, -1, "[01]12345678901231", 0, "" },
|
|
/* 39*/ { BARCODE_CODEONE, GS1_MODE, -1, "^0112345678901231", 0, "" },
|
|
/* 40*/ { BARCODE_CODEONE, GS1_MODE | GS1RAW_MODE, -1, "0112345678901231", 0, "" },
|
|
/* 41*/ { BARCODE_CODEONE, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231", 0, "" },
|
|
/* 42*/ { BARCODE_CODEONE, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901234", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/* 43*/ { BARCODE_CODEONE, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)12345678901234", 0, "" },
|
|
/* 44*/ { BARCODE_CODEONE, GS1_MODE | GS1PARENS_MODE, -1, "(01)123456789012345", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/* 45*/ { BARCODE_CODEONE, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)123456789012345", 0, "" },
|
|
/* 46*/ { BARCODE_CODEONE, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901234A", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/* 47*/ { BARCODE_CODEONE, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)12345678901234A", 0, "" },
|
|
/* 48*/ { BARCODE_CODEONE, GS1_MODE | GS1PARENS_MODE, -1, "(01)1234567890123A", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|A|" },
|
|
/* 49*/ { BARCODE_CODEONE, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)1234567890123A", 0, "" },
|
|
/* 50*/ { BARCODE_CODEONE, GS1_MODE, -1, "[01]1234567890123", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too short" },
|
|
/* 51*/ { BARCODE_CODEONE, GS1_MODE, -1, "^011234567890123", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) data has incorrect length" },
|
|
/* 52*/ { BARCODE_CODEONE, GS1_MODE | GS1RAW_MODE, -1, "011234567890123", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) data has incorrect length" },
|
|
/* 53*/ { BARCODE_CODEONE, GS1_MODE | GS1NOCHECK_MODE, -1, "[01]1234567890123", 0, "" },
|
|
/* 54*/ { BARCODE_CODEONE, GS1_MODE, -1, "[10]()[01]12345678901231", 0, "" },
|
|
/* 55*/ { BARCODE_CODEONE, GS1_MODE, -1, "^10()^0112345678901231", 0, "" },
|
|
/* 56*/ { BARCODE_CODEONE, GS1_MODE | GS1RAW_MODE, -1, "10()\0350112345678901231", 0, "" },
|
|
/* 57*/ { BARCODE_CODEONE, GS1_MODE | GS1PARENS_MODE, -1, "(10)()(01)12345678901231", ZINT_ERROR_INVALID_DATA, "Error 268: AI (10) value is too short" },
|
|
/* 58*/ { BARCODE_CODEONE, GS1_MODE | GS1PARENS_MODE, -1, "(10)\\(\\)(01)12345678901231", 0, "" },
|
|
/* 59*/ { BARCODE_CODEONE, GS1_MODE, -1, "1234", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/* 60*/ { BARCODE_CODEONE, GS1_MODE, -1, "[02]12345678901231[10]()[37]12345678[00]123456789012345675", 0, "" },
|
|
/* 61*/ { BARCODE_CODEONE, GS1_MODE, -1, "^021234567890123110()^3712345678^00123456789012345675", 0, "" },
|
|
/* 62*/ { BARCODE_CODEONE, GS1_MODE | GS1RAW_MODE, -1, "021234567890123110()\0353712345678\03500123456789012345675", 0, "" },
|
|
/* 63*/ { BARCODE_CODE16K, GS1_MODE, -1, "[01]12345678901231", 0, "" },
|
|
/* 64*/ { BARCODE_CODE16K, GS1_MODE, -1, "^0112345678901231", 0, "" },
|
|
/* 65*/ { BARCODE_CODE16K, GS1_MODE | GS1RAW_MODE, -1, "0112345678901231", 0, "" },
|
|
/* 66*/ { BARCODE_CODE16K, GS1_MODE, -1, "^0112345678901231", 0, "" },
|
|
/* 67*/ { BARCODE_CODE16K, GS1_MODE | GS1RAW_MODE, -1, "0112345678901231", 0, "" },
|
|
/* 68*/ { BARCODE_CODE16K, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231", 0, "" },
|
|
/* 69*/ { BARCODE_CODE16K, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901234", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/* 70*/ { BARCODE_CODE16K, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)12345678901234", 0, "" },
|
|
/* 71*/ { BARCODE_CODE16K, GS1_MODE | GS1PARENS_MODE, -1, "(01)123456789012345", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/* 72*/ { BARCODE_CODE16K, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)123456789012345", 0, "" },
|
|
/* 73*/ { BARCODE_CODE16K, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901234A", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/* 74*/ { BARCODE_CODE16K, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)12345678901234A", 0, "" },
|
|
/* 75*/ { BARCODE_CODE16K, GS1_MODE | GS1PARENS_MODE, -1, "(01)1234567890123A", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|A|" },
|
|
/* 76*/ { BARCODE_CODE16K, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)1234567890123A", 0, "" },
|
|
/* 77*/ { BARCODE_CODE16K, GS1_MODE, -1, "[01]1234567890123", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too short" },
|
|
/* 78*/ { BARCODE_CODE16K, GS1_MODE | GS1NOCHECK_MODE, -1, "[01]1234567890123", 0, "" },
|
|
/* 79*/ { BARCODE_CODE16K, GS1_MODE, READER_INIT, "[01]12345678901231", ZINT_ERROR_INVALID_OPTION, "Error 422: Cannot use Reader Initialisation in GS1 mode" },
|
|
/* 80*/ { BARCODE_CODE16K, GS1_MODE, -1, "[01]12345678901231[10]()", 0, "" },
|
|
/* 81*/ { BARCODE_CODE16K, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231(10)()", ZINT_ERROR_INVALID_DATA, "Error 268: AI (10) value is too short" },
|
|
/* 82*/ { BARCODE_CODE16K, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231(10)\\(\\)", 0, "" },
|
|
/* 83*/ { BARCODE_CODE16K, GS1_MODE, -1, "1234", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/* 84*/ { BARCODE_CODE16K, GS1_MODE, -1, "[02]12345678901231[10]()[37]12345678[00]123456789012345675", 0, "" },
|
|
/* 85*/ { BARCODE_CODE16K, GS1_MODE, -1, "^021234567890123110()^3712345678^00123456789012345675", 0, "" },
|
|
/* 86*/ { BARCODE_CODE16K, GS1_MODE | GS1RAW_MODE, -1, "021234567890123110()\0353712345678\03500123456789012345675", 0, "" },
|
|
/* 87*/ { BARCODE_CODE49, GS1_MODE, -1, "[01]12345678901231", 0, "" },
|
|
/* 88*/ { BARCODE_CODE49, GS1_MODE, -1, "^0112345678901231", 0, "" },
|
|
/* 89*/ { BARCODE_CODE49, GS1_MODE | GS1RAW_MODE, -1, "0112345678901231", 0, "" },
|
|
/* 90*/ { BARCODE_CODE49, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231", 0, "" },
|
|
/* 91*/ { BARCODE_CODE49, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901234", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/* 92*/ { BARCODE_CODE49, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)12345678901234", 0, "" },
|
|
/* 93*/ { BARCODE_CODE49, GS1_MODE | GS1PARENS_MODE, -1, "(01)123456789012345", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/* 94*/ { BARCODE_CODE49, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)123456789012345", 0, "" },
|
|
/* 95*/ { BARCODE_CODE49, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901234A", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/* 96*/ { BARCODE_CODE49, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)12345678901234A", 0, "" },
|
|
/* 97*/ { BARCODE_CODE49, GS1_MODE | GS1PARENS_MODE, -1, "(01)1234567890123A", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|A|" },
|
|
/* 98*/ { BARCODE_CODE49, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)1234567890123A", 0, "" },
|
|
/* 99*/ { BARCODE_CODE49, GS1_MODE, -1, "[01]1234567890123", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too short" },
|
|
/*100*/ { BARCODE_CODE49, GS1_MODE | GS1NOCHECK_MODE, -1, "[01]1234567890123", 0, "" },
|
|
/*101*/ { BARCODE_CODE49, GS1_MODE, -1, "[01]12345678901231[10]()", 0, "" },
|
|
/*102*/ { BARCODE_CODE49, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231(10)()", ZINT_ERROR_INVALID_DATA, "Error 268: AI (10) value is too short" },
|
|
/*103*/ { BARCODE_CODE49, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231(10)\\(\\)", 0, "" },
|
|
/*104*/ { BARCODE_CODE49, GS1_MODE, -1, "1234", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/*105*/ { BARCODE_CODE49, GS1_MODE, -1, "[02]12345678901231[10]()[37]12345678[00]123456789012345675", 0, "" },
|
|
/*106*/ { BARCODE_CODE49, GS1_MODE, -1, "^021234567890123110()^3712345678^00123456789012345675", 0, "" },
|
|
/*107*/ { BARCODE_CODE49, GS1_MODE | GS1RAW_MODE, -1, "021234567890123110()\0353712345678\03500123456789012345675", 0, "" },
|
|
/*108*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, "[01]12345678901231", 0, "" },
|
|
/*109*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, "^0112345678901231", 0, "" },
|
|
/*110*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1RAW_MODE, -1, "0112345678901231", 0, "" },
|
|
/*111*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231", 0, "" },
|
|
/*112*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, "[01]12345678901234", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/*113*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1NOCHECK_MODE, -1, "[01]12345678901234", 0, "" },
|
|
/*114*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901234", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/*115*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)12345678901234", 0, "" },
|
|
/*116*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, "^0112345678901234", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/*117*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1NOCHECK_MODE, -1, "^0112345678901234", 0, "" },
|
|
/*118*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1RAW_MODE, -1, "0112345678901234", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/*119*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1NOCHECK_MODE | GS1RAW_MODE, -1, "0112345678901234", 0, "" },
|
|
/*120*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, "[01]123456789012315", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/*121*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1NOCHECK_MODE, -1, "[01]123456789012315", 0, "" },
|
|
/*122*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE, -1, "(01)123456789012315", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/*123*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)123456789012315", 0, "" },
|
|
/*124*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, "^01123456789012315", ZINT_ERROR_INVALID_DATA, "Error 268: No known AI is a prefix of: 5..." }, /* Raw/caret require underlong data lengths to work */
|
|
/*125*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1NOCHECK_MODE, -1, "^01123456789012315", ZINT_ERROR_INVALID_DATA, "Error 859: Invalid data length for AI (01) at position 2" },
|
|
/*126*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1RAW_MODE, -1, "01123456789012315", ZINT_ERROR_INVALID_DATA, "Error 268: No known AI is a prefix of: 5..." }, /* Raw/caret require underlong data lengths to work */
|
|
/*127*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1NOCHECK_MODE | GS1RAW_MODE, -1, "01123456789012315", ZINT_ERROR_INVALID_DATA, "Error 859: Invalid data length for AI (01) at position 1" },
|
|
/*128*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, "^01123456789012345", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" }, /* Raw/caret lint checks occur before length check */
|
|
/*129*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1NOCHECK_MODE, -1, "^01123456789012345", ZINT_ERROR_INVALID_DATA, "Error 859: Invalid data length for AI (01) at position 2" },
|
|
/*130*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1RAW_MODE, -1, "01123456789012345", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/*131*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1NOCHECK_MODE | GS1RAW_MODE, -1, "01123456789012345", ZINT_ERROR_INVALID_DATA, "Error 859: Invalid data length for AI (01) at position 1" },
|
|
/*132*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231A", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/*133*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)12345678901231A", 0, "" },
|
|
/*134*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE, -1, "(01)1234567890123A", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|A|" },
|
|
/*135*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)1234567890123A", 0, "" },
|
|
/*136*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, "[01]1234567890123", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too short" },
|
|
/*137*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1NOCHECK_MODE, -1, "[01]1234567890123", 0, "" },
|
|
/*138*/ { BARCODE_DATAMATRIX, GS1_MODE, READER_INIT, "[01]12345678901231", ZINT_ERROR_INVALID_OPTION, "Error 521: Cannot use Reader Initialisation in GS1 mode" },
|
|
/*139*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, "[01]12345678901231[10]()", 0, "" },
|
|
/*140*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231(10)()", ZINT_ERROR_INVALID_DATA, "Error 268: AI (10) value is too short" },
|
|
/*141*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231(10)\\(\\)", 0, "" },
|
|
/*142*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, "1234", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/*143*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, "[02]12345678901231[10]()[37]12345678[00]123456789012345675", 0, "" },
|
|
/*144*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, "^021234567890123110()^3712345678^00123456789012345675", 0, "" },
|
|
/*145*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1RAW_MODE, -1, "021234567890123110()\0353712345678\03500123456789012345675", 0, "" },
|
|
/*146*/ { BARCODE_DOTCODE, GS1_MODE, -1, "[01]12345678901231", 0, "" },
|
|
/*147*/ { BARCODE_DOTCODE, GS1_MODE, -1, "^0112345678901231", 0, "" },
|
|
/*148*/ { BARCODE_DOTCODE, GS1_MODE | GS1RAW_MODE, -1, "0112345678901231", 0, "" },
|
|
/*149*/ { BARCODE_DOTCODE, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231", 0, "" },
|
|
/*150*/ { BARCODE_DOTCODE, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901234", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/*151*/ { BARCODE_DOTCODE, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)12345678901234", 0, "" },
|
|
/*152*/ { BARCODE_DOTCODE, GS1_MODE | GS1PARENS_MODE, -1, "(01)123456789012345", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/*153*/ { BARCODE_DOTCODE, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)123456789012345", 0, "" },
|
|
/*154*/ { BARCODE_DOTCODE, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901234A", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/*155*/ { BARCODE_DOTCODE, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)12345678901234A", 0, "" },
|
|
/*156*/ { BARCODE_DOTCODE, GS1_MODE | GS1PARENS_MODE, -1, "(01)1234567890123A", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|A|" },
|
|
/*157*/ { BARCODE_DOTCODE, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)1234567890123A", 0, "" },
|
|
/*158*/ { BARCODE_DOTCODE, GS1_MODE, -1, "[01]1234567890123", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too short" },
|
|
/*159*/ { BARCODE_DOTCODE, GS1_MODE | GS1NOCHECK_MODE, -1, "[01]1234567890123", 0, "" },
|
|
/*160*/ { BARCODE_DOTCODE, GS1_MODE, READER_INIT, "[01]12345678901231", 0, "" }, /* Reader Init permissible with default GS1 mode */
|
|
/*161*/ { BARCODE_DOTCODE, GS1_MODE, -1, "[10]()[01]12345678901231", 0, "" },
|
|
/*162*/ { BARCODE_DOTCODE, GS1_MODE | GS1PARENS_MODE, -1, "(10)()(01)12345678901231", ZINT_ERROR_INVALID_DATA, "Error 268: AI (10) value is too short" },
|
|
/*163*/ { BARCODE_DOTCODE, GS1_MODE | GS1PARENS_MODE, -1, "(10)\\(\\)(01)12345678901231", 0, "" },
|
|
/*164*/ { BARCODE_DOTCODE, GS1_MODE, -1, "1234", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/*165*/ { BARCODE_DOTCODE, GS1_MODE, -1, "[02]12345678901231[10]()[37]12345678[00]123456789012345675", 0, "" },
|
|
/*166*/ { BARCODE_DOTCODE, GS1_MODE, -1, "^021234567890123110()^3712345678^00123456789012345675", 0, "" },
|
|
/*167*/ { BARCODE_DOTCODE, GS1_MODE | GS1RAW_MODE, -1, "021234567890123110()\0353712345678\03500123456789012345675", 0, "" },
|
|
/*168*/ { BARCODE_QRCODE, GS1_MODE, -1, "[01]12345678901231", 0, "" },
|
|
/*169*/ { BARCODE_QRCODE, GS1_MODE, -1, "^0112345678901231", 0, "" },
|
|
/*170*/ { BARCODE_QRCODE, GS1_MODE | GS1RAW_MODE, -1, "0112345678901231", 0, "" },
|
|
/*171*/ { BARCODE_QRCODE, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901231", 0, "" },
|
|
/*172*/ { BARCODE_QRCODE, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901234", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/*173*/ { BARCODE_QRCODE, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)12345678901234", 0, "" },
|
|
/*174*/ { BARCODE_QRCODE, GS1_MODE | GS1PARENS_MODE, -1, "(01)123456789012345", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/*175*/ { BARCODE_QRCODE, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)123456789012345", 0, "" },
|
|
/*176*/ { BARCODE_QRCODE, GS1_MODE | GS1PARENS_MODE, -1, "(01)12345678901234A", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/*177*/ { BARCODE_QRCODE, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)12345678901234A", 0, "" },
|
|
/*178*/ { BARCODE_QRCODE, GS1_MODE | GS1PARENS_MODE, -1, "(01)1234567890123A", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|A|" },
|
|
/*179*/ { BARCODE_QRCODE, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(01)1234567890123A", 0, "" },
|
|
/*180*/ { BARCODE_QRCODE, GS1_MODE, -1, "[01]1234567890123", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too short" },
|
|
/*181*/ { BARCODE_QRCODE, GS1_MODE | GS1NOCHECK_MODE, -1, "[01]1234567890123", 0, "" },
|
|
/*182*/ { BARCODE_QRCODE, GS1_MODE, -1, "[02]12345678901231[10]()[37]12345678[00]123456789012345675", 0, "" },
|
|
/*183*/ { BARCODE_QRCODE, GS1_MODE, -1, "^021234567890123110()^3712345678^00123456789012345675", 0, "" },
|
|
/*184*/ { BARCODE_QRCODE, GS1_MODE | GS1RAW_MODE, -1, "021234567890123110()\0353712345678\03500123456789012345675", 0, "" },
|
|
/*185*/ { BARCODE_QRCODE, GS1_MODE | GS1PARENS_MODE, -1, "(02)12345678901231(10)()(37)12345678(00)123456789012345675", ZINT_ERROR_INVALID_DATA, "Error 268: AI (10) value is too short" },
|
|
/*186*/ { BARCODE_QRCODE, GS1_MODE | GS1PARENS_MODE, -1, "(02)12345678901231(10)\\(\\)(37)12345678(00)123456789012345675", 0, "" },
|
|
/*187*/ { BARCODE_QRCODE, GS1_MODE, -1, "1234", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/*188*/ { BARCODE_RMQR, GS1_MODE, -1, "[01]12345678901231", 0, "" },
|
|
/*189*/ { BARCODE_RMQR, GS1_MODE, -1, "^0112345678901231", 0, "" },
|
|
/*190*/ { BARCODE_RMQR, GS1_MODE | GS1RAW_MODE, -1, "0112345678901231", 0, "" },
|
|
/*191*/ { BARCODE_RMQR, GS1_MODE, -1, "[02]12345678901231[10]()[37]12345678[00]123456789012345675", 0, "" },
|
|
/*192*/ { BARCODE_RMQR, GS1_MODE, -1, "^021234567890123110()^3712345678^00123456789012345675", 0, "" },
|
|
/*193*/ { BARCODE_RMQR, GS1_MODE | GS1RAW_MODE, -1, "021234567890123110()\0353712345678\03500123456789012345675", 0, "" },
|
|
/*194*/ { BARCODE_ULTRA, GS1_MODE, -1, "[01]12345678901231", 0, "" },
|
|
/*195*/ { BARCODE_ULTRA, GS1_MODE, -1, "^0112345678901231", 0, "" },
|
|
/*196*/ { BARCODE_ULTRA, GS1_MODE | GS1RAW_MODE, -1, "0112345678901231", 0, "" },
|
|
/*197*/ { BARCODE_ULTRA, GS1_MODE, -1, "[02]12345678901231[10]()[37]12345678[00]123456789012345675", 0, "" },
|
|
/*198*/ { BARCODE_ULTRA, GS1_MODE, -1, "^021234567890123110()^3712345678^00123456789012345675", 0, "" },
|
|
/*199*/ { BARCODE_ULTRA, GS1_MODE | GS1RAW_MODE, -1, "021234567890123110()\0353712345678\03500123456789012345675", 0, "" },
|
|
};
|
|
const int data_size = ARRAY_SIZE(data);
|
|
int i, length, ret;
|
|
struct zint_symbol *symbol = NULL;
|
|
|
|
testStartSymbol(p_ctx->func_name, &symbol);
|
|
|
|
for (i = 0; i < data_size; i++) {
|
|
|
|
if (testContinue(p_ctx, i)) continue;
|
|
|
|
symbol = ZBarcode_Create();
|
|
assert_nonnull(symbol, "Symbol not created\n");
|
|
|
|
length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/,
|
|
-1 /*option_1*/, -1 /*option_2*/, -1 /*option_3*/, data[i].output_options,
|
|
data[i].data, -1, debug);
|
|
|
|
symbol->input_mode |= GS1SYNTAXENGINE_MODE;
|
|
|
|
ret = ZBarcode_Encode(symbol, TCU(data[i].data), length);
|
|
assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n",
|
|
i, ret, data[i].ret, symbol->errtxt);
|
|
assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d strcmp(%s, %s) != 0\n",
|
|
i, symbol->errtxt, data[i].expected_errtxt);
|
|
|
|
ZBarcode_Delete(symbol);
|
|
}
|
|
|
|
testFinish();
|
|
}
|
|
|
|
/* Check GS1_128-based and DBAR_EXP-based symbologies */
|
|
static void test_gs1_128_dbar_exp(const testCtx *const p_ctx) {
|
|
int debug = p_ctx->debug;
|
|
|
|
struct item {
|
|
int symbology;
|
|
int input_mode;
|
|
const char *data;
|
|
const char *composite;
|
|
int ret;
|
|
const char *expected_errtxt;
|
|
};
|
|
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
|
|
static const struct item data[] = {
|
|
/* 0*/ { BARCODE_GS1_128, -1, "[01]12345678901231", "", 0, "" },
|
|
/* 1*/ { BARCODE_GS1_128, -1, "^0112345678901231", "", 0, "" },
|
|
/* 2*/ { BARCODE_GS1_128, GS1RAW_MODE, "0112345678901231", "", 0, "" },
|
|
/* 3*/ { BARCODE_GS1_128, GS1RAW_MODE, "\0350112345678901231", "", 0, "" }, /* Tolerate initial GS */
|
|
/* 4*/ { BARCODE_GS1_128, -1, "[01]12345678901234", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/* 5*/ { BARCODE_GS1_128, -1, "^0112345678901234", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/* 6*/ { BARCODE_GS1_128, GS1RAW_MODE, "0112345678901234", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/* 7*/ { BARCODE_GS1_128, GS1RAW_MODE, "\0350112345678901234", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/* 8*/ { BARCODE_GS1_128, -1, "[01]123456789012345", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/* 9*/ { BARCODE_GS1_128, -1, "^01123456789012345", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/* 10*/ { BARCODE_GS1_128, GS1RAW_MODE, "01123456789012345", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/* 11*/ { BARCODE_GS1_128, -1, "[01]1234567890123", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too short" },
|
|
/* 12*/ { BARCODE_GS1_128, -1, "^011234567890123", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) data has incorrect length" },
|
|
/* 13*/ { BARCODE_GS1_128, GS1RAW_MODE, "011234567890123", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) data has incorrect length" },
|
|
/* 14*/ { BARCODE_GS1_128, -1, "[01]12345678901231[20]1", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (20) value is too short" },
|
|
/* 15*/ { BARCODE_GS1_128, -1, "^0112345678901231201", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (20) data has incorrect length" },
|
|
/* 16*/ { BARCODE_GS1_128, GS1RAW_MODE, "0112345678901231201", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (20) data has incorrect length" },
|
|
/* 17*/ { BARCODE_GS1_128, -1, "[04]1234[05]12345[06]123456", "", ZINT_ERROR_INVALID_DATA, "Error 268: Unrecognised AI: 04" },
|
|
/* 18*/ { BARCODE_GS1_128, -1, "^041234^0512345^06123456", "", ZINT_ERROR_INVALID_DATA, "Error 268: No known AI is a prefix of: 0412..." },
|
|
/* 19*/ { BARCODE_GS1_128, GS1RAW_MODE, "041234\0350512345\03506123456", "", ZINT_ERROR_INVALID_DATA, "Error 268: No known AI is a prefix of: 0412..." },
|
|
/* 20*/ { BARCODE_GS1_128, -1, "[01]1234567890123A", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|A|" },
|
|
/* 21*/ { BARCODE_GS1_128, -1, "^011234567890123A", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|A|" },
|
|
/* 22*/ { BARCODE_GS1_128, GS1RAW_MODE, "011234567890123A", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|A|" },
|
|
/* 23*/ { BARCODE_GS1_128, -1, "[01]1234567890123.", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|.|" },
|
|
/* 24*/ { BARCODE_GS1_128, -1, "^011234567890123.", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|.|" },
|
|
/* 25*/ { BARCODE_GS1_128, GS1RAW_MODE, "011234567890123.", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|.|" },
|
|
/* 26*/ { BARCODE_GS1_128, -1, "[01]1234567890123\177", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|\\x7F|" },
|
|
/* 27*/ { BARCODE_GS1_128, -1, "^011234567890123\177", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|\\x7F|" },
|
|
/* 28*/ { BARCODE_GS1_128, GS1RAW_MODE, "011234567890123\177", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|\\x7F|" },
|
|
/* 29*/ { BARCODE_GS1_128, -1, "[01]1234567890123\200", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|\\x80|" },
|
|
/* 30*/ { BARCODE_GS1_128, -1, "^011234567890123\200", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|\\x80|" },
|
|
/* 31*/ { BARCODE_GS1_128, GS1RAW_MODE, "011234567890123\200", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890123|\\x80|" },
|
|
/* 32*/ { BARCODE_GS1_128, -1, "0112345678901231", "", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/* 33*/ { BARCODE_GS1_128, -1, "[01]", "", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/* 34*/ { BARCODE_GS1_128, -1, "^01", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) data is empty" },
|
|
/* 35*/ { BARCODE_GS1_128, GS1RAW_MODE, "01", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) data is empty" },
|
|
/* 36*/ { BARCODE_GS1_128, -1, "[01][20]12", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too short" },
|
|
/* 37*/ { BARCODE_GS1_128, -1, "^012012", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) data has incorrect length" },
|
|
/* 38*/ { BARCODE_GS1_128, GS1RAW_MODE, "012012", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) data has incorrect length" },
|
|
/* 39*/ { BARCODE_GS1_128, -1, "[0]123", "", ZINT_ERROR_INVALID_DATA, "Error 268: Unrecognised AI: 0" },
|
|
/* 40*/ { BARCODE_GS1_128, -1, "^0", "", ZINT_ERROR_INVALID_DATA, "Error 802: Data does not start with an AI" },
|
|
/* 41*/ { BARCODE_GS1_128, GS1RAW_MODE, "0", "", ZINT_ERROR_INVALID_DATA, "Error 802: Data does not start with an AI" },
|
|
/* 42*/ { BARCODE_GS1_128, -1, "[]", "", ZINT_ERROR_INVALID_DATA, "Error 268: Unrecognised AI: " },
|
|
/* 43*/ { BARCODE_GS1_128, -1, "[01]12345678901231[]", "", ZINT_ERROR_INVALID_DATA, "Error 268: Unrecognised AI: " },
|
|
/* 44*/ { BARCODE_GS1_128, -1, "[123456789012345]123", "", ZINT_ERROR_INVALID_DATA, "Error 268: Unrecognised AI: 123456789012345" },
|
|
/* 45*/ { BARCODE_GS1_128, -1, "^123456789012345123", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (12): The date contains an illegal month of the year. (12)34|56|78" },
|
|
/* 46*/ { BARCODE_GS1_128, GS1RAW_MODE, "123456789012345123", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (12): The date contains an illegal month of the year. (12)34|56|78" },
|
|
/* 47*/ { BARCODE_GS1_128, GS1PARENS_MODE, "(91)AB[", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (91): A non-CSET 82 character was found where a CSET 82 character is expected. (91)AB|[|" },
|
|
/* 48*/ { BARCODE_GS1_128, GS1PARENS_MODE, "^91AB[", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (91): A non-CSET 82 character was found where a CSET 82 character is expected. (91)AB|[|" },
|
|
/* 49*/ { BARCODE_GS1_128, GS1PARENS_MODE | GS1RAW_MODE, "91AB[", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (91): A non-CSET 82 character was found where a CSET 82 character is expected. (91)AB|[|" },
|
|
/* 50*/ { BARCODE_GS1_128, GS1PARENS_MODE, "(91)12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789[", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (91): A non-CSET 82 character was found where a CSET 82 character is expected." },
|
|
/* 51*/ { BARCODE_GS1_128, GS1PARENS_MODE, "^9112345678901234567890123456789012345678901234567890123456789012345678901234567890123456789[", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (91): A non-CSET 82 character was found where a CSET 82 character is expected." },
|
|
/* 52*/ { BARCODE_GS1_128, GS1PARENS_MODE | GS1RAW_MODE, "9112345678901234567890123456789012345678901234567890123456789012345678901234567890123456789[", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (91): A non-CSET 82 character was found where a CSET 82 character is expected." },
|
|
/* 53*/ { BARCODE_GS1_128_CC, -1, "[01]12345678901231", "[20]12", 0, "" },
|
|
/* 54*/ { BARCODE_GS1_128_CC, -1, "^0112345678901231", "^2012", 0, "" },
|
|
/* 55*/ { BARCODE_GS1_128_CC, GS1RAW_MODE, "0112345678901231", "2012", 0, "" },
|
|
/* 56*/ { BARCODE_GS1_128_CC, GS1RAW_MODE, "\0350112345678901231", "2012", 0, "" },
|
|
/* 57*/ { BARCODE_GS1_128_CC, GS1RAW_MODE, "0112345678901231", "\0352012", 0, "" },
|
|
/* 58*/ { BARCODE_GS1_128_CC, GS1RAW_MODE, "\0350112345678901231", "\0352012", 0, "" },
|
|
/* 59*/ { BARCODE_GS1_128_CC, -1, "[01]12345678901234", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): The numeric check digit is incorrect. (01)1234567890123|4|" },
|
|
/* 60*/ { BARCODE_GS1_128_CC, -1, "[01]123456789012345", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too long" },
|
|
/* 61*/ { BARCODE_GS1_128_CC, -1, "[01]12345678901231", "[20]123", ZINT_ERROR_INVALID_DATA, "Error 268: AI (20) value is too long" },
|
|
/* 62*/ { BARCODE_GS1_128_CC, -1, "[01]12345678901231", "[20]1A", ZINT_ERROR_INVALID_DATA, "Error 267: AI (20): A non-digit character was found where a digit is expected. (20)1|A|" },
|
|
/* 63*/ { BARCODE_GS1_128_CC, -1, "[01]1234567890121", "[20]", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too short" },
|
|
/* 64*/ { BARCODE_GS1_128_CC, -1, "[01]1234567890121", "[2]12", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too short" },
|
|
/* 65*/ { BARCODE_GS1_128_CC, -1, "[01]12345678901231", "[90]12]34", ZINT_ERROR_INVALID_DATA, "Error 267: AI (90): A non-CSET 82 character was found where a CSET 82 character is expected. (90)12|]|34" },
|
|
/* 66*/ { BARCODE_GS1_128_CC, -1, "[01]12345678901231", "[90]12[34", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/* 67*/ { BARCODE_GS1_128_CC, -1, "https://example.com/01/12345678901231", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/* 68*/ { BARCODE_DBAR_EXP, -1, "[01]12345678901231", "", 0, "" },
|
|
/* 69*/ { BARCODE_DBAR_EXP, -1, "^0112345678901231", "", 0, "" },
|
|
/* 70*/ { BARCODE_DBAR_EXP, GS1RAW_MODE, "0112345678901231", "", 0, "" },
|
|
/* 71*/ { BARCODE_DBAR_EXP, GS1RAW_MODE, "\0350112345678901231", "", 0, "" },
|
|
/* 72*/ { BARCODE_DBAR_EXP, -1, "[01]12345678901231[10]123[11]12345", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (11) value is too short" },
|
|
/* 73*/ { BARCODE_DBAR_EXP, -1, "[01]12345678901231[10]123[11]12345A", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (11): A non-digit character was found where a digit is expected. (11)12345|A|" },
|
|
/* 74*/ { BARCODE_DBAR_EXP, -1, "011234567890121", "", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/* 75*/ { BARCODE_DBAR_EXP, -1, "[10]", "", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/* 76*/ { BARCODE_DBAR_EXP, -1, "[2]1", "", ZINT_ERROR_INVALID_DATA, "Error 268: Unrecognised AI: 2" },
|
|
/* 77*/ { BARCODE_DBAR_EXP, -1, "[]1", "", ZINT_ERROR_INVALID_DATA, "Error 268: Unrecognised AI: " },
|
|
/* 78*/ { BARCODE_DBAR_EXP, -1, "[]", "", ZINT_ERROR_INVALID_DATA, "Error 268: Unrecognised AI: " },
|
|
/* 79*/ { BARCODE_DBAR_EXP, -1, "[20]12[]", "", ZINT_ERROR_INVALID_DATA, "Error 268: Unrecognised AI: " },
|
|
/* 80*/ { BARCODE_DBAR_EXP, -1, "[90]12]34", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (90): A non-CSET 82 character was found where a CSET 82 character is expected. (90)12|]|34" },
|
|
/* 81*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345", 0, "" },
|
|
/* 82*/ { BARCODE_DBAR_EXP_CC, GS1RAW_MODE, "011234567890123110123\03511121212", "21ABC123\0352212345", 0, "" },
|
|
/* 83*/ { BARCODE_DBAR_EXP_CC, GS1RAW_MODE, "\035011234567890123110123\03511121212", "\03521ABC123\0352212345", 0, "" },
|
|
/* 84*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231[10]123[11]1234", "[21]ABC123[22]12345", ZINT_ERROR_INVALID_DATA, "Error 268: AI (11) value is too short" },
|
|
/* 85*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231[10]123[11]123456", "[21]ABC123[22]12345", ZINT_ERROR_INVALID_DATA, "Error 267: AI (11): The date contains an illegal month of the year. (11)12|34|56" },
|
|
/* 86*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345[30]123456789", ZINT_ERROR_INVALID_DATA, "Error 268: AI (30) value is too long" },
|
|
/* 87*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345[30]1234567A", ZINT_ERROR_INVALID_DATA, "Error 267: AI (30): A non-digit character was found where a digit is expected. (30)1234567|A|" },
|
|
/* 88*/ { BARCODE_DBAR_EXP_CC, -1, "[01]1234567890121\177", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890121|\\x7F|" },
|
|
/* 89*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231", "[20]1\177", ZINT_ERROR_INVALID_DATA, "Error 267: AI (20): A non-digit character was found where a digit is expected. (20)1|\\x7F|" },
|
|
/* 90*/ { BARCODE_DBAR_EXP_CC, -1, "[01]1234567890121", "2012", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too short" },
|
|
/* 91*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231", "2012", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/* 92*/ { BARCODE_DBAR_EXP_CC, -1, "[01]1234567890121", "[10]", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too short" },
|
|
/* 93*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231", "[10]", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/* 94*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231", "[2]1", ZINT_ERROR_INVALID_DATA, "Error 268: Unrecognised AI: 2" },
|
|
/* 95*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231", "[]12", ZINT_ERROR_INVALID_DATA, "Error 268: Unrecognised AI: " },
|
|
/* 96*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231", "[]", ZINT_ERROR_INVALID_DATA, "Error 268: Unrecognised AI: " },
|
|
/* 97*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231", "[90]12]34", ZINT_ERROR_INVALID_DATA, "Error 267: AI (90): A non-CSET 82 character was found where a CSET 82 character is expected. (90)12|]|34" },
|
|
/* 98*/ { BARCODE_DBAR_EXPSTK, -1, "[01]12345678901231", "", 0, "" },
|
|
/* 99*/ { BARCODE_DBAR_EXPSTK, -1, "[01]12345678901231[10]123[11]1234", "", ZINT_ERROR_INVALID_DATA, "Error 268: AI (11) value is too short" },
|
|
/*100*/ { BARCODE_DBAR_EXPSTK, -1, "[01]12345678901231[10]123[11]12345A", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (11): A non-digit character was found where a digit is expected. (11)12345|A|" },
|
|
/*101*/ { BARCODE_DBAR_EXPSTK, -1, "[01]1234567890121\177", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890121|\\x7F|" },
|
|
/*102*/ { BARCODE_DBAR_EXPSTK, -1, "[01]1234567890121\200", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (01): A non-digit character was found where a digit is expected. (01)1234567890121|\\x80|" },
|
|
/*103*/ { BARCODE_DBAR_EXPSTK, -1, "011234567890121", "", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/*104*/ { BARCODE_DBAR_EXPSTK, -1, "[01]", "", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/*105*/ { BARCODE_DBAR_EXPSTK, -1, "[90]12]34", "", ZINT_ERROR_INVALID_DATA, "Error 267: AI (90): A non-CSET 82 character was found where a CSET 82 character is expected. (90)12|]|34" },
|
|
/*106*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345", 0, "" },
|
|
/*107*/ { BARCODE_DBAR_EXPSTK_CC, GS1RAW_MODE, "011234567890123110123\03511121212", "21ABC123\0352212345", 0, "" },
|
|
/*108*/ { BARCODE_DBAR_EXPSTK_CC, GS1RAW_MODE, "\035011234567890123110123\03511121212", "21ABC123\0352212345", 0, "" },
|
|
/*109*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]12345678901231[10]123[11]1234", "[21]ABC123[22]12345", ZINT_ERROR_INVALID_DATA, "Error 268: AI (11) value is too short" },
|
|
/*110*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]12345678901231[10]123[11]123456", "[21]ABC123[22]12345", ZINT_ERROR_INVALID_DATA, "Error 267: AI (11): The date contains an illegal month of the year. (11)12|34|56" },
|
|
/*111*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345[30]123456789", ZINT_ERROR_INVALID_DATA, "Error 268: AI (30) value is too long" },
|
|
/*112*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345[30]1234567A", ZINT_ERROR_INVALID_DATA, "Error 267: AI (30): A non-digit character was found where a digit is expected. (30)1234567|A|" },
|
|
/*113*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]1234567890121", "[20]1\177", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too short" },
|
|
/*114*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]12345678901231", "[20]1\200", ZINT_ERROR_INVALID_DATA, "Error 267: AI (20): A non-digit character was found where a digit is expected. (20)1|\\x80|" },
|
|
/*115*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]12345678901231", "2012", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/*116*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]1234567890121", "[235]", ZINT_ERROR_INVALID_DATA, "Error 268: AI (01) value is too short" },
|
|
/*117*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]12345678901231", "[235]", ZINT_ERROR_INVALID_DATA, "Error 268: Failed to parse AI data" },
|
|
/*118*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]12345678901231", "[90]12]34", ZINT_ERROR_INVALID_DATA, "Error 267: AI (90): A non-CSET 82 character was found where a CSET 82 character is expected. (90)12|]|34" },
|
|
};
|
|
const int data_size = ARRAY_SIZE(data);
|
|
int i, length, ret;
|
|
struct zint_symbol *symbol = NULL;
|
|
|
|
const char *text;
|
|
|
|
testStartSymbol(p_ctx->func_name, &symbol);
|
|
|
|
for (i = 0; i < data_size; i++) {
|
|
|
|
if (testContinue(p_ctx, i)) continue;
|
|
|
|
symbol = ZBarcode_Create();
|
|
assert_nonnull(symbol, "Symbol not created\n");
|
|
|
|
if (data[i].composite[0]) {
|
|
text = data[i].composite;
|
|
strcpy(symbol->primary, data[i].data);
|
|
} else {
|
|
text = data[i].data;
|
|
}
|
|
length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/,
|
|
-1 /*option_1*/, -1 /*option_2*/, -1 /*option_3*/, -1 /*output_options*/,
|
|
text, -1, debug);
|
|
symbol->input_mode |= GS1SYNTAXENGINE_MODE;
|
|
|
|
ret = ZBarcode_Encode(symbol, TCU(text), length);
|
|
assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n",
|
|
i, ret, data[i].ret, symbol->errtxt);
|
|
assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d strcmp(%s, %s) != 0\n",
|
|
i, symbol->errtxt, data[i].expected_errtxt);
|
|
|
|
ZBarcode_Delete(symbol);
|
|
}
|
|
|
|
testFinish();
|
|
}
|
|
|
|
int main(int argc, char *argv[]) {
|
|
|
|
testFunction funcs[] = { /* name, func */
|
|
{ "test_gs1_reduce", test_gs1_reduce },
|
|
{ "test_hrt", test_hrt },
|
|
{ "test_gs1_verify", test_gs1_verify },
|
|
{ "test_gs1_digital_link", test_gs1_digital_link },
|
|
{ "test_non_forced", test_non_forced },
|
|
{ "test_gs1_128_dbar_exp", test_gs1_128_dbar_exp },
|
|
};
|
|
|
|
testRun(argc, argv, funcs, ARRAY_SIZE(funcs));
|
|
|
|
testReport();
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* vim: set ts=4 sw=4 et : */
|