1
0
mirror of https://git.code.sf.net/p/zint/code synced 2026-05-01 19:55:29 +00:00
Files
zint/backend/tests/test_gs1.c
gitlost df64a0f237 debian: updated using https://salsa.debian.org/debian/zint as
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
2026-03-18 15:08:32 +00:00

3501 lines
380 KiB
C

/*
libzint - the open source barcode library
Copyright (C) 2019-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"
/*
* 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_errtxt;
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", "Error 252: Data does not start with an AI", "" },
/* 1*/ { BARCODE_GS1_128, -1, "https://example.com/01/12345678901231", "", ZINT_ERROR_INVALID_DATA, 0, "Digital Links require matrix symbologies", "Error 252: Data does not start with an AI", "" },
/* 2*/ { BARCODE_GS1_128, -1, "^12345678901234", "", ZINT_WARN_NONCOMPLIANT, 0, "", "Warning 261: AI (12) data position 3: Invalid month '56'",
"110100111001111010111010110011100100010110001110001011011000010100110111101101011001110010001011000101011110001100011101011"
},
/* 3*/ { BARCODE_GS1_128, GS1RAW_MODE, "12345678901234", "", ZINT_WARN_NONCOMPLIANT, 1, "", "Warning 261: AI (12) data position 3: Invalid month '56'",
"110100111001111010111010110011100100010110001110001011011000010100110111101101011001110010001011000101011110001100011101011"
},
/* 4*/ { BARCODE_GS1_128, -1, "[01]12345678901231", "", 0, 0, "Input mode ignored; verified manually against TEC-IT", "",
"11010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110100001100101100011101011"
},
/* 5*/ { BARCODE_GS1_128, GS1PARENS_MODE, "(01)12345678901231", "", 0, 1, "", "",
"11010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110100001100101100011101011"
},
/* 6*/ { BARCODE_GS1_128, -1, "^0112345678901231", "", 0, 1, "", "",
"11010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110100001100101100011101011"
},
/* 7*/ { BARCODE_GS1_128, GS1RAW_MODE, "0112345678901231", "", 0, 1, "", "",
"11010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110100001100101100011101011"
},
/* 8*/ { BARCODE_GS1_128, GS1_MODE, "[01]12345678901231", "", 0, 1, "Input mode ignored", "",
"11010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110100001100101100011101011"
},
/* 9*/ { BARCODE_GS1_128, UNICODE_MODE, "[01]12345678901231", "", 0, 1, "Input mode ignored", "",
"11010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110100001100101100011101011"
},
/* 10*/ { BARCODE_GS1_128, GS1_MODE, "[01]12345678901231[21]()", "", 0, 0, "Parentheses in AI data", "",
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011011100100101111011101000110010011001001000110111000101100011101011"
},
/* 11*/ { BARCODE_GS1_128, ESCAPE_MODE | GS1PARENS_MODE, "(01)12345678901231(21)\\(\\)", "", 0, 1, "Parentheses in AI data", "",
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011011100100101111011101000110010011001001000110111000101100011101011"
},
/* 12*/ { BARCODE_GS1_128, -1, "^011234567890123121()", "", 0, 1, "Parentheses in AI data", "",
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011011100100101111011101000110010011001001000110111000101100011101011"
},
/* 13*/ { BARCODE_GS1_128, GS1RAW_MODE, "011234567890123121()", "", 0, 1, "Parentheses in AI data", "",
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011011100100101111011101000110010011001001000110111000101100011101011"
},
/* 14*/ { BARCODE_GS1_128_CC, -1, "[01]12345678901231", "[21]1234", 0, 0, "Input mode ignored", "",
"0000000000000000000001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010000000000000000000000000"
"0000000000000000000001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010000000000000000000000000"
"0000000000000000000001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010000000000000000000000000"
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100010100001000101001110011100010100"
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011101011110111010110001100011101011"
},
/* 15*/ { BARCODE_GS1_128_CC, GS1PARENS_MODE, "(01)12345678901231", "(21)1234", 0, 1, "", "",
"0000000000000000000001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010000000000000000000000000"
"0000000000000000000001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010000000000000000000000000"
"0000000000000000000001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010000000000000000000000000"
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100010100001000101001110011100010100"
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011101011110111010110001100011101011"
},
/* 16*/ { BARCODE_GS1_128_CC, -1, "^0112345678901231", "^211234", 0, 1, "", "",
"0000000000000000000001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010000000000000000000000000"
"0000000000000000000001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010000000000000000000000000"
"0000000000000000000001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010000000000000000000000000"
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100010100001000101001110011100010100"
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011101011110111010110001100011101011"
},
/* 17*/ { BARCODE_GS1_128_CC, GS1RAW_MODE, "0112345678901231", "211234", 0, 1, "", "",
"0000000000000000000001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010000000000000000000000000"
"0000000000000000000001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010000000000000000000000000"
"0000000000000000000001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010000000000000000000000000"
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100010100001000101001110011100010100"
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011101011110111010110001100011101011"
},
/* 18*/ { BARCODE_GS1_128_CC, GS1_MODE, "[01]12345678901231", "[21]1234", 0, 1, "Input mode ignored", "",
"0000000000000000000001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010000000000000000000000000"
"0000000000000000000001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010000000000000000000000000"
"0000000000000000000001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010000000000000000000000000"
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100010100001000101001110011100010100"
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011101011110111010110001100011101011"
},
/* 19*/ { BARCODE_GS1_128_CC, UNICODE_MODE, "[01]12345678901231", "[21]1234", 0, 1, "Input mode ignored", "",
"0000000000000000000001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010000000000000000000000000"
"0000000000000000000001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010000000000000000000000000"
"0000000000000000000001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010000000000000000000000000"
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100010100001000101001110011100010100"
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011101011110111010110001100011101011"
},
/* 20*/ { BARCODE_GS1_128_CC, GS1_MODE, "[01]12345678901231[10])", "[21](", 0, 0, "Parentheses in AI data", "",
"0000000000000000000000000000000000000000000110110111010100001000001000110000110001010001001110100111010100011100001110001100101100011011000101000000000000000000000000000000000000"
"0000000000000000000000000000000000000000000110110110011100000101110110110000010011100101001100100100011110010111101101011100010000011001000101000000000000000000000000000000000000"
"0000000000000000000000000000000000000000000110110100010001000100011110111100101111001001001100110111111010011010001111100100011101011101000101000000000000000000000000000000000000"
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100110111011010000100010011011011101000100001011101000010011100010100"
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011001000100101111011101100100100010111011110100010111101100011101011"
},
/* 21*/ { BARCODE_GS1_128_CC, ESCAPE_MODE | GS1PARENS_MODE, "(01)12345678901231(10)\\)", "(21)\\(", 0, 1, "Parentheses in AI data", "",
"0000000000000000000000000000000000000000000110110111010100001000001000110000110001010001001110100111010100011100001110001100101100011011000101000000000000000000000000000000000000"
"0000000000000000000000000000000000000000000110110110011100000101110110110000010011100101001100100100011110010111101101011100010000011001000101000000000000000000000000000000000000"
"0000000000000000000000000000000000000000000110110100010001000100011110111100101111001001001100110111111010011010001111100100011101011101000101000000000000000000000000000000000000"
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100110111011010000100010011011011101000100001011101000010011100010100"
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011001000100101111011101100100100010111011110100010111101100011101011"
},
/* 22*/ { BARCODE_GS1_128_CC, -1, "^011234567890123110)", "^21(", 0, 1, "Parentheses in AI data", "",
"0000000000000000000000000000000000000000000110110111010100001000001000110000110001010001001110100111010100011100001110001100101100011011000101000000000000000000000000000000000000"
"0000000000000000000000000000000000000000000110110110011100000101110110110000010011100101001100100100011110010111101101011100010000011001000101000000000000000000000000000000000000"
"0000000000000000000000000000000000000000000110110100010001000100011110111100101111001001001100110111111010011010001111100100011101011101000101000000000000000000000000000000000000"
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100110111011010000100010011011011101000100001011101000010011100010100"
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011001000100101111011101100100100010111011110100010111101100011101011"
},
/* 23*/ { BARCODE_GS1_128_CC, GS1RAW_MODE, "011234567890123110)", "21(", 0, 1, "Parentheses in AI data", "",
"0000000000000000000000000000000000000000000110110111010100001000001000110000110001010001001110100111010100011100001110001100101100011011000101000000000000000000000000000000000000"
"0000000000000000000000000000000000000000000110110110011100000101110110110000010011100101001100100100011110010111101101011100010000011001000101000000000000000000000000000000000000"
"0000000000000000000000000000000000000000000110110100010001000100011110111100101111001001001100110111111010011010001111100100011101011101000101000000000000000000000000000000000000"
"0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100110111011010000100010011011011101000100001011101000010011100010100"
"1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011001000100101111011101100100100010111011110100010111101100011101011"
},
/* 24*/ { BARCODE_EAN14, -1, "1234567890123", "", 0, 0, "Input mode ignored; verified manually against TEC-IT", "",
"11010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110100001100101100011101011"
},
/* 25*/ { BARCODE_EAN14, GS1_MODE, "1234567890123", "", 0, 0, "Input mode ignored", "",
"11010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110100001100101100011101011"
},
/* 26*/ { BARCODE_EAN14, UNICODE_MODE, "1234567890123", "", 0, 0, "Input mode ignored", "",
"11010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110100001100101100011101011"
},
/* 27*/ { BARCODE_EAN14, GS1PARENS_MODE, "1234567890123", "", 0, 0, "Input mode ignored (parentheses instead of square brackets)", "",
"11010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110100001100101100011101011"
},
/* 28*/ { BARCODE_EAN14, GS1RAW_MODE, "1234567890123", "", 0, 0, "Input mode ignored (raw same as non-raw so doesn't matter)", "",
"11010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110100001100101100011101011"
},
/* 29*/ { BARCODE_EAN14, -1, "^1234567890123", "", ZINT_ERROR_INVALID_DATA, 0, "Caret mode not accepted", "Error 346: Invalid character at position 1 in input (digits only)", "" },
/* 30*/ { BARCODE_NVE18, -1, "12345678901234567", "", 0, 0, "Input mode ignored; verified manually against TEC-IT", "",
"110100111001111010111011011001100101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010010101101110001100011101011"
},
/* 31*/ { BARCODE_NVE18, GS1_MODE, "12345678901234567", "", 0, 0, "Input mode ignored", "",
"110100111001111010111011011001100101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010010101101110001100011101011"
},
/* 32*/ { BARCODE_NVE18, UNICODE_MODE, "12345678901234567", "", 0, 0, "Input mode ignored", "",
"110100111001111010111011011001100101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010010101101110001100011101011"
},
/* 33*/ { BARCODE_NVE18, GS1PARENS_MODE, "12345678901234567", "", 0, 0, "Input mode ignored (parentheses instead of square brackets)", "",
"110100111001111010111011011001100101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010010101101110001100011101011"
},
/* 34*/ { BARCODE_NVE18, GS1RAW_MODE, "12345678901234567", "", 0, 0, "Input mode ignored (raw same as non-raw so doesn't matter)", "",
"110100111001111010111011011001100101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010010101101110001100011101011"
},
/* 35*/ { BARCODE_NVE18, -1, "^12345678901234567", "", ZINT_ERROR_INVALID_DATA, 0, "Caret mode not accepted", "Error 346: Invalid character at position 1 in input (digits only)", "" },
/* 36*/ { BARCODE_DBAR_EXP, -1, "2012", "", ZINT_ERROR_INVALID_DATA, 0, "GS1 data required", "Error 252: Data does not start with an AI", "" },
/* 37*/ { BARCODE_DBAR_EXP, -1, "https://example.com/01/12345678901231", "", ZINT_ERROR_INVALID_DATA, 0, "Digital Links require matrix symbologies", "Error 252: Data does not start with an AI", "" },
/* 38*/ { BARCODE_DBAR_EXP, -1, "[20]12", "", 0, 0, "Input mode ignored", "",
"010010000010000101101111111100001010000010000110010101111100101110001011110000000010101111100001011101"
},
/* 39*/ { BARCODE_DBAR_EXP, GS1PARENS_MODE, "(20)12", "", 0, 0, "Input mode ignored (parentheses instead of square brackets)", "",
"010010000010000101101111111100001010000010000110010101111100101110001011110000000010101111100001011101"
},
/* 40*/ { BARCODE_DBAR_EXP, GS1_MODE, "[20]12", "", 0, 0, "Input mode ignored", "",
"010010000010000101101111111100001010000010000110010101111100101110001011110000000010101111100001011101"
},
/* 41*/ { BARCODE_DBAR_EXP, GS1_MODE | GS1PARENS_MODE, "(20)12", "", 0, 0, "Input mode ignored (parentheses instead of square brackets)", "",
"010010000010000101101111111100001010000010000110010101111100101110001011110000000010101111100001011101"
},
/* 42*/ { BARCODE_DBAR_EXP, UNICODE_MODE, "[20]12", "", 0, 0, "Input mode ignored", "",
"010010000010000101101111111100001010000010000110010101111100101110001011110000000010101111100001011101"
},
/* 43*/ { BARCODE_DBAR_EXP, -1, "^2012", "", 0, 1, "", "",
"010010000010000101101111111100001010000010000110010101111100101110001011110000000010101111100001011101"
},
/* 44*/ { BARCODE_DBAR_EXP, GS1RAW_MODE, "2012", "", 0, 1, "", "",
"010010000010000101101111111100001010000010000110010101111100101110001011110000000010101111100001011101"
},
/* 45*/ { BARCODE_DBAR_EXP, -1, "[21])", "", 0, 0, "Parentheses in AI data", "",
"010010000001010001101111111100001010000010000100110100110111111011101011110000000010000011011001110101"
},
/* 46*/ { BARCODE_DBAR_EXP, ESCAPE_MODE | GS1PARENS_MODE, "(21)\\)", "", 0, 0, "Parentheses in AI data", "",
"010010000001010001101111111100001010000010000100110100110111111011101011110000000010000011011001110101"
},
/* 47*/ { BARCODE_DBAR_EXP, -1, "^21)", "", 0, 1, "Parentheses in AI data", "",
"010010000001010001101111111100001010000010000100110100110111111011101011110000000010000011011001110101"
},
/* 48*/ { BARCODE_DBAR_EXP, GS1RAW_MODE, "21)", "", 0, 1, "Parentheses in AI data", "",
"010010000001010001101111111100001010000010000100110100110111111011101011110000000010000011011001110101"
},
/* 49*/ { BARCODE_DBAR_EXP_CC, -1, "[20]12", "[21]1234", 0, 0, "Input mode ignored; verified manually against TEC-IT", "",
"001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010"
"001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010"
"001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010"
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
},
/* 50*/ { BARCODE_DBAR_EXP_CC, GS1_MODE, "[20]12", "[21]1234", 0, 0, "Input mode ignored", "",
"001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010"
"001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010"
"001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010"
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
},
/* 51*/ { BARCODE_DBAR_EXP_CC, UNICODE_MODE, "[20]12", "[21]1234", 0, 0, "Input mode ignored", "",
"001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010"
"001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010"
"001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010"
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
},
/* 52*/ { BARCODE_DBAR_EXP_CC, -1, "^2012", "^211234", 0, 1, "", "",
"001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010"
"001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010"
"001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010"
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
},
/* 53*/ { BARCODE_DBAR_EXP_CC, GS1RAW_MODE, "2012", "211234", 0, 1, "", "",
"001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010"
"001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010"
"001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010"
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
},
/* 54*/ { BARCODE_DBAR_EXP_CC, -1, "[10]()", "[21]()", 0, 0, "Parentheses in AI data", "",
"00110110111010100001000001000110000110001010001001110100111010111001111101100111011001000011011000101000000000000000000000000000000000"
"00110110110010001000111110110111101100001101001001100100111110111101110101111101000110111011001000101000000000000000000000000000000000"
"00110110100010111110110100000100001111011011001001100110100111001100111001000001001001111011101000101000000000000000000000000000000000"
"00000010011111011101000000001010010101110011000001101100100000010001010000101010000100011011110001101110111101111010010100000010100000"
"01011101100000100010111111110000101010001100111110010011011111101110101111000000111011100100001110010001000010000101100011111100001010"
},
/* 55*/ { BARCODE_DBAR_EXP_CC, ESCAPE_MODE | GS1PARENS_MODE, "(10)\\(\\)", "(21)\\(\\)", 0, 0, "Parentheses in AI data", "",
"00110110111010100001000001000110000110001010001001110100111010111001111101100111011001000011011000101000000000000000000000000000000000"
"00110110110010001000111110110111101100001101001001100100111110111101110101111101000110111011001000101000000000000000000000000000000000"
"00110110100010111110110100000100001111011011001001100110100111001100111001000001001001111011101000101000000000000000000000000000000000"
"00000010011111011101000000001010010101110011000001101100100000010001010000101010000100011011110001101110111101111010010100000010100000"
"01011101100000100010111111110000101010001100111110010011011111101110101111000000111011100100001110010001000010000101100011111100001010"
},
/* 56*/ { BARCODE_DBAR_EXP_CC, -1, "^10()", "^21()", 0, 1, "Parentheses in AI data", "",
"00110110111010100001000001000110000110001010001001110100111010111001111101100111011001000011011000101000000000000000000000000000000000"
"00110110110010001000111110110111101100001101001001100100111110111101110101111101000110111011001000101000000000000000000000000000000000"
"00110110100010111110110100000100001111011011001001100110100111001100111001000001001001111011101000101000000000000000000000000000000000"
"00000010011111011101000000001010010101110011000001101100100000010001010000101010000100011011110001101110111101111010010100000010100000"
"01011101100000100010111111110000101010001100111110010011011111101110101111000000111011100100001110010001000010000101100011111100001010"
},
/* 57*/ { BARCODE_DBAR_EXP_CC, GS1RAW_MODE, "10()", "21()", 0, 1, "Parentheses in AI data", "",
"00110110111010100001000001000110000110001010001001110100111010111001111101100111011001000011011000101000000000000000000000000000000000"
"00110110110010001000111110110111101100001101001001100100111110111101110101111101000110111011001000101000000000000000000000000000000000"
"00110110100010111110110100000100001111011011001001100110100111001100111001000001001001111011101000101000000000000000000000000000000000"
"00000010011111011101000000001010010101110011000001101100100000010001010000101010000100011011110001101110111101111010010100000010100000"
"01011101100000100010111111110000101010001100111110010011011111101110101111000000111011100100001110010001000010000101100011111100001010"
},
/* 58*/ { BARCODE_DBAR_EXPSTK, -1, "12", "", ZINT_ERROR_INVALID_DATA, 0, "GS1 data required", "Error 252: Data does not start with an AI", "" },
/* 59*/ { BARCODE_DBAR_EXPSTK, -1, "https://example.com/01/12345678901231", "", ZINT_ERROR_INVALID_DATA, 0, "Digital Links require matrix symbologies", "Error 252: Data does not start with an AI", "" },
/* 60*/ { BARCODE_DBAR_EXPSTK, -1, "[20]12", "", 0, 0, "Input mode ignored", "",
"010010000010000101101111111100001010000010000110010101111100101110001011110000000010101111100001011101"
},
/* 61*/ { BARCODE_DBAR_EXPSTK, GS1_MODE, "[20]12", "", 0, 0, "Input mode ignored", "",
"010010000010000101101111111100001010000010000110010101111100101110001011110000000010101111100001011101"
},
/* 62*/ { BARCODE_DBAR_EXPSTK, UNICODE_MODE, "[20]12", "", 0, 0, "Input mode ignored", "",
"010010000010000101101111111100001010000010000110010101111100101110001011110000000010101111100001011101"
},
/* 63*/ { BARCODE_DBAR_EXPSTK, -1, "^2012", "", 0, 1, "", "",
"010010000010000101101111111100001010000010000110010101111100101110001011110000000010101111100001011101"
},
/* 64*/ { BARCODE_DBAR_EXPSTK, GS1RAW_MODE, "2012", "", 0, 1, "", "",
"010010000010000101101111111100001010000010000110010101111100101110001011110000000010101111100001011101"
},
/* 65*/ { BARCODE_DBAR_EXPSTK, -1, "[21](21)", "", 0, 0, "Parentheses in AI data", "",
"010100111100010000101111111100001010000010000100110100110111111011101011110000001110011001110110000101"
"000011000011101111010000000010100101111101111011001011001000000100010100001010100001100110001001110000"
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
"000000001110010001001010000001010010101111100001010000000000000000000000000000000000000000000000000000"
"001011110001101110110001111110000101010000011110100010000000000000000000000000000000000000000000000000"
},
/* 66*/ { BARCODE_DBAR_EXPSTK, ESCAPE_MODE | GS1PARENS_MODE, "(21)\\(21\\)", "", 0, 0, "Parentheses in AI data", "",
"010100111100010000101111111100001010000010000100110100110111111011101011110000001110011001110110000101"
"000011000011101111010000000010100101111101111011001011001000000100010100001010100001100110001001110000"
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
"000000001110010001001010000001010010101111100001010000000000000000000000000000000000000000000000000000"
"001011110001101110110001111110000101010000011110100010000000000000000000000000000000000000000000000000"
},
/* 67*/ { BARCODE_DBAR_EXPSTK, -1, "^21(21)", "", 0, 1, "Parentheses in AI data", "",
"010100111100010000101111111100001010000010000100110100110111111011101011110000001110011001110110000101"
"000011000011101111010000000010100101111101111011001011001000000100010100001010100001100110001001110000"
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
"000000001110010001001010000001010010101111100001010000000000000000000000000000000000000000000000000000"
"001011110001101110110001111110000101010000011110100010000000000000000000000000000000000000000000000000"
},
/* 68*/ { BARCODE_DBAR_EXPSTK, GS1RAW_MODE, "21(21)", "", 0, 1, "Parentheses in AI data", "",
"010100111100010000101111111100001010000010000100110100110111111011101011110000001110011001110110000101"
"000011000011101111010000000010100101111101111011001011001000000100010100001010100001100110001001110000"
"000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000"
"000000001110010001001010000001010010101111100001010000000000000000000000000000000000000000000000000000"
"001011110001101110110001111110000101010000011110100010000000000000000000000000000000000000000000000000"
},
/* 69*/ { BARCODE_DBAR_EXPSTK_CC, -1, "12", "[21]1234", ZINT_ERROR_INVALID_DATA, 0, "GS1 data required", "Error 252: Data does not start with an AI (linear component)", "" },
/* 70*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[20]12", "[21]1234", 0, 0, "Input mode ignored; verified manually against TEC-IT (same as BARCODE_DBAR_EXP_CC above)", "",
"001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010"
"001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010"
"001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010"
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
},
/* 71*/ { BARCODE_DBAR_EXPSTK_CC, GS1PARENS_MODE, "(20)12", "(21)1234", 0, 0, "Input mode ignored (parentheses instead of square brackets)", "",
"001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010"
"001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010"
"001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010"
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
},
/* 72*/ { BARCODE_DBAR_EXPSTK_CC, GS1_MODE, "[20]12", "[21]1234", 0, 0, "Input mode ignored", "",
"001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010"
"001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010"
"001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010"
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
},
/* 73*/ { BARCODE_DBAR_EXPSTK_CC, UNICODE_MODE, "[20]12", "[21]1234", 0, 0, "Input mode ignored", "",
"001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010"
"001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010"
"001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010"
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
},
/* 74*/ { BARCODE_DBAR_EXPSTK_CC, -1, "^2012", "^211234", 0, 1, "", "",
"001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010"
"001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010"
"001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010"
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
},
/* 75*/ { BARCODE_DBAR_EXPSTK_CC, GS1RAW_MODE, "2012", "211234", 0, 1, "", "",
"001101101110110100001000001101001100111011000010011101001100001010001100010010011011000000110110001010"
"001101101100111110100010011001101011100100000010011001001001111001011110011101011001000000110010001010"
"001101101000101111100110000101001111010000001010011001101011101110011110010011110110000110111010001010"
"000001111111010110010000000010100100111001100001011010000011010001110100001010101001010000011110100000"
"010010000000101001101111111100001011000110011110100101111100101110001011110000000010101111100001011101"
},
/* 76*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[10]1)", "[21]12)(", 0, 0, "Parentheses in AI data", "",
"001101101110110100001000001101110111011100111010011101001000010010000001010010001000010000110110001010"
"001101101100111101000010001001110000110111010010011001001101100011110001011010111000100000110010001010"
"001101101000111001111101011001011100100000011010011001101001111001000001010000011110010100111010001010"
"000011111001011111010000000010100100111000001101011010001001100000010100001010101001110100110000010000"
"010100000110100000101111111100001011000111110010100101110110011111101011110000000010001011001111101101"
},
/* 77*/ { BARCODE_DBAR_EXPSTK_CC, ESCAPE_MODE | GS1PARENS_MODE, "(10)1\\)", "(21)12\\)\\(", 0, 0, "Parentheses in AI data", "",
"001101101110110100001000001101110111011100111010011101001000010010000001010010001000010000110110001010"
"001101101100111101000010001001110000110111010010011001001101100011110001011010111000100000110010001010"
"001101101000111001111101011001011100100000011010011001101001111001000001010000011110010100111010001010"
"000011111001011111010000000010100100111000001101011010001001100000010100001010101001110100110000010000"
"010100000110100000101111111100001011000111110010100101110110011111101011110000000010001011001111101101"
},
/* 78*/ { BARCODE_DBAR_EXPSTK_CC, -1, "^101)", "^2112)(", 0, 1, "Parentheses in AI data", "",
"001101101110110100001000001101110111011100111010011101001000010010000001010010001000010000110110001010"
"001101101100111101000010001001110000110111010010011001001101100011110001011010111000100000110010001010"
"001101101000111001111101011001011100100000011010011001101001111001000001010000011110010100111010001010"
"000011111001011111010000000010100100111000001101011010001001100000010100001010101001110100110000010000"
"010100000110100000101111111100001011000111110010100101110110011111101011110000000010001011001111101101"
},
/* 79*/ { BARCODE_DBAR_EXPSTK_CC, GS1RAW_MODE, "101)", "2112)(", 0, 1, "Parentheses in AI data", "",
"001101101110110100001000001101110111011100111010011101001000010010000001010010001000010000110110001010"
"001101101100111101000010001001110000110111010010011001001101100011110001011010111000100000110010001010"
"001101101000111001111101011001011100100000011010011001101001111001000001010000011110010100111010001010"
"000011111001011111010000000010100100111000001101011010001001100000010100001010101001110100110000010000"
"010100000110100000101111111100001011000111110010100101110110011111101011110000000010001011001111101101"
},
};
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] ZINT_TESTUTIL_SANITIZEM_INIT;
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);
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 < ZINT_ERROR) {
printf(" /*%3d*/ { %s, %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(ret), symbol->errtxt, data[i].compare_previous, data[i].comment);
testUtilModulesPrint(symbol, " ", "\n");
printf(" },\n");
} else {
printf(" /*%3d*/ { %s, %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), symbol->errtxt, 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);
}
assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d strcmp(%s, %s) != 0\n",
i, symbol->errtxt, data[i].expected_errtxt);
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();
}
/*
* Check GS1_128-based and DBAR_EXP-based symbologies HRT
* See test_hrt() in test_rss.c and test_composite.c for DBAR other than DBAR_EXP-based
*/
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;
int compare_previous;
const char *expected;
const char *expected_content;
};
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
static const struct item data[] = {
/* 0*/ { BARCODE_GS1_128, -1, -1, "[01]12345678901234[20]12", "", ZINT_WARN_NONCOMPLIANT, 0, "(01)12345678901234(20)12", "" }, /* Incorrect check digit */
/* 1*/ { BARCODE_GS1_128, -1, -1, "^01123456789012342012", "", ZINT_WARN_NONCOMPLIANT, 1, "(01)12345678901234(20)12", "" }, /* Incorrect check digit */
/* 2*/ { BARCODE_GS1_128, -1, -1, "^0112345678901234^2012", "", ZINT_WARN_NONCOMPLIANT, 1, "(01)12345678901234(20)12", "" }, /* Incorrect check digit */
/* 3*/ { BARCODE_GS1_128, GS1RAW_MODE, -1, "01123456789012342012", "", ZINT_WARN_NONCOMPLIANT, 1, "(01)12345678901234(20)12", "" }, /* Incorrect check digit */
/* 4*/ { BARCODE_GS1_128, GS1RAW_MODE, -1, "\03501123456789012342012", "", ZINT_WARN_NONCOMPLIANT, 1, "(01)12345678901234(20)12", "" }, /* Incorrect check digit */
/* 5*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, -1, "[01]12345678901234[20]12", "", 0, 0, "(01)12345678901234(20)12", "" },
/* 6*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, -1, "^01123456789012342012", "", 0, 1, "(01)12345678901234(20)12", "" },
/* 7*/ { BARCODE_GS1_128, GS1NOCHECK_MODE | GS1RAW_MODE, -1, "01123456789012342012", "", 0, 1, "(01)12345678901234(20)12", "" },
/* 8*/ { BARCODE_GS1_128, -1, BARCODE_CONTENT_SEGS, "[01]12345678901234[20]12", "", ZINT_WARN_NONCOMPLIANT, 0, "(01)12345678901234(20)12", "01123456789012342012" },
/* 9*/ { BARCODE_GS1_128, -1, BARCODE_CONTENT_SEGS, "^01123456789012342012", "", ZINT_WARN_NONCOMPLIANT, 1, "(01)12345678901234(20)12", "01123456789012342012" },
/* 10*/ { BARCODE_GS1_128, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "01123456789012342012", "", ZINT_WARN_NONCOMPLIANT, 1, "(01)12345678901234(20)12", "01123456789012342012" },
/* 11*/ { BARCODE_GS1_128, -1, -1, "[01]12345678901231[20]12", "", 0, 0, "(01)12345678901231(20)12", "" },
/* 12*/ { BARCODE_GS1_128, -1, -1, "[01]12345678901231[10]12[20]AB", "", ZINT_WARN_NONCOMPLIANT, 0, "(01)12345678901231(10)12(20)AB", "" }, /* AI (20) should be 2 nos. */
/* 13*/ { BARCODE_GS1_128, -1, -1, "^01123456789012311012^20AB", "", ZINT_WARN_NONCOMPLIANT, 1, "(01)12345678901231(10)12(20)AB", "" }, /* AI (20) should be 2 nos. */
/* 14*/ { BARCODE_GS1_128, GS1RAW_MODE, -1, "01123456789012311012\03520AB", "", ZINT_WARN_NONCOMPLIANT, 1, "(01)12345678901231(10)12(20)AB", "" }, /* AI (20) should be 2 nos. */
/* 15*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, -1, "[01]12345678901231[10]12[20]AB", "", 0, 0, "(01)12345678901231(10)12(20)AB", "" },
/* 16*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, -1, "^01123456789012311012^20AB", "", 0, 1, "(01)12345678901231(10)12(20)AB", "" }, /* AI (20) should be 2 nos. */
/* 17*/ { BARCODE_GS1_128, GS1NOCHECK_MODE | GS1RAW_MODE, -1, "^01123456789012311012^20AB", "", 0, 1, "(01)12345678901231(10)12(20)AB", "" }, /* AI (20) should be 2 nos. */
/* 18*/ { BARCODE_GS1_128, -1, -1, "[01]12345678901231[10]AB[20]12", "", 0, 0, "(01)12345678901231(10)AB(20)12", "" },
/* 19*/ { BARCODE_GS1_128, -1, -1, "[91]ABCDEF]GH", "", ZINT_WARN_NONCOMPLIANT, 0, "(91)ABCDEF]GH", "" }, /* Invalid CSET 82 character */
/* 20*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, -1, "[91]ABCDEF]GH", "", 0, 0, "(91)ABCDEF]GH", "" },
/* 21*/ { BARCODE_GS1_128, -1, BARCODE_CONTENT_SEGS, "[91]ABCDEF]GH", "", ZINT_WARN_NONCOMPLIANT, 0, "(91)ABCDEF]GH", "91ABCDEF]GH" },
/* 22*/ { BARCODE_GS1_128, -1, -1, "[91]ABCDEF)GH", "", 0, 0, "(91)ABCDEF)GH", "" },
/* 23*/ { BARCODE_GS1_128, -1, BARCODE_CONTENT_SEGS, "[91]ABCDEF)GH", "", 0, 0, "(91)ABCDEF)GH", "91ABCDEF)GH" },
/* 24*/ { BARCODE_GS1_128, -1, -1, "[91]ABCDEF(GH", "", 0, 0, "(91)ABCDEF(GH", "" },
/* 25*/ { BARCODE_GS1_128, -1, BARCODE_CONTENT_SEGS, "[91]ABCDEF(GH", "", 0, 0, "(91)ABCDEF(GH", "91ABCDEF(GH" },
/* 26*/ { BARCODE_GS1_128, -1, -1, "[91]ABCDE(20)12", "", 0, 0, "(91)ABCDE(20)12", "" },
/* 27*/ { BARCODE_GS1_128, -1, BARCODE_CONTENT_SEGS, "[91]ABCDE(20)12", "", 0, 0, "(91)ABCDE(20)12", "91ABCDE(20)12" },
/* 28*/ { BARCODE_GS1_128, -1, -1, "[90]1234[91]ABCDE(20)12", "", 0, 0, "(90)1234(91)ABCDE(20)12", "" },
/* 29*/ { BARCODE_GS1_128, -1, BARCODE_CONTENT_SEGS, "[90]1234[91]ABCDE(20)12", "", 0, 0, "(90)1234(91)ABCDE(20)12", "901234\03591ABCDE(20)12" },
/* 30*/ { BARCODE_GS1_128, -1, -1, "[90]1234[91]ABCDE(20)12[20]12", "", 0, 0, "(90)1234(91)ABCDE(20)12(20)12", "" },
/* 31*/ { BARCODE_GS1_128, -1, -1, "^901234^91ABCDE(20)12^2012", "", 0, 1, "(90)1234(91)ABCDE(20)12(20)12", "" },
/* 32*/ { BARCODE_GS1_128, GS1RAW_MODE, -1, "901234\03591ABCDE(20)12\0352012", "", 0, 1, "(90)1234(91)ABCDE(20)12(20)12", "" },
/* 33*/ { BARCODE_GS1_128, -1, BARCODE_CONTENT_SEGS, "[90]1234[91]ABCDE(20)12[20]12", "", 0, 0, "(90)1234(91)ABCDE(20)12(20)12", "901234\03591ABCDE(20)12\0352012" },
/* 34*/ { BARCODE_GS1_128, -1, BARCODE_CONTENT_SEGS, "^901234^91ABCDE(20)12^2012", "", 0, 1, "(90)1234(91)ABCDE(20)12(20)12", "901234\03591ABCDE(20)12\0352012" },
/* 35*/ { BARCODE_GS1_128, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "901234\03591ABCDE(20)12\0352012", "", 0, 1, "(90)1234(91)ABCDE(20)12(20)12", "901234\03591ABCDE(20)12\0352012" },
/* 36*/ { BARCODE_GS1_128, GS1PARENS_MODE, -1, "(91)ABCDEF]GH", "", ZINT_WARN_NONCOMPLIANT, 0, "(91)ABCDEF]GH", "" }, /* Invalid CSET 82 character */
/* 37*/ { BARCODE_GS1_128, GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(91)ABCDEF]GH", "", 0, 0, "(91)ABCDEF]GH", "" },
/* 38*/ { BARCODE_GS1_128, GS1PARENS_MODE, BARCODE_CONTENT_SEGS, "(91)ABCDEF]GH", "", ZINT_WARN_NONCOMPLIANT, 0, "(91)ABCDEF]GH", "91ABCDEF]GH" },
/* 39*/ { BARCODE_GS1_128, GS1PARENS_MODE, -1, "(91)ABCDEF)GH", "", 0, 0, "(91)ABCDEF)GH", "" },
/* 40*/ { BARCODE_GS1_128, GS1PARENS_MODE, BARCODE_CONTENT_SEGS, "(91)ABCDEF)GH", "", 0, 0, "(91)ABCDEF)GH", "91ABCDEF)GH" },
/* 41*/ { BARCODE_GS1_128, GS1PARENS_MODE, -1, "(91)ABCDE[FGH", "", ZINT_WARN_NONCOMPLIANT, 0, "(91)ABCDE[FGH", "" }, /* Invalid CSET 82 character */
/* 42*/ { BARCODE_GS1_128, GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(91)ABCDE[FGH", "", 0, 0, "(91)ABCDE[FGH", "" },
/* 43*/ { BARCODE_GS1_128, GS1PARENS_MODE, BARCODE_CONTENT_SEGS, "(91)ABCDE[FGH", "", ZINT_WARN_NONCOMPLIANT, 0, "(91)ABCDE[FGH", "91ABCDE[FGH" },
/* 44*/ { BARCODE_GS1_128, GS1PARENS_MODE, -1, "(91)ABCDE[92]GH", "", ZINT_WARN_NONCOMPLIANT, 0, "(91)ABCDE[92]GH", "" }, /* Invalid CSET 82 character */
/* 45*/ { BARCODE_GS1_128, GS1PARENS_MODE | GS1NOCHECK_MODE, -1, "(91)ABCDE[92]GH", "", 0, 0, "(91)ABCDE[92]GH", "" },
/* 46*/ { BARCODE_GS1_128, GS1PARENS_MODE, BARCODE_CONTENT_SEGS, "(91)ABCDE[92]GH", "", ZINT_WARN_NONCOMPLIANT, 0, "(91)ABCDE[92]GH", "91ABCDE[92]GH" },
/* 47*/ { BARCODE_GS1_128_CC, -1, -1, "[01]12345678901234[20]12", "[21]12345", ZINT_WARN_NONCOMPLIANT, 0, "(01)12345678901234(20)12", "" }, /* Incorrect check digit */
/* 48*/ { BARCODE_GS1_128, -1, -1, "[91]ABCDEF)GH", "", 0, 0, "(91)ABCDEF)GH", "" },
/* 49*/ { BARCODE_GS1_128, -1, BARCODE_CONTENT_SEGS, "[91]ABCDEF)GH", "", 0, 0, "(91)ABCDEF)GH", "91ABCDEF)GH" },
/* 50*/ { BARCODE_GS1_128, GS1PARENS_MODE, -1, "(91)ABCDEF\\)GH", "", 0, 0, "(91)ABCDEF\\)GH", "" }, /* Escaped parens now work without ESCAPE_MODE & now kept in HRT */
/* 51*/ { BARCODE_GS1_128, ESCAPE_MODE | GS1PARENS_MODE, -1, "(91)ABCDEF\\)GH", "", 0, 0, "(91)ABCDEF\\)GH", "" }, /* Escaped parens now kept in HRT */
/* 52*/ { BARCODE_GS1_128, GS1PARENS_MODE, BARCODE_CONTENT_SEGS, "(91)ABCDEF\\)GH", "", 0, 0, "(91)ABCDEF\\)GH", "91ABCDEF)GH" },
/* 53*/ { BARCODE_GS1_128, ESCAPE_MODE | GS1PARENS_MODE, BARCODE_CONTENT_SEGS, "(91)ABCDEF\\)GH", "", 0, 0, "(91)ABCDEF\\)GH", "91ABCDEF)GH" },
/* 54*/ { BARCODE_GS1_128, -1, -1, "[91]ABCDEF(GH", "", 0, 0, "(91)ABCDEF(GH", "" },
/* 55*/ { BARCODE_GS1_128, -1, -1, "^91ABCDEF(GH", "", 0, 1, "(91)ABCDEF(GH", "" },
/* 56*/ { BARCODE_GS1_128, GS1RAW_MODE, -1, "91ABCDEF(GH", "", 0, 1, "(91)ABCDEF(GH", "" },
/* 57*/ { BARCODE_GS1_128, -1, BARCODE_CONTENT_SEGS, "[91]ABCDEF(GH", "", 0, 0, "(91)ABCDEF(GH", "91ABCDEF(GH" },
/* 58*/ { BARCODE_GS1_128, -1, BARCODE_CONTENT_SEGS, "^91ABCDEF(GH", "", 0, 1, "(91)ABCDEF(GH", "91ABCDEF(GH" },
/* 59*/ { BARCODE_GS1_128, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "91ABCDEF(GH", "", 0, 1, "(91)ABCDEF(GH", "91ABCDEF(GH" },
/* 60*/ { BARCODE_GS1_128, GS1PARENS_MODE, -1, "(91)ABCDEF\\(GH", "", 0, 0, "(91)ABCDEF\\(GH", "" }, /* Escaped parens now work without ESCAPE_MODE & now kept in HRT */
/* 61*/ { BARCODE_GS1_128, GS1PARENS_MODE, -1, "^91ABCDEF\\(GH", "", ZINT_WARN_NONCOMPLIANT, 0, "(91)ABCDEF\\(GH", "" }, /* Escaped parens in caret mode are encoded as "\(", & "\" invalid CSET 82 character */
/* 62*/ { BARCODE_GS1_128, GS1PARENS_MODE | GS1RAW_MODE, -1, "91ABCDEF\\(GH", "", ZINT_WARN_NONCOMPLIANT, 1, "(91)ABCDEF\\(GH", "" }, /* Escaped parens in raw mode are encoded as "\(", & "\" invalid CSET 82 character */
/* 63*/ { BARCODE_GS1_128, ESCAPE_MODE | GS1PARENS_MODE, -1, "(91)ABCDEF\\(GH", "", 0, 0, "(91)ABCDEF\\(GH", "" },
/* 64*/ { BARCODE_GS1_128, ESCAPE_MODE | GS1PARENS_MODE, -1, "^91ABCDEF\\(GH", "", ZINT_WARN_NONCOMPLIANT, 0, "(91)ABCDEF\\(GH", "" }, /* Invalid CSET 82 character */
/* 65*/ { BARCODE_GS1_128, ESCAPE_MODE | GS1PARENS_MODE | GS1RAW_MODE, -1, "91ABCDEF\\(GH", "", ZINT_WARN_NONCOMPLIANT, 1, "(91)ABCDEF\\(GH", "" }, /* Invalid CSET 82 character */
/* 66*/ { BARCODE_GS1_128, GS1PARENS_MODE, BARCODE_CONTENT_SEGS, "(91)ABCDEF\\(GH", "", 0, 0, "(91)ABCDEF\\(GH", "91ABCDEF(GH" },
/* 67*/ { BARCODE_GS1_128, ESCAPE_MODE | GS1PARENS_MODE, BARCODE_CONTENT_SEGS, "(91)ABCDEF\\(GH", "", 0, 0, "(91)ABCDEF\\(GH", "91ABCDEF(GH" }, /* "(" encoded */
/* 68*/ { BARCODE_GS1_128, ESCAPE_MODE | GS1PARENS_MODE, BARCODE_CONTENT_SEGS, "^91ABCDEF\\(GH", "", ZINT_WARN_NONCOMPLIANT, 0, "(91)ABCDEF\\(GH", "91ABCDEF\\(GH" }, /* Invalid CSET 82 character */
/* 69*/ { BARCODE_GS1_128, ESCAPE_MODE | GS1PARENS_MODE | GS1RAW_MODE, BARCODE_CONTENT_SEGS, "91ABCDEF\\(GH", "", ZINT_WARN_NONCOMPLIANT, 1, "(91)ABCDEF\\(GH", "91ABCDEF\\(GH" }, /* "\(" encoded */
/* 70*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, -1, "[01]12345678901234[20]12", "[21]12345", 0, 0, "(01)12345678901234(20)12", "" },
/* 71*/ { BARCODE_GS1_128_CC, -1, BARCODE_CONTENT_SEGS, "[01]12345678901234[20]12", "[21]12345", ZINT_WARN_NONCOMPLIANT, 0, "(01)12345678901234(20)12", "01123456789012342012|2112345" }, /* Incorrect check digit */
/* 72*/ { BARCODE_GS1_128_CC, -1, BARCODE_CONTENT_SEGS, "[01]12345678901231[20]12", "[21]12345", 0, 0, "(01)12345678901231(20)12", "01123456789012312012|2112345" },
/* 73*/ { BARCODE_GS1_128_CC, -1, BARCODE_CONTENT_SEGS, "^01123456789012312012", "^2112345", 0, 1, "(01)12345678901231(20)12", "01123456789012312012|2112345" },
/* 74*/ { BARCODE_GS1_128_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "01123456789012312012", "2112345", 0, 1, "(01)12345678901231(20)12", "01123456789012312012|2112345" },
/* 75*/ { BARCODE_GS1_128_CC, -1, BARCODE_CONTENT_SEGS, "^01123456789012312012", "[21]12345", 0, 1, "(01)12345678901231(20)12", "01123456789012312012|2112345" }, /* Can have caret linear, bracket CC */
/* 76*/ { BARCODE_GS1_128_CC, -1, BARCODE_CONTENT_SEGS, "[01]12345678901231[20]12", "^2112345", 0, 1, "(01)12345678901231(20)12", "01123456789012312012|2112345" }, /* Can have bracket linear, caret CC */
/* 77*/ { BARCODE_GS1_128_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "01123456789012312012", "[21]12345", 0, 1, "(01)12345678901231(20)12", "01123456789012312012|2112345" }, /* Can have raw linear, bracket CC */
/* 78*/ { BARCODE_GS1_128_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "[01]12345678901231[20]12", "2112345", 0, 1, "(01)12345678901231(20)12", "01123456789012312012|2112345" }, /* Can have bracket linear, raw CC */
/* 79*/ { BARCODE_GS1_128_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "01123456789012312012", "^2112345", 0, 1, "(01)12345678901231(20)12", "01123456789012312012|2112345" }, /* Can have raw linear, caret CC */
/* 80*/ { BARCODE_GS1_128_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "^01123456789012312012", "2112345", 0, 1, "(01)12345678901231(20)12", "01123456789012312012|2112345" }, /* Can have caret linear, raw CC */
/* 81*/ { BARCODE_GS1_128_CC, -1, -1, "[01]12345678901231[20]12", "[21]12345", 0, 0, "(01)12345678901231(20)12", "" },
/* 82*/ { BARCODE_GS1_128_CC, -1, -1, "[01]12345678901231[10]12[20]AB", "[21]12345", ZINT_WARN_NONCOMPLIANT, 0, "(01)12345678901231(10)12(20)AB", "" }, /* AI (20) should be 2 nos. */
/* 83*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, -1, "[01]12345678901231[10]12[20]AB", "[21]12345", 0, 0, "(01)12345678901231(10)12(20)AB", "" },
/* 84*/ { BARCODE_GS1_128_CC, -1, -1, "[01]12345678901231[10]AB[20]12", "[21]12345", 0, 0, "(01)12345678901231(10)AB(20)12", "" },
/* 85*/ { BARCODE_GS1_128_CC, -1, BARCODE_CONTENT_SEGS, "[01]12345678901231[10]AB[20]12", "[21]12345", 0, 0, "(01)12345678901231(10)AB(20)12", "011234567890123110AB\0352012|2112345" },
/* 86*/ { BARCODE_GS1_128_CC, -1, -1, "[01]12345678901231[10]AB[20]12", "[30]1234567A", ZINT_WARN_NONCOMPLIANT, 0, "(01)12345678901231(10)AB(20)12", "" },
/* 87*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, -1, "[01]12345678901231[10]AB[20]12", "[30]1234567A", 0, 0, "(01)12345678901231(10)AB(20)12", "" },
/* 88*/ { BARCODE_EAN14, -1, -1, "1234567890123", "", 0, 0, "(01)12345678901231", "" },
/* 89*/ { BARCODE_EAN14, -1, BARCODE_CONTENT_SEGS, "1234567890123", "", 0, 0, "(01)12345678901231", "0112345678901231" },
/* 90*/ { BARCODE_EAN14, -1, -1, "1234", "", 0, 0, "(01)00000000012348", "" },
/* 91*/ { BARCODE_EAN14, -1, BARCODE_CONTENT_SEGS, "1234", "", 0, 0, "(01)00000000012348", "0100000000012348" },
/* 92*/ { BARCODE_EAN14, -1, -1, "12345", "", 0, 0, "(01)00000000123457", "" },
/* 93*/ { BARCODE_EAN14, -1, -1, "12340", "", 0, 0, "(01)00000000123402", "" },
/* 94*/ { BARCODE_NVE18, -1, -1, "12345678901234567", "", 0, 0, "(00)123456789012345675", "" },
/* 95*/ { BARCODE_NVE18, -1, BARCODE_CONTENT_SEGS, "12345678901234567", "", 0, 0, "(00)123456789012345675", "00123456789012345675" },
/* 96*/ { BARCODE_NVE18, -1, -1, "1234", "", 0, 0, "(00)000000000000012348", "" },
/* 97*/ { BARCODE_NVE18, -1, BARCODE_CONTENT_SEGS, "1234", "", 0, 0, "(00)000000000000012348", "00000000000000012348" },
/* 98*/ { BARCODE_NVE18, -1, -1, "12345", "", 0, 0, "(00)000000000000123457", "" },
/* 99*/ { BARCODE_NVE18, -1, -1, "12340", "", 0, 0, "(00)000000000000123402", "" },
/*100*/ { BARCODE_DBAR_EXP, -1, -1, "[01]12345678901234[20]12", "", ZINT_WARN_NONCOMPLIANT, 0, "(01)12345678901234(20)12", "" }, /* Incorrect check digit */
/*101*/ { BARCODE_DBAR_EXP, -1, -1, "^01123456789012342012", "", ZINT_WARN_NONCOMPLIANT, 1, "(01)12345678901234(20)12", "" }, /* Incorrect check digit */
/*102*/ { BARCODE_DBAR_EXP, GS1RAW_MODE, -1, "01123456789012342012", "", ZINT_WARN_NONCOMPLIANT, 1, "(01)12345678901234(20)12", "" }, /* Incorrect check digit */
/*103*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, -1, "[01]12345678901234[20]12", "", 0, 0, "(01)12345678901234(20)12", "" },
/*104*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, -1, "^01123456789012342012", "", 0, 1, "(01)12345678901234(20)12", "" },
/*105*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE | GS1RAW_MODE, -1, "01123456789012342012", "", 0, 1, "(01)12345678901234(20)12", "" },
/*106*/ { BARCODE_DBAR_EXP, -1, BARCODE_CONTENT_SEGS, "[01]12345678901234[20]12", "", ZINT_WARN_NONCOMPLIANT, 0, "(01)12345678901234(20)12", "01123456789012342012" },
/*107*/ { BARCODE_DBAR_EXP, -1, -1, "[01]12345678901231[20]12", "", 0, 0, "(01)12345678901231(20)12", "" },
/*108*/ { BARCODE_DBAR_EXP, -1, BARCODE_CONTENT_SEGS, "[01]12345678901231[20]12", "", 0, 0, "(01)12345678901231(20)12", "01123456789012312012" },
/*109*/ { BARCODE_DBAR_EXP, -1, -1, "[01]12345678901231[10]12[20]AB", "", ZINT_WARN_NONCOMPLIANT, 0, "(01)12345678901231(10)12(20)AB", "" }, /* AI (20) should be 2 nos. */
/*110*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, -1, "[01]12345678901231[10]12[20]AB", "", 0, 0, "(01)12345678901231(10)12(20)AB", "" },
/*111*/ { BARCODE_DBAR_EXP, -1, BARCODE_CONTENT_SEGS, "[01]12345678901231[10]12[20]AB", "", ZINT_WARN_NONCOMPLIANT, 0, "(01)12345678901231(10)12(20)AB", "01123456789012311012\03520AB" },
/*112*/ { BARCODE_DBAR_EXP, -1, -1, "[01]12345678901231[10]AB[20]12", "", 0, 0, "(01)12345678901231(10)AB(20)12", "" },
/*113*/ { BARCODE_DBAR_EXP, -1, BARCODE_CONTENT_SEGS, "[01]12345678901231[10]AB[20]12", "", 0, 0, "(01)12345678901231(10)AB(20)12", "011234567890123110AB\0352012" },
/*114*/ { BARCODE_DBAR_EXP, -1, -1, "[01]12345678901231[10]AB[20]12[90]ABC(2012", "", 0, 0, "(01)12345678901231(10)AB(20)12(90)ABC(2012", "" },
/*115*/ { BARCODE_DBAR_EXP, -1, BARCODE_CONTENT_SEGS, "[01]12345678901231[10]AB[20]12[90]ABC(2012", "", 0, 0, "(01)12345678901231(10)AB(20)12(90)ABC(2012", "011234567890123110AB\035201290ABC(2012" },
/*116*/ { BARCODE_DBAR_EXP, -1, -1, "[01]12345678901231[10]AB[20]12[90]ABC20)12", "", 0, 0, "(01)12345678901231(10)AB(20)12(90)ABC20)12", "" },
/*117*/ { BARCODE_DBAR_EXP, -1, BARCODE_CONTENT_SEGS, "[01]12345678901231[10]AB[20]12[90]ABC20)12", "", 0, 0, "(01)12345678901231(10)AB(20)12(90)ABC20)12", "011234567890123110AB\035201290ABC20)12" },
/*118*/ { BARCODE_DBAR_EXP, -1, -1, "[01]12345678901231[10]AB[20]12[90]ABC(20)12", "", 0, 0, "(01)12345678901231(10)AB(20)12(90)ABC(20)12", "" },
/*119*/ { BARCODE_DBAR_EXP, -1, BARCODE_CONTENT_SEGS, "[01]12345678901231[10]AB[20]12[90]ABC(20)12", "", 0, 0, "(01)12345678901231(10)AB(20)12(90)ABC(20)12", "011234567890123110AB\035201290ABC(20)12" },
/*120*/ { BARCODE_DBAR_EXP, -1, -1, "[01]12345678901231[10]AB[20]12[90]ABC(20)12[91]12(", "", 0, 0, "(01)12345678901231(10)AB(20)12(90)ABC(20)12(91)12(" , ""},
/*121*/ { BARCODE_DBAR_EXP, -1, -1, "^011234567890123110AB^201290ABC(20)12^9112(", "", 0, 1, "(01)12345678901231(10)AB(20)12(90)ABC(20)12(91)12(" , ""},
/*122*/ { BARCODE_DBAR_EXP, GS1RAW_MODE, -1, "011234567890123110AB\035201290ABC(20)12\0359112(", "", 0, 1, "(01)12345678901231(10)AB(20)12(90)ABC(20)12(91)12(" , ""},
/*123*/ { BARCODE_DBAR_EXP, -1, BARCODE_CONTENT_SEGS, "[01]12345678901231[10]AB[20]12[90]ABC(20)12[91]12(", "", 0, 0, "(01)12345678901231(10)AB(20)12(90)ABC(20)12(91)12(" , "011234567890123110AB\035201290ABC(20)12\0359112(" },
/*124*/ { BARCODE_DBAR_EXP, -1, BARCODE_CONTENT_SEGS, "^011234567890123110AB^201290ABC(20)12^9112(", "", 0, 1, "(01)12345678901231(10)AB(20)12(90)ABC(20)12(91)12(" , "011234567890123110AB\035201290ABC(20)12\0359112(" },
/*125*/ { BARCODE_DBAR_EXP, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "011234567890123110AB\035201290ABC(20)12\0359112(", "", 0, 1, "(01)12345678901231(10)AB(20)12(90)ABC(20)12(91)12(" , "011234567890123110AB\035201290ABC(20)12\0359112(" },
/*126*/ { BARCODE_DBAR_EXP_CC, -1, -1, "[01]12345678901234", "[21]12345", ZINT_WARN_NONCOMPLIANT, 0, "(01)12345678901234", "" },
/*127*/ { BARCODE_DBAR_EXP_CC, -1, -1, "^0112345678901234", "^2112345", ZINT_WARN_NONCOMPLIANT, 1, "(01)12345678901234", "" },
/*128*/ { BARCODE_DBAR_EXP_CC, GS1RAW_MODE, -1, "0112345678901234", "2112345", ZINT_WARN_NONCOMPLIANT, 1, "(01)12345678901234", "" },
/*129*/ { BARCODE_DBAR_EXP_CC, -1, BARCODE_CONTENT_SEGS, "[01]12345678901234", "[21]12345", ZINT_WARN_NONCOMPLIANT, 0, "(01)12345678901234", "0112345678901234|2112345" },
/*130*/ { BARCODE_DBAR_EXP_CC, -1, BARCODE_CONTENT_SEGS, "^0112345678901234", "^2112345", ZINT_WARN_NONCOMPLIANT, 1, "(01)12345678901234", "0112345678901234|2112345" },
/*131*/ { BARCODE_DBAR_EXP_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "0112345678901234", "2112345", ZINT_WARN_NONCOMPLIANT, 1, "(01)12345678901234", "0112345678901234|2112345" },
/*132*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, -1, "[01]12345678901234", "[21]12345", 0, 0, "(01)12345678901234", "" },
/*133*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, -1, "^0112345678901234", "^2112345", 0, 1, "(01)12345678901234", "" },
/*134*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE | GS1RAW_MODE, -1, "0112345678901234", "2112345", 0, 1, "(01)12345678901234", "" },
/*135*/ { BARCODE_DBAR_EXP_CC, -1, -1, "[01]12345678901231", "[21]12345", 0, 0, "(01)12345678901231", "" },
/*136*/ { BARCODE_DBAR_EXP_CC, -1, -1, "[01]12345678901231[20]12[21]12345", "[21]12345", 0, 0, "(01)12345678901231(20)12(21)12345", "" },
/*137*/ { BARCODE_DBAR_EXP_CC, -1, BARCODE_CONTENT_SEGS, "[01]12345678901231[20]12[21]12345", "[21]12345", 0, 0, "(01)12345678901231(20)12(21)12345", "011234567890123120122112345|2112345" },
/*138*/ { BARCODE_DBAR_EXP_CC, -1, -1, "[01]12345678901231[10](", "[21]123()", 0, 0, "(01)12345678901231(10)(", "" },
/*139*/ { BARCODE_DBAR_EXP_CC, -1, BARCODE_CONTENT_SEGS, "[01]12345678901231[10](", "[21]123()", 0, 0, "(01)12345678901231(10)(", "011234567890123110(|21123()" },
/*140*/ { BARCODE_DBAR_EXP_CC, GS1PARENS_MODE, -1, "(01)12345678901231(10)\\(", "(21)123\\(\\)", 0, 0, "(01)12345678901231(10)\\(", "" }, /* Escaped parens now work without ESCAPE_MODE & now kept in HRT */
/*141*/ { BARCODE_DBAR_EXP_CC, ESCAPE_MODE | GS1PARENS_MODE, -1, "(01)12345678901231(10)\\(", "(21)123\\(\\)", 0, 0, "(01)12345678901231(10)\\(", "" },
/*142*/ { BARCODE_DBAR_EXP_CC, GS1PARENS_MODE, BARCODE_CONTENT_SEGS, "(01)12345678901231(10)\\(", "(21)123\\(\\)", 0, 0, "(01)12345678901231(10)\\(", "011234567890123110(|21123()" },
/*143*/ { BARCODE_DBAR_EXP_CC, ESCAPE_MODE | GS1PARENS_MODE, BARCODE_CONTENT_SEGS, "(01)12345678901231(10)\\(", "(21)123\\(\\)", 0, 0, "(01)12345678901231(10)\\(", "011234567890123110(|21123()" },
/*144*/ { BARCODE_DBAR_EXPSTK, -1, -1, "[01]12345678901234[20]12", "", ZINT_WARN_NONCOMPLIANT, 0, "", "" },
/*145*/ { BARCODE_DBAR_EXPSTK, -1, -1, "^01123456789012342012", "", ZINT_WARN_NONCOMPLIANT, 1, "", "" },
/*146*/ { BARCODE_DBAR_EXPSTK, GS1RAW_MODE, -1, "01123456789012342012", "", ZINT_WARN_NONCOMPLIANT, 1, "", "" },
/*147*/ { BARCODE_DBAR_EXPSTK, GS1NOCHECK_MODE, -1, "[01]12345678901234[20]12", "", 0, 0, "", "" },
/*148*/ { BARCODE_DBAR_EXPSTK, GS1NOCHECK_MODE, -1, "^01123456789012342012", "", 0, 1, "", "" },
/*149*/ { BARCODE_DBAR_EXPSTK, GS1NOCHECK_MODE | GS1RAW_MODE, -1, "01123456789012342012", "", 0, 1, "", "" },
/*150*/ { BARCODE_DBAR_EXPSTK, -1, BARCODE_CONTENT_SEGS, "[01]12345678901234[20]12", "", ZINT_WARN_NONCOMPLIANT, 0, "", "01123456789012342012" },
/*151*/ { BARCODE_DBAR_EXPSTK, -1, BARCODE_CONTENT_SEGS, "^01123456789012342012", "", ZINT_WARN_NONCOMPLIANT, 1, "", "01123456789012342012" },
/*152*/ { BARCODE_DBAR_EXPSTK, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "01123456789012342012", "", ZINT_WARN_NONCOMPLIANT, 1, "", "01123456789012342012" },
/*153*/ { BARCODE_DBAR_EXPSTK, -1, -1, "[01]12345678901231[20]12", "", 0, 0, "", "" },
/*154*/ { BARCODE_DBAR_EXPSTK, -1, -1, "[01]12345678901231[10]AB[20]12[90]ABC20)12", "", 0, 0, "", "" },
/*155*/ { BARCODE_DBAR_EXPSTK, -1, BARCODE_CONTENT_SEGS, "[01]12345678901231[10]AB[20]12[90]ABC20)12", "", 0, 0, "", "011234567890123110AB\035201290ABC20)12" },
/*156*/ { BARCODE_DBAR_EXPSTK, GS1PARENS_MODE, -1, "(01)12345678901231(10)AB(20)12(90)ABC20\\)12", "", 0, 0, "", "" },
/*157*/ { BARCODE_DBAR_EXPSTK, ESCAPE_MODE | GS1PARENS_MODE, -1, "(01)12345678901231(10)AB(20)12(90)ABC20\\)12", "", 0, 0, "", "" },
/*158*/ { BARCODE_DBAR_EXPSTK, GS1PARENS_MODE, BARCODE_CONTENT_SEGS, "(01)12345678901231(10)AB(20)12(90)ABC20\\)12", "", 0, 0, "", "011234567890123110AB\035201290ABC20)12" },
/*159*/ { BARCODE_DBAR_EXPSTK, ESCAPE_MODE | GS1PARENS_MODE, BARCODE_CONTENT_SEGS, "(01)12345678901231(10)AB(20)12(90)ABC20\\)12", "", 0, 0, "", "011234567890123110AB\035201290ABC20)12" },
/*160*/ { BARCODE_DBAR_EXPSTK_CC, -1, -1, "[01]12345678901234[20]12", "[21]12345", ZINT_WARN_NONCOMPLIANT, 0, "" , ""},
/*161*/ { BARCODE_DBAR_EXPSTK_CC, -1, -1, "^01123456789012342012", "^2112345", ZINT_WARN_NONCOMPLIANT, 1, "" , ""},
/*162*/ { BARCODE_DBAR_EXPSTK_CC, GS1RAW_MODE, -1, "01123456789012342012", "2112345", ZINT_WARN_NONCOMPLIANT, 1, "" , ""},
/*163*/ { BARCODE_DBAR_EXPSTK_CC, GS1NOCHECK_MODE, -1, "[01]12345678901234[20]12", "[21]12345", 0, 0, "", "" },
/*164*/ { BARCODE_DBAR_EXPSTK_CC, GS1NOCHECK_MODE, -1, "^01123456789012342012", "^2112345", 0, 1, "", "" },
/*165*/ { BARCODE_DBAR_EXPSTK_CC, GS1NOCHECK_MODE | GS1RAW_MODE, -1, "01123456789012342012", "2112345", 0, 1, "", "" },
/*166*/ { BARCODE_DBAR_EXPSTK_CC, -1, BARCODE_CONTENT_SEGS, "[01]12345678901234[20]12", "[21]12345", ZINT_WARN_NONCOMPLIANT, 0, "", "01123456789012342012|2112345" },
/*167*/ { BARCODE_DBAR_EXPSTK_CC, -1, BARCODE_CONTENT_SEGS, "^01123456789012342012", "^2112345", ZINT_WARN_NONCOMPLIANT, 1, "", "01123456789012342012|2112345" },
/*168*/ { BARCODE_DBAR_EXPSTK_CC, GS1RAW_MODE, BARCODE_CONTENT_SEGS, "01123456789012342012", "2112345", ZINT_WARN_NONCOMPLIANT, 1, "", "01123456789012342012|2112345" },
/*169*/ { BARCODE_DBAR_EXPSTK_CC, -1, -1, "[01]12345678901231[20]12", "[21]12345", 0, 0, "", "" },
/*170*/ { BARCODE_DBAR_EXPSTK_CC, -1, -1, "[01]12345678901231[10]AB[20]12[90]ABC20)12", "[21]12345", 0, 0, "", "" },
/*171*/ { BARCODE_DBAR_EXPSTK_CC, -1, BARCODE_CONTENT_SEGS, "[01]12345678901231[10]AB[20]12[90]ABC20)12", "[21]12345", 0, 0, "", "011234567890123110AB\035201290ABC20)12|2112345" },
/*172*/ { BARCODE_DBAR_EXPSTK_CC, GS1PARENS_MODE, -1, "(01)12345678901231(10)AB(20)12(90)ABC20\\)12", "(21)12345", 0, 0, "", "" },
/*173*/ { BARCODE_DBAR_EXPSTK_CC, ESCAPE_MODE | GS1PARENS_MODE, -1, "(01)12345678901231(10)AB(20)12(90)ABC20\\)12", "(21)12345", 0, 0, "", "" },
/*174*/ { BARCODE_DBAR_EXPSTK_CC, GS1PARENS_MODE, -1, "(01)12345678901231(10)AB(20)12(90)ABC20\\)12", "(21)12345", 0, 0, "", "" },
/*175*/ { BARCODE_DBAR_EXPSTK_CC, ESCAPE_MODE | GS1PARENS_MODE, BARCODE_CONTENT_SEGS, "(01)12345678901231(10)AB(20)12(90)ABC20\\)12", "(21)12345", 0, 0, "", "011234567890123110AB\035201290ABC20)12|2112345" },
/*176*/ { BARCODE_DBAR_EXPSTK_CC, GS1PARENS_MODE, BARCODE_CONTENT_SEGS, "(01)12345678901231(10)AB(20)12(90)ABC20\\)12", "(21)12345", 0, 0, "", "011234567890123110AB\035201290ABC20)12|2112345" },
};
const int data_size = ARRAY_SIZE(data);
int i, length, ret;
struct zint_symbol *symbol = NULL;
int expected_length, expected_content_length;
struct zint_symbol *previous_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*/, data[i].output_options,
text, -1, debug);
expected_length = (int) strlen(data[i].expected);
expected_content_length = (int) strlen(data[i].expected_content);
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);
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);
}
assert_equal(symbol->text_length, expected_length, "i:%d text_length %d != expected_length %d (%s)\n",
i, symbol->text_length, expected_length, symbol->text);
assert_zero(strcmp((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(previous_symbol);
previous_symbol = symbol;
}
ZBarcode_Delete(previous_symbol);
testFinish();
}
#include "../gs1.h"
static void test_gs1_verify(const testCtx *const p_ctx) {
struct item {
int input_mode;
const char *data;
int ret;
const char *expected;
const char *expected_errtxt;
const char *comment;
};
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
static const struct item data[] = {
/* 0*/ { -1, "", ZINT_ERROR_INVALID_DATA, "", "252: Data does not start with an AI", "" },
/* 1*/ { -1, "[", ZINT_ERROR_INVALID_DATA, "", "253: Malformed AI in input (brackets don't match)", "" },
/* 2*/ { -1, "[]12", ZINT_ERROR_INVALID_DATA, "", "256: Invalid AI at position 1 in input (AI too short)", "" },
/* 3*/ { -1, "[1]12", ZINT_ERROR_INVALID_DATA, "", "256: Invalid AI at position 1 in input (AI too short)", "" },
/* 4*/ { -1, "[242]123456[1]12", ZINT_ERROR_INVALID_DATA, "", "256: Invalid AI at position 12 in input (AI too short)", "" },
/* 5*/ { -1, "[12345]12", ZINT_ERROR_INVALID_DATA, "", "255: Invalid AI at position 1 in input (AI too long)", "" },
/* 6*/ { -1, "[20]12[12345]12", ZINT_ERROR_INVALID_DATA, "", "255: Invalid AI at position 7 in input (AI too long)", "" },
/* 7*/ { -1, "[9999]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (9999) at position 1", "" },
/* 8*/ { -1, "[[01]]1234", ZINT_ERROR_INVALID_DATA, "", "254: Found nested brackets in input", "" },
/* 9*/ { -1, "[1A]12", ZINT_ERROR_INVALID_DATA, "", "257: Invalid AI at position 1 in input (non-numeric characters in AI)", "" },
/* 10*/ { -1, "^1A12", ZINT_ERROR_INVALID_DATA, "", "857: Invalid AI at position 2", "" },
/* 11*/ { GS1RAW_MODE, "1A12", ZINT_ERROR_INVALID_DATA, "", "857: Invalid AI at position 1", "" },
/* 12*/ { -1, "[10]", ZINT_ERROR_INVALID_DATA, "", "258: Empty data field for AI (10) at position 1", "" },
/* 13*/ { -1, "[90]\012", ZINT_ERROR_INVALID_DATA, "", "251: Control characters are not supported by GS1", "" },
/* 14*/ { -1, "^90\012", ZINT_ERROR_INVALID_DATA, "", "251: Control characters are not supported by GS1", "" },
/* 15*/ { GS1RAW_MODE, "90\012", ZINT_ERROR_INVALID_DATA, "", "251: Control characters are not supported by GS1", "" },
/* 16*/ { -1, "[90]\035", ZINT_ERROR_INVALID_DATA, "", "251: Control characters are not supported by GS1", "" },
/* 17*/ { -1, "^90\035", ZINT_ERROR_INVALID_DATA, "", "251: Control characters are not supported by GS1", "" },
/* 18*/ { GS1RAW_MODE, "90\035", ZINT_ERROR_INVALID_DATA, "", "858: Empty data field for AI (90) at position 1", "Treats as separator (& allowing redundant one at end)" },
/* 19*/ { GS1RAW_MODE, "901\035", 0, "901", "", "" },
/* 20*/ { -1, "[90]\177", ZINT_ERROR_INVALID_DATA, "", "263: DEL characters are not supported by GS1", "" },
/* 21*/ { -1, "^90\177", ZINT_ERROR_INVALID_DATA, "", "263: DEL characters are not supported by GS1", "" },
/* 22*/ { GS1RAW_MODE, "90\177", ZINT_ERROR_INVALID_DATA, "", "263: DEL characters are not supported by GS1", "" },
/* 23*/ { -1, "[90]\200", ZINT_ERROR_INVALID_DATA, "", "250: Extended ASCII characters are not supported by GS1", "" },
/* 24*/ { -1, "^90\200", ZINT_ERROR_INVALID_DATA, "", "250: Extended ASCII characters are not supported by GS1", "" },
/* 25*/ { GS1RAW_MODE, "90\200", ZINT_ERROR_INVALID_DATA, "", "250: Extended ASCII characters are not supported by GS1", "" },
/* 26*/ { -1, "[00]123456789012345678", ZINT_WARN_NONCOMPLIANT, "00123456789012345678", "261: AI (00) data position 18: Bad checksum '8', expected '5'", "" },
/* 27*/ { -1, "[00]123456789012345675", 0, "00123456789012345675", "", "" },
/* 28*/ { -1, "[00]12345678901234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (00) at position 1", "" },
/* 29*/ { -1, "[00]1234567890123456789", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (00) at position 1", "" },
/* 30*/ { -1, "[00]376104250021234569", 0, "00376104250021234569", "", "" },
/* 31*/ { -1, "[00]376104250021234568", ZINT_WARN_NONCOMPLIANT, "00376104250021234568", "261: AI (00) data position 18: Bad checksum '8', expected '9'", "" },
/* 32*/ { -1, "[01]12345678901234", ZINT_WARN_NONCOMPLIANT, "0112345678901234", "261: AI (01) data position 14: Bad checksum '4', expected '1'", "" },
/* 33*/ { -1, "[01]12345678901231", 0, "0112345678901231", "", "" },
/* 34*/ { -1, "[01]123456789012345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (01) at position 1", "" },
/* 35*/ { -1, "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "0212345678901234", "261: AI (02) data position 14: Bad checksum '4', expected '1'", "" },
/* 36*/ { -1, "[02]12345678901231", 0, "0212345678901231", "", "" },
/* 37*/ { -1, "[02]1234567890123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (02) at position 1", "" },
/* 38*/ { -1, "[03]12345678901234", ZINT_WARN_NONCOMPLIANT, "0312345678901234", "261: AI (03) data position 14: Bad checksum '4', expected '1'", "" },
/* 39*/ { -1, "[03]12345678901231", 0, "0312345678901231", "", "" },
/* 40*/ { -1, "[03]1234567890123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (03) at position 1", "" },
/* 41*/ { -1, "[04]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (04) at position 1", "" },
/* 42*/ { -1, "[05]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (05) at position 1", "" },
/* 43*/ { -1, "[06]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (06) at position 1", "" },
/* 44*/ { -1, "[07]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (07) at position 1", "" },
/* 45*/ { -1, "[08]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (08) at position 1", "" },
/* 46*/ { -1, "[09]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (09) at position 1", "" },
/* 47*/ { -1, "[10]ABCD123456", 0, "10ABCD123456", "", "" },
/* 48*/ { -1, "[10]123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (10) at position 1", "" },
/* 49*/ { -1, "[100]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (100) at position 1", "" },
/* 50*/ { -1, "[1000]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (1000) at position 1", "" },
/* 51*/ { -1, "[11]990102", 0, "11990102", "", "" },
/* 52*/ { -1, "[11]9901023", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (11) at position 1", "" },
/* 53*/ { -1, "[110]990102", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (110) at position 1", "" },
/* 54*/ { -1, "[1100]990102", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (1100) at position 1", "" },
/* 55*/ { -1, "[12]000100", 0, "12000100", "", "" },
/* 56*/ { -1, "[12]00010", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (12) at position 1", "" },
/* 57*/ { -1, "[120]000100", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (120) at position 1", "" },
/* 58*/ { -1, "[1200]000100", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (1200) at position 1", "" },
/* 59*/ { -1, "[13]991301", ZINT_WARN_NONCOMPLIANT, "13991301", "261: AI (13) data position 3: Invalid month '13'", "" },
/* 60*/ { -1, "[13]991201", 0, "13991201", "", "" },
/* 61*/ { -1, "[13]9913011", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (13) at position 1", "" },
/* 62*/ { -1, "[130]991301", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (130) at position 1", "" },
/* 63*/ { -1, "[1300]991301", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (1300) at position 1", "" },
/* 64*/ { -1, "[14]991201", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (14) at position 1", "" },
/* 65*/ { -1, "[140]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (140) at position 1", "" },
/* 66*/ { -1, "[1400]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (1400) at position 1", "" },
/* 67*/ { -1, "[15]021231", 0, "15021231", "", "" },
/* 68*/ { -1, "[15]02123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (15) at position 1", "" },
/* 69*/ { -1, "[150]021231", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (150) at position 1", "" },
/* 70*/ { -1, "[1500]021231", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (1500) at position 1", "" },
/* 71*/ { -1, "[16]000000", ZINT_WARN_NONCOMPLIANT, "16000000", "261: AI (16) data position 3: Invalid month '00'", "" },
/* 72*/ { -1, "[16]000100", 0, "16000100", "", "" },
/* 73*/ { -1, "[16]00000", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (16) at position 1", "" },
/* 74*/ { -1, "[160]000000", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (160) at position 1", "" },
/* 75*/ { -1, "[1600]000000", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (1600) at position 1", "" },
/* 76*/ { -1, "[17]010200", 0, "17010200", "", "" },
/* 77*/ { -1, "[17]0102000", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (17) at position 1", "" },
/* 78*/ { -1, "[170]010200", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (170) at position 1", "" },
/* 79*/ { -1, "[1700]010200", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (1700) at position 1", "" },
/* 80*/ { -1, "[18]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (18) at position 1", "" },
/* 81*/ { -1, "[180]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (180) at position 1", "" },
/* 82*/ { -1, "[1800]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (1800) at position 1", "" },
/* 83*/ { -1, "[19]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (19) at position 1", "" },
/* 84*/ { -1, "[190]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (190) at position 1", "" },
/* 85*/ { -1, "[1900]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (1900) at position 1", "" },
/* 86*/ { -1, "[20]12", 0, "2012", "", "" },
/* 87*/ { -1, "[20]1", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (20) at position 1", "" },
/* 88*/ { -1, "[200]12", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (200) at position 1", "" },
/* 89*/ { -1, "[2000]12", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2000) at position 1", "" },
/* 90*/ { -1, "[21]A12345678", 0, "21A12345678", "", "" },
/* 91*/ { -1, "[21]123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (21) at position 1", "" },
/* 92*/ { -1, "[210]A12345678", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (210) at position 1", "" },
/* 93*/ { -1, "[2100]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2100) at position 1", "" },
/* 94*/ { -1, "[22]abcdefghijklmnopqrst", 0, "22abcdefghijklmnopqrst", "", "" },
/* 95*/ { -1, "[22]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (22) at position 1", "" },
/* 96*/ { -1, "[220]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (220) at position 1", "" },
/* 97*/ { -1, "[2200]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2200) at position 1", "" },
/* 98*/ { -1, "[23]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (23) at position 1", "" },
/* 99*/ { -1, "^231234", ZINT_ERROR_INVALID_DATA, "", "856: Invalid AI (23) at position 2", "" },
/*100*/ { GS1RAW_MODE, "231234", ZINT_ERROR_INVALID_DATA, "", "856: Invalid AI (23) at position 1", "" },
/*101*/ { -1, "[230]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (230) at position 1", "" },
/*102*/ { -1, "[2300]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2300) at position 1", "" },
/*103*/ { -1, "[235]1abcdefghijklmnopqrstuvwxyz0", 0, "2351abcdefghijklmnopqrstuvwxyz0", "", "" },
/*104*/ { -1, "^2351abcdefghijklmnopqrstuvwxyz0", 0, "2351abcdefghijklmnopqrstuvwxyz0", "", "" },
/*105*/ { GS1RAW_MODE, "2351abcdefghijklmnopqrstuvwxyz0", 0, "2351abcdefghijklmnopqrstuvwxyz0", "", "" },
/*106*/ { -1, "[235]1abcdefghijklmnopqrstuvwxyz01", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (235) at position 1", "" },
/*107*/ { -1, "^2351abcdefghijklmnopqrstuvwxyz01", ZINT_ERROR_INVALID_DATA, "", "859: Invalid data length for AI (235) at position 2", "" },
/*108*/ { GS1RAW_MODE, "2351abcdefghijklmnopqrstuvwxyz01", ZINT_ERROR_INVALID_DATA, "", "859: Invalid data length for AI (235) at position 1", "" },
/*109*/ { -1, "[24]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (24) at position 1", "" },
/*110*/ { -1, "^241234", 0, "241234", "", "Interpreted as valid AI [241]" },
/*111*/ { GS1RAW_MODE, "241234", 0, "241234", "", "" },
/*112*/ { -1, "[240]abcdefghijklmnopqrstuvwxyz1234", 0, "240abcdefghijklmnopqrstuvwxyz1234", "", "" },
/*113*/ { -1, "[240]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (240) at position 1", "" },
/*114*/ { -1, "[2400]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2400) at position 1", "" },
/*115*/ { -1, "[241]abcdefghijklmnopqrstuvwxyz1234", 0, "241abcdefghijklmnopqrstuvwxyz1234", "", "" },
/*116*/ { -1, "[241]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (241) at position 1", "" },
/*117*/ { -1, "[2410]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2410) at position 1", "" },
/*118*/ { -1, "[242]12345", 0, "24212345", "", "" },
/*119*/ { -1, "[242]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (242) at position 1", "" },
/*120*/ { -1, "[2420]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2420) at position 1", "" },
/*121*/ { -1, "[243]abcdefghijklmnopqrst", 0, "243abcdefghijklmnopqrst", "", "" },
/*122*/ { -1, "[243]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (243) at position 1", "" },
/*123*/ { -1, "[2430]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2430) at position 1", "" },
/*124*/ { -1, "[244]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (244) at position 1", "" },
/*125*/ { -1, "[2440]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2440) at position 1", "" },
/*126*/ { -1, "[249]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (249) at position 1", "" },
/*127*/ { -1, "[2490]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2490) at position 1", "" },
/*128*/ { -1, "[25]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (25) at position 1", "" },
/*129*/ { -1, "[250]abcdefghijklmnopqrstuvwxyz1234", 0, "250abcdefghijklmnopqrstuvwxyz1234", "", "" },
/*130*/ { -1, "[250]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (250) at position 1", "" },
/*131*/ { -1, "[2500]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2500) at position 1", "" },
/*132*/ { -1, "[251]abcdefghijklmnopqrstuvwxyz1234", 0, "251abcdefghijklmnopqrstuvwxyz1234", "", "" },
/*133*/ { -1, "[251]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (251) at position 1", "" },
/*134*/ { -1, "[2510]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2510) at position 1", "" },
/*135*/ { -1, "[252]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (252) at position 1", "" },
/*136*/ { -1, "[2520]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2520) at position 1", "" },
/*137*/ { -1, "[253]131313131313", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (253) at position 1", "" },
/*138*/ { -1, "[253]1313131313134", ZINT_WARN_NONCOMPLIANT, "2531313131313134", "261: AI (253) data position 13: Bad checksum '4', expected '0'", "" },
/*139*/ { -1, "[253]1313131313130", 0, "2531313131313130", "", "" },
/*140*/ { -1, "[253]131313131313412345678901234567", ZINT_WARN_NONCOMPLIANT, "253131313131313412345678901234567", "261: AI (253) data position 13: Bad checksum '4', expected '0'", "" },
/*141*/ { -1, "[253]131313131313012345678901234567", 0, "253131313131313012345678901234567", "", "" },
/*142*/ { -1, "[253]1313131313134123456789012345678", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (253) at position 1", "" },
/*143*/ { -1, "[2530]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2530) at position 1", "" },
/*144*/ { -1, "[254]abcdefghijklmnopqrst", 0, "254abcdefghijklmnopqrst", "", "" },
/*145*/ { -1, "[254]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (254) at position 1", "" },
/*146*/ { -1, "[2540]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2540) at position 1", "" },
/*147*/ { -1, "[255]131313131313", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (255) at position 1", "" },
/*148*/ { -1, "[255]1313131313134", ZINT_WARN_NONCOMPLIANT, "2551313131313134", "261: AI (255) data position 13: Bad checksum '4', expected '0'", "" },
/*149*/ { -1, "[255]1313131313130", 0, "2551313131313130", "", "" },
/*150*/ { -1, "[255]1313131313134123456789012", ZINT_WARN_NONCOMPLIANT, "2551313131313134123456789012", "261: AI (255) data position 13: Bad checksum '4', expected '0'", "" },
/*151*/ { -1, "[255]1313131313130123456789012", 0, "2551313131313130123456789012", "", "" },
/*152*/ { -1, "[255]13131313131341234567890123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (255) at position 1", "" },
/*153*/ { -1, "[2550]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2550) at position 1", "" },
/*154*/ { -1, "[256]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (256) at position 1", "" },
/*155*/ { -1, "[2560]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2560) at position 1", "" },
/*156*/ { -1, "[259]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (259) at position 1", "" },
/*157*/ { -1, "[2590]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2590) at position 1", "" },
/*158*/ { -1, "[26]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (26) at position 1", "" },
/*159*/ { -1, "[260]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (260) at position 1", "" },
/*160*/ { -1, "[2600]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2600) at position 1", "" },
/*161*/ { -1, "[27]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (27) at position 1", "" },
/*162*/ { -1, "[270]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (270) at position 1", "" },
/*163*/ { -1, "[2700]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2700) at position 1", "" },
/*164*/ { -1, "[28]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (28) at position 1", "" },
/*165*/ { -1, "[280]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (280) at position 1", "" },
/*166*/ { -1, "[2800]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2800) at position 1", "" },
/*167*/ { -1, "[29]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (29) at position 1", "" },
/*168*/ { -1, "[290]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (290) at position 1", "" },
/*169*/ { -1, "[2900]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (2900) at position 1", "" },
/*170*/ { -1, "[30]12345678", 0, "3012345678", "", "" },
/*171*/ { -1, "[30]123456789", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (30) at position 1", "" },
/*172*/ { -1, "[300]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (300) at position 1", "" },
/*173*/ { -1, "[3000]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3000) at position 1", "" },
/*174*/ { -1, "[31]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (31) at position 1", "" },
/*175*/ { -1, "[310]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (310) at position 1", "" },
/*176*/ { -1, "[3100]123456", 0, "3100123456", "", "" },
/*177*/ { -1, "[3100]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3100) at position 1", "" },
/*178*/ { -1, "[3101]123456", 0, "3101123456", "", "" },
/*179*/ { -1, "[3101]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3101) at position 1", "" },
/*180*/ { -1, "[3105]123456", 0, "3105123456", "", "" },
/*181*/ { -1, "[3105]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3105) at position 1", "" },
/*182*/ { -1, "[3106]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3106) at position 1", "" },
/*183*/ { -1, "[3109]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3109) at position 1", "" },
/*184*/ { -1, "[3110]123456", 0, "3110123456", "", "" },
/*185*/ { -1, "[3110]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3110) at position 1", "" },
/*186*/ { -1, "[3115]123456", 0, "3115123456", "", "" },
/*187*/ { -1, "[3115]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3115) at position 1", "" },
/*188*/ { -1, "[3116]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3116) at position 1", "" },
/*189*/ { -1, "[3119]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3119) at position 1", "" },
/*190*/ { -1, "[3120]123456", 0, "3120123456", "", "" },
/*191*/ { -1, "[3120]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3120) at position 1", "" },
/*192*/ { -1, "[3125]123456", 0, "3125123456", "", "" },
/*193*/ { -1, "[3125]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3125) at position 1", "" },
/*194*/ { -1, "[3126]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3126) at position 1", "" },
/*195*/ { -1, "[3129]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3129) at position 1", "" },
/*196*/ { -1, "[3130]123456", 0, "3130123456", "", "" },
/*197*/ { -1, "[3130]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3130) at position 1", "" },
/*198*/ { -1, "[3135]123456", 0, "3135123456", "", "" },
/*199*/ { -1, "[3135]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3135) at position 1", "" },
/*200*/ { -1, "[3136]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3136) at position 1", "" },
/*201*/ { -1, "[3139]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3139) at position 1", "" },
/*202*/ { -1, "[3140]123456", 0, "3140123456", "", "" },
/*203*/ { -1, "[3140]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3140) at position 1", "" },
/*204*/ { -1, "[3145]123456", 0, "3145123456", "", "" },
/*205*/ { -1, "[3145]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3145) at position 1", "" },
/*206*/ { -1, "[3146]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3146) at position 1", "" },
/*207*/ { -1, "[3149]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3149) at position 1", "" },
/*208*/ { -1, "[3150]123456", 0, "3150123456", "", "" },
/*209*/ { -1, "[3150]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3150) at position 1", "" },
/*210*/ { -1, "[3155]123456", 0, "3155123456", "", "" },
/*211*/ { -1, "[3155]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3155) at position 1", "" },
/*212*/ { -1, "[3156]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3156) at position 1", "" },
/*213*/ { -1, "[3159]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3159) at position 1", "" },
/*214*/ { -1, "[3160]123456", 0, "3160123456", "", "" },
/*215*/ { -1, "[3160]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3160) at position 1", "" },
/*216*/ { -1, "[3165]123456", 0, "3165123456", "", "" },
/*217*/ { -1, "[3165]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3165) at position 1", "" },
/*218*/ { -1, "[3166]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3166) at position 1", "" },
/*219*/ { -1, "[3169]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3169) at position 1", "" },
/*220*/ { -1, "[3170]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3170) at position 1", "" },
/*221*/ { -1, "[3179]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3179) at position 1", "" },
/*222*/ { -1, "[3180]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3180) at position 1", "" },
/*223*/ { -1, "[3189]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3189) at position 1", "" },
/*224*/ { -1, "[3190]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3190) at position 1", "" },
/*225*/ { -1, "[3199]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3199) at position 1", "" },
/*226*/ { -1, "[32]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (32) at position 1", "" },
/*227*/ { -1, "[320]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (320) at position 1", "" },
/*228*/ { -1, "[3200]123456", 0, "3200123456", "", "" },
/*229*/ { -1, "[3200]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3200) at position 1", "" },
/*230*/ { -1, "[3205]123456", 0, "3205123456", "", "" },
/*231*/ { -1, "[3205]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3205) at position 1", "" },
/*232*/ { -1, "[3206]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3206) at position 1", "" },
/*233*/ { -1, "[3209]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3209) at position 1", "" },
/*234*/ { -1, "[3210]123456", 0, "3210123456", "", "" },
/*235*/ { -1, "[3210]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3210) at position 1", "" },
/*236*/ { -1, "[3215]123456", 0, "3215123456", "", "" },
/*237*/ { -1, "[3215]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3215) at position 1", "" },
/*238*/ { -1, "[3216]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3216) at position 1", "" },
/*239*/ { -1, "[3219]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3219) at position 1", "" },
/*240*/ { -1, "[3220]123456", 0, "3220123456", "", "" },
/*241*/ { -1, "[3220]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3220) at position 1", "" },
/*242*/ { -1, "[3225]123456", 0, "3225123456", "", "" },
/*243*/ { -1, "[3225]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3225) at position 1", "" },
/*244*/ { -1, "[3229]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3229) at position 1", "" },
/*245*/ { -1, "[3230]123456", 0, "3230123456", "", "" },
/*246*/ { -1, "[3230]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3230) at position 1", "" },
/*247*/ { -1, "[3235]123456", 0, "3235123456", "", "" },
/*248*/ { -1, "[3235]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3235) at position 1", "" },
/*249*/ { -1, "[3239]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3239) at position 1", "" },
/*250*/ { -1, "[3240]123456", 0, "3240123456", "", "" },
/*251*/ { -1, "[3240]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3240) at position 1", "" },
/*252*/ { -1, "[3245]123456", 0, "3245123456", "", "" },
/*253*/ { -1, "[3245]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3245) at position 1", "" },
/*254*/ { -1, "[3249]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3249) at position 1", "" },
/*255*/ { -1, "[3250]123456", 0, "3250123456", "", "" },
/*256*/ { -1, "[3250]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3250) at position 1", "" },
/*257*/ { -1, "[3255]123456", 0, "3255123456", "", "" },
/*258*/ { -1, "[3255]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3255) at position 1", "" },
/*259*/ { -1, "[3259]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3259) at position 1", "" },
/*260*/ { -1, "[3260]123456", 0, "3260123456", "", "" },
/*261*/ { -1, "[3260]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3260) at position 1", "" },
/*262*/ { -1, "[3265]123456", 0, "3265123456", "", "" },
/*263*/ { -1, "[3265]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3265) at position 1", "" },
/*264*/ { -1, "[3269]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3269) at position 1", "" },
/*265*/ { -1, "[3270]123456", 0, "3270123456", "", "" },
/*266*/ { -1, "[3270]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3270) at position 1", "" },
/*267*/ { -1, "[3275]123456", 0, "3275123456", "", "" },
/*268*/ { -1, "[3275]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3275) at position 1", "" },
/*269*/ { -1, "[3279]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3279) at position 1", "" },
/*270*/ { -1, "[3280]123456", 0, "3280123456", "", "" },
/*271*/ { -1, "[3280]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3280) at position 1", "" },
/*272*/ { -1, "[3285]123456", 0, "3285123456", "", "" },
/*273*/ { -1, "[3285]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3285) at position 1", "" },
/*274*/ { -1, "[3289]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3289) at position 1", "" },
/*275*/ { -1, "[3290]123456", 0, "3290123456", "", "" },
/*276*/ { -1, "[3290]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3290) at position 1", "" },
/*277*/ { -1, "[3295]123456", 0, "3295123456", "", "" },
/*278*/ { -1, "[3295]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3295) at position 1", "" },
/*279*/ { -1, "[3296]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3296) at position 1", "" },
/*280*/ { -1, "[3299]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3299) at position 1", "" },
/*281*/ { -1, "[33]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (33) at position 1", "" },
/*282*/ { -1, "[330]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (330) at position 1", "" },
/*283*/ { -1, "[3300]123456", 0, "3300123456", "", "" },
/*284*/ { -1, "[3300]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3300) at position 1", "" },
/*285*/ { -1, "[3305]123456", 0, "3305123456", "", "" },
/*286*/ { -1, "[3305]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3305) at position 1", "" },
/*287*/ { -1, "[3306]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3306) at position 1", "" },
/*288*/ { -1, "[3309]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3309) at position 1", "" },
/*289*/ { -1, "[3310]123456", 0, "3310123456", "", "" },
/*290*/ { -1, "[3310]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3310) at position 1", "" },
/*291*/ { -1, "[3319]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3319) at position 1", "" },
/*292*/ { -1, "[3320]123456", 0, "3320123456", "", "" },
/*293*/ { -1, "[3320]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3320) at position 1", "" },
/*294*/ { -1, "[3329]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3329) at position 1", "" },
/*295*/ { -1, "[3330]123456", 0, "3330123456", "", "" },
/*296*/ { -1, "[3330]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3330) at position 1", "" },
/*297*/ { -1, "[3339]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3339) at position 1", "" },
/*298*/ { -1, "[3340]123456", 0, "3340123456", "", "" },
/*299*/ { -1, "[3340]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3340) at position 1", "" },
/*300*/ { -1, "[3349]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3349) at position 1", "" },
/*301*/ { -1, "[3350]123456", 0, "3350123456", "", "" },
/*302*/ { -1, "[3350]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3350) at position 1", "" },
/*303*/ { -1, "[3359]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3359) at position 1", "" },
/*304*/ { -1, "[3360]123456", 0, "3360123456", "", "" },
/*305*/ { -1, "[3360]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3360) at position 1", "" },
/*306*/ { -1, "[3369]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3369) at position 1", "" },
/*307*/ { -1, "[3370]123456", 0, "3370123456", "", "" },
/*308*/ { -1, "[3370]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3370) at position 1", "" },
/*309*/ { -1, "[3375]123456", 0, "3375123456", "", "" },
/*310*/ { -1, "[3375]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3375) at position 1", "" },
/*311*/ { -1, "[3376]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3376) at position 1", "" },
/*312*/ { -1, "[3379]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3379) at position 1", "" },
/*313*/ { -1, "[3380]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3380) at position 1", "" },
/*314*/ { -1, "[3390]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3390) at position 1", "" },
/*315*/ { -1, "[3399]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3399) at position 1", "" },
/*316*/ { -1, "[34]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (34) at position 1", "" },
/*317*/ { -1, "[340]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (340) at position 1", "" },
/*318*/ { -1, "[3400]123456", 0, "3400123456", "", "" },
/*319*/ { -1, "[3400]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3400) at position 1", "" },
/*320*/ { -1, "[3405]123456", 0, "3405123456", "", "" },
/*321*/ { -1, "[3405]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3405) at position 1", "" },
/*322*/ { -1, "[3406]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3406) at position 1", "" },
/*323*/ { -1, "[3409]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3409) at position 1", "" },
/*324*/ { -1, "[3410]123456", 0, "3410123456", "", "" },
/*325*/ { -1, "[3410]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3410) at position 1", "" },
/*326*/ { -1, "[3419]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3419) at position 1", "" },
/*327*/ { -1, "[3420]123456", 0, "3420123456", "", "" },
/*328*/ { -1, "[3420]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3420) at position 1", "" },
/*329*/ { -1, "[3429]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3429) at position 1", "" },
/*330*/ { -1, "[3430]123456", 0, "3430123456", "", "" },
/*331*/ { -1, "[3430]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3430) at position 1", "" },
/*332*/ { -1, "[3439]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3439) at position 1", "" },
/*333*/ { -1, "[3440]123456", 0, "3440123456", "", "" },
/*334*/ { -1, "[3440]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3440) at position 1", "" },
/*335*/ { -1, "[3449]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3449) at position 1", "" },
/*336*/ { -1, "[3450]123456", 0, "3450123456", "", "" },
/*337*/ { -1, "[3450]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3450) at position 1", "" },
/*338*/ { -1, "[3459]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3459) at position 1", "" },
/*339*/ { -1, "[3460]123456", 0, "3460123456", "", "" },
/*340*/ { -1, "[3460]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3460) at position 1", "" },
/*341*/ { -1, "[3469]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3469) at position 1", "" },
/*342*/ { -1, "[3470]123456", 0, "3470123456", "", "" },
/*343*/ { -1, "[3470]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3470) at position 1", "" },
/*344*/ { -1, "[3479]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3479) at position 1", "" },
/*345*/ { -1, "[3480]123456", 0, "3480123456", "", "" },
/*346*/ { -1, "[3480]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3480) at position 1", "" },
/*347*/ { -1, "[3489]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3489) at position 1", "" },
/*348*/ { -1, "[3490]123456", 0, "3490123456", "", "" },
/*349*/ { -1, "[3490]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3490) at position 1", "" },
/*350*/ { -1, "[3495]123456", 0, "3495123456", "", "" },
/*351*/ { -1, "[3495]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3495) at position 1", "" },
/*352*/ { -1, "[3496]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3496) at position 1", "" },
/*353*/ { -1, "[3499]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3499) at position 1", "" },
/*354*/ { -1, "[35]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (35) at position 1", "" },
/*355*/ { -1, "[350]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (350) at position 1", "" },
/*356*/ { -1, "[3500]123456", 0, "3500123456", "", "" },
/*357*/ { -1, "[3500]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3500) at position 1", "" },
/*358*/ { -1, "[3505]123456", 0, "3505123456", "", "" },
/*359*/ { -1, "[3505]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3505) at position 1", "" },
/*360*/ { -1, "[3506]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3506) at position 1", "" },
/*361*/ { -1, "[3509]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3509) at position 1", "" },
/*362*/ { -1, "[3510]123456", 0, "3510123456", "", "" },
/*363*/ { -1, "[3510]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3510) at position 1", "" },
/*364*/ { -1, "[3519]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3519) at position 1", "" },
/*365*/ { -1, "[3520]123456", 0, "3520123456", "", "" },
/*366*/ { -1, "[3520]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3520) at position 1", "" },
/*367*/ { -1, "[3529]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3529) at position 1", "" },
/*368*/ { -1, "[3530]123456", 0, "3530123456", "", "" },
/*369*/ { -1, "[3530]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3530) at position 1", "" },
/*370*/ { -1, "[3539]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3539) at position 1", "" },
/*371*/ { -1, "[3540]123456", 0, "3540123456", "", "" },
/*372*/ { -1, "[3540]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3540) at position 1", "" },
/*373*/ { -1, "[3549]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3549) at position 1", "" },
/*374*/ { -1, "[3550]123456", 0, "3550123456", "", "" },
/*375*/ { -1, "[3550]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3550) at position 1", "" },
/*376*/ { -1, "[3559]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3559) at position 1", "" },
/*377*/ { -1, "[3560]123456", 0, "3560123456", "", "" },
/*378*/ { -1, "[3560]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3560) at position 1", "" },
/*379*/ { -1, "[3569]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3569) at position 1", "" },
/*380*/ { -1, "[3570]123456", 0, "3570123456", "", "" },
/*381*/ { -1, "[3570]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3570) at position 1", "" },
/*382*/ { -1, "[3575]123456", 0, "3575123456", "", "" },
/*383*/ { -1, "[3376]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3376) at position 1", "" },
/*384*/ { -1, "[3579]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3579) at position 1", "" },
/*385*/ { -1, "[3580]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3580) at position 1", "" },
/*386*/ { -1, "[3590]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3590) at position 1", "" },
/*387*/ { -1, "[3599]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3599) at position 1", "" },
/*388*/ { -1, "[36]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (36) at position 1", "" },
/*389*/ { -1, "[360]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (360) at position 1", "" },
/*390*/ { -1, "[3600]123456", 0, "3600123456", "", "" },
/*391*/ { -1, "[3600]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3600) at position 1", "" },
/*392*/ { -1, "[3605]123456", 0, "3605123456", "", "" },
/*393*/ { -1, "[3605]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3605) at position 1", "" },
/*394*/ { -1, "[3606]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3606) at position 1", "" },
/*395*/ { -1, "[3609]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3609) at position 1", "" },
/*396*/ { -1, "[3610]123456", 0, "3610123456", "", "" },
/*397*/ { -1, "[3610]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3610) at position 1", "" },
/*398*/ { -1, "[3619]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3619) at position 1", "" },
/*399*/ { -1, "[3620]123456", 0, "3620123456", "", "" },
/*400*/ { -1, "[3620]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3620) at position 1", "" },
/*401*/ { -1, "[3629]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3629) at position 1", "" },
/*402*/ { -1, "[3630]123456", 0, "3630123456", "", "" },
/*403*/ { -1, "[3630]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3630) at position 1", "" },
/*404*/ { -1, "[3639]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3639) at position 1", "" },
/*405*/ { -1, "[3640]123456", 0, "3640123456", "", "" },
/*406*/ { -1, "[3640]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3640) at position 1", "" },
/*407*/ { -1, "[3649]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3649) at position 1", "" },
/*408*/ { -1, "[3650]123456", 0, "3650123456", "", "" },
/*409*/ { -1, "[3650]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3650) at position 1", "" },
/*410*/ { -1, "[3659]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3659) at position 1", "" },
/*411*/ { -1, "[3660]123456", 0, "3660123456", "", "" },
/*412*/ { -1, "[3660]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3660) at position 1", "" },
/*413*/ { -1, "[3669]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3669) at position 1", "" },
/*414*/ { -1, "[3670]123456", 0, "3670123456", "", "" },
/*415*/ { -1, "[3670]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3670) at position 1", "" },
/*416*/ { -1, "[3679]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3679) at position 1", "" },
/*417*/ { -1, "[3680]123456", 0, "3680123456", "", "" },
/*418*/ { -1, "[3680]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3680) at position 1", "" },
/*419*/ { -1, "[3689]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3689) at position 1", "" },
/*420*/ { -1, "[3690]123456", 0, "3690123456", "", "" },
/*421*/ { -1, "[3690]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3690) at position 1", "" },
/*422*/ { -1, "[3695]123456", 0, "3695123456", "", "" },
/*423*/ { -1, "[3695]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3695) at position 1", "" },
/*424*/ { -1, "[3696]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3696) at position 1", "" },
/*425*/ { -1, "[3699]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3699) at position 1", "" },
/*426*/ { -1, "[37]12345678", 0, "3712345678", "", "" },
/*427*/ { -1, "[37]123456789", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (37) at position 1", "" },
/*428*/ { -1, "[370]12345678", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (370) at position 1", "" },
/*429*/ { -1, "[3700]12345678", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3700) at position 1", "" },
/*430*/ { -1, "[38]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (38) at position 1", "" },
/*431*/ { -1, "[380]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (380) at position 1", "" },
/*432*/ { -1, "[3800]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3800) at position 1", "" },
/*433*/ { -1, "[39]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (39) at position 1", "" },
/*434*/ { -1, "[390]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (390) at position 1", "" },
/*435*/ { -1, "[3900]123456789012345", 0, "3900123456789012345", "", "" },
/*436*/ { -1, "[3900]1234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3900) at position 1", "" },
/*437*/ { -1, "[3900]12345678901234", 0, "390012345678901234", "", "" },
/*438*/ { -1, "[3901]123456789012345", 0, "3901123456789012345", "", "" },
/*439*/ { -1, "[3901]1234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3901) at position 1", "" },
/*440*/ { -1, "[3905]123456789012345", 0, "3905123456789012345", "", "" },
/*441*/ { -1, "[3909]123456789012345", 0, "3909123456789012345", "", "" },
/*442*/ { -1, "[3909]1234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3909) at position 1", "" },
/*443*/ { -1, "[3910]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3910123123456789012345", "261: AI (3910) data position 1: Unknown currency code '123'", "" },
/*444*/ { -1, "[3910]997123456789012345", 0, "3910997123456789012345", "", "" },
/*445*/ { -1, "[3910]1231234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3910) at position 1", "" },
/*446*/ { -1, "[3910]123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3910) at position 1", "" },
/*447*/ { -1, "[3915]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3915123123456789012345", "261: AI (3915) data position 1: Unknown currency code '123'", "" },
/*448*/ { -1, "[3915]997123456789012345", 0, "3915997123456789012345", "", "" },
/*449*/ { -1, "[3915]1231234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3915) at position 1", "" },
/*450*/ { -1, "[3919]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3919123123456789012345", "261: AI (3919) data position 1: Unknown currency code '123'", "" },
/*451*/ { -1, "[3919]997123456789012345", 0, "3919997123456789012345", "", "" },
/*452*/ { -1, "[3919]1231234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3919) at position 1", "" },
/*453*/ { -1, "[3920]123456789012345", 0, "3920123456789012345", "", "" },
/*454*/ { -1, "[3920]1234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3920) at position 1", "" },
/*455*/ { -1, "[3925]123456789012345", 0, "3925123456789012345", "", "" },
/*456*/ { -1, "[3925]1234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3925) at position 1", "" },
/*457*/ { -1, "[3929]123456789012345", 0, "3929123456789012345", "", "" },
/*458*/ { -1, "[3929]1234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3929) at position 1", "" },
/*459*/ { -1, "[3930]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3930123123456789012345", "261: AI (3930) data position 1: Unknown currency code '123'", "" },
/*460*/ { -1, "[3930]997123456789012345", 0, "3930997123456789012345", "", "" },
/*461*/ { -1, "[3930]1231234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3930) at position 1", "" },
/*462*/ { -1, "[3930]123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3930) at position 1", "" },
/*463*/ { -1, "[3935]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3935123123456789012345", "261: AI (3935) data position 1: Unknown currency code '123'", "" },
/*464*/ { -1, "[3935]997123456789012345", 0, "3935997123456789012345", "", "" },
/*465*/ { -1, "[3935]1231234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3935) at position 1", "" },
/*466*/ { -1, "[3939]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3939123123456789012345", "261: AI (3939) data position 1: Unknown currency code '123'", "" },
/*467*/ { -1, "[3939]997123456789012345", 0, "3939997123456789012345", "", "" },
/*468*/ { -1, "[3939]1231234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3939) at position 1", "" },
/*469*/ { -1, "[3940]1234", 0, "39401234", "", "" },
/*470*/ { -1, "[3940]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3940) at position 1", "" },
/*471*/ { -1, "[3940]123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3940) at position 1", "" },
/*472*/ { -1, "[3941]1234", 0, "39411234", "", "" },
/*473*/ { -1, "[3941]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3941) at position 1", "" },
/*474*/ { -1, "[3941]123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3941) at position 1", "" },
/*475*/ { -1, "[3942]1234", 0, "39421234", "", "" },
/*476*/ { -1, "[3942]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3942) at position 1", "" },
/*477*/ { -1, "[3943]1234", 0, "39431234", "", "" },
/*478*/ { -1, "[3943]123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3943) at position 1", "" },
/*479*/ { -1, "[3944]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3944) at position 1", "" },
/*480*/ { -1, "[3945]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3945) at position 1", "" },
/*481*/ { -1, "[3949]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3949) at position 1", "" },
/*482*/ { -1, "[3950]123456", 0, "3950123456", "", "" },
/*483*/ { -1, "[3950]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3950) at position 1", "" },
/*484*/ { -1, "[3950]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3950) at position 1", "" },
/*485*/ { -1, "[3951]123456", 0, "3951123456", "", "" },
/*486*/ { -1, "[3951]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3951) at position 1", "" },
/*487*/ { -1, "[3952]123456", 0, "3952123456", "", "" },
/*488*/ { -1, "[3952]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3952) at position 1", "" },
/*489*/ { -1, "[3953]123456", 0, "3953123456", "", "" },
/*490*/ { -1, "[3953]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3953) at position 1", "" },
/*491*/ { -1, "[3954]123456", 0, "3954123456", "", "" },
/*492*/ { -1, "[3954]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3954) at position 1", "" },
/*493*/ { -1, "[3955]123456", 0, "3955123456", "", "" },
/*494*/ { -1, "[3955]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3955) at position 1", "" },
/*495*/ { -1, "[3956]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3956) at position 1", "" },
/*496*/ { -1, "[3959]123456", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3959) at position 1", "" },
/*497*/ { -1, "[3960]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3960) at position 1", "" },
/*498*/ { -1, "[3970]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3970) at position 1", "" },
/*499*/ { -1, "[3980]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3980) at position 1", "" },
/*500*/ { -1, "[3999]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (3999) at position 1", "" },
/*501*/ { -1, "[40]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (40) at position 1", "" },
/*502*/ { -1, "[400]123456789012345678901234567890", 0, "400123456789012345678901234567890", "", "" },
/*503*/ { -1, "[400]1234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (400) at position 1", "" },
/*504*/ { -1, "[4000]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4000) at position 1", "" },
/*505*/ { -1, "[401]1234abcdefghijklmnopqrstuvwxyz", 0, "4011234abcdefghijklmnopqrstuvwxyz", "", "" },
/*506*/ { -1, "[401]1234abcdefghijklmnopqrstuvwxyz1", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (401) at position 1", "" },
/*507*/ { -1, "[4010]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4010) at position 1", "" },
/*508*/ { -1, "[402]13131313131313132", ZINT_WARN_NONCOMPLIANT, "40213131313131313132", "261: AI (402) data position 17: Bad checksum '2', expected '0'", "" },
/*509*/ { -1, "[402]13131313131313130", 0, "40213131313131313130", "", "" },
/*510*/ { -1, "[402]1313131313131313", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (402) at position 1", "" },
/*511*/ { -1, "[4020]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4020) at position 1", "" },
/*512*/ { -1, "[403]abcdefghijklmnopqrstuvwxyz1234", 0, "403abcdefghijklmnopqrstuvwxyz1234", "", "" },
/*513*/ { -1, "[403]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (403) at position 1", "" },
/*514*/ { -1, "[4030]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4030) at position 1", "" },
/*515*/ { -1, "[404]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (404) at position 1", "" },
/*516*/ { -1, "[4040]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4040) at position 1", "" },
/*517*/ { -1, "[409]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (409) at position 1", "" },
/*518*/ { -1, "[4090]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4090) at position 1", "" },
/*519*/ { -1, "[41]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (41) at position 1", "" },
/*520*/ { -1, "[410]3898765432108", 0, "4103898765432108", "", "" },
/*521*/ { -1, "[410]12345678901234", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (410) at position 1", "" },
/*522*/ { -1, "[4100]12345678901234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4100) at position 1", "" },
/*523*/ { -1, "[411]1313131313134", ZINT_WARN_NONCOMPLIANT, "4111313131313134", "261: AI (411) data position 13: Bad checksum '4', expected '0'", "" },
/*524*/ { -1, "[411]1313131313130", 0, "4111313131313130", "", "" },
/*525*/ { -1, "[411]13131313131", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (411) at position 1", "" },
/*526*/ { -1, "[4110]1313131313134", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4110) at position 1", "" },
/*527*/ { -1, "[412]1313131313130", 0, "4121313131313130", "", "" },
/*528*/ { -1, "[412]13131313131", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (412) at position 1", "" },
/*529*/ { -1, "[4120]1313131313134", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4120) at position 1", "" },
/*530*/ { -1, "[413]1313131313130", 0, "4131313131313130", "", "" },
/*531*/ { -1, "[413]13131313131", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (413) at position 1", "" },
/*532*/ { -1, "[4130]1313131313134", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4130) at position 1", "" },
/*533*/ { -1, "[414]1313131313130", 0, "4141313131313130", "", "" },
/*534*/ { -1, "[414]13131313131", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (414) at position 1", "" },
/*535*/ { -1, "[4140]1313131313134", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4140) at position 1", "" },
/*536*/ { -1, "[415]1313131313130", 0, "4151313131313130", "", "" },
/*537*/ { -1, "[415]13131313131", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (415) at position 1", "" },
/*538*/ { -1, "[4150]1313131313134", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4150) at position 1", "" },
/*539*/ { -1, "[416]1313131313130", 0, "4161313131313130", "", "" },
/*540*/ { -1, "[416]13131313131", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (416) at position 1", "" },
/*541*/ { -1, "[4160]1313131313134", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4160) at position 1", "" },
/*542*/ { -1, "[417]1313131313130", 0, "4171313131313130", "", "" },
/*543*/ { -1, "[417]13131313131", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (417) at position 1", "" },
/*544*/ { -1, "[4170]1313131313134", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4170) at position 1", "" },
/*545*/ { -1, "[418]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (418) at position 1", "" },
/*546*/ { -1, "[4180]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4180) at position 1", "" },
/*547*/ { -1, "[419]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (419) at position 1", "" },
/*548*/ { -1, "[4190]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4190) at position 1", "" },
/*549*/ { -1, "[42]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (42) at position 1", "" },
/*550*/ { -1, "[420]abcdefghijklmnopqrst", 0, "420abcdefghijklmnopqrst", "", "" },
/*551*/ { -1, "[420]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (420) at position 1", "" },
/*552*/ { -1, "[4200]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4200) at position 1", "" },
/*553*/ { -1, "[421]123abcdefghi", ZINT_WARN_NONCOMPLIANT, "421123abcdefghi", "261: AI (421) data position 1: Unknown country code '123'", "" },
/*554*/ { -1, "[421]434abcdefghi", 0, "421434abcdefghi", "", "" },
/*555*/ { -1, "[421]123abcdefghij", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (421) at position 1", "" },
/*556*/ { -1, "[421]1231", ZINT_WARN_NONCOMPLIANT, "4211231", "261: AI (421) data position 1: Unknown country code '123'", "" },
/*557*/ { -1, "[421]4341", 0, "4214341", "", "" },
/*558*/ { -1, "[421]123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (421) at position 1", "" },
/*559*/ { -1, "[4210]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4210) at position 1", "" },
/*560*/ { -1, "[422]123", ZINT_WARN_NONCOMPLIANT, "422123", "261: AI (422) data position 1: Unknown country code '123'", "" },
/*561*/ { -1, "[422]004", 0, "422004", "", "" },
/*562*/ { -1, "[422]1234", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (422) at position 1", "" },
/*563*/ { -1, "[422]12", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (422) at position 1", "" },
/*564*/ { -1, "[4220]123", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4220) at position 1", "" },
/*565*/ { -1, "[423]123123123123123", ZINT_WARN_NONCOMPLIANT, "423123123123123123", "261: AI (423) data position 1: Unknown country code '123'", "" },
/*566*/ { -1, "[423]470004012887123", ZINT_WARN_NONCOMPLIANT, "423470004012887123", "261: AI (423) data position 13: Unknown country code '123'", "" },
/*567*/ { -1, "[423]470004012887438", 0, "423470004012887438", "", "" },
/*568*/ { -1, "[423]1231231231231231", ZINT_ERROR_INVALID_DATA, "4231231231231231231", "259: Invalid data length for AI (423) at position 1", "" },
/*569*/ { -1, "[423]12312312312312", ZINT_WARN_NONCOMPLIANT, "42312312312312312", "259: Invalid data length for AI (423) at position 1", "" },
/*570*/ { -1, "[423]1231231231231", ZINT_WARN_NONCOMPLIANT, "4231231231231231", "259: Invalid data length for AI (423) at position 1", "" },
/*571*/ { -1, "[423]12312312312", ZINT_WARN_NONCOMPLIANT, "42312312312312", "259: Invalid data length for AI (423) at position 1", "" },
/*572*/ { -1, "[423]1231231231", ZINT_WARN_NONCOMPLIANT, "4231231231231", "259: Invalid data length for AI (423) at position 1", "" },
/*573*/ { -1, "[423]123", ZINT_WARN_NONCOMPLIANT, "423123", "261: AI (423) data position 1: Unknown country code '123'", "" },
/*574*/ { -1, "[423]004", 0, "423004", "", "" },
/*575*/ { -1, "[423]12", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (423) at position 1", "" },
/*576*/ { -1, "[4230]123123123123123", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4230) at position 1", "" },
/*577*/ { -1, "[424]123", ZINT_WARN_NONCOMPLIANT, "424123", "261: AI (424) data position 1: Unknown country code '123'", "" },
/*578*/ { -1, "[424]004", 0, "424004", "", "" },
/*579*/ { -1, "[424]1234", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (424) at position 1", "" },
/*580*/ { -1, "[424]12", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (424) at position 1", "" },
/*581*/ { -1, "[4240]123", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4240) at position 1", "" },
/*582*/ { -1, "[425]123123123123123", ZINT_WARN_NONCOMPLIANT, "425123123123123123", "261: AI (425) data position 1: Unknown country code '123'", "" },
/*583*/ { -1, "[425]010500276634894", 0, "425010500276634894", "", "" },
/*584*/ { -1, "[425]010500276123894", ZINT_WARN_NONCOMPLIANT, "425010500276123894", "261: AI (425) data position 10: Unknown country code '123'", "" },
/*585*/ { -1, "[425]1231231231231231", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (425) at position 1", "" },
/*586*/ { -1, "[425]12", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (425) at position 1", "" },
/*587*/ { -1, "[4250]123123123123123", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4250) at position 1", "" },
/*588*/ { -1, "[426]123", ZINT_WARN_NONCOMPLIANT, "426123", "261: AI (426) data position 1: Unknown country code '123'", "" },
/*589*/ { -1, "[426]426", 0, "426426", "", "" },
/*590*/ { -1, "[426]1234", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (426) at position 1", "" },
/*591*/ { -1, "[426]12", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (426) at position 1", "" },
/*592*/ { -1, "[4260]123", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4260) at position 1", "" },
/*593*/ { -1, "[427]abc", 0, "427abc", "", "" },
/*594*/ { -1, "[427]abcd", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (427) at position 1", "" },
/*595*/ { -1, "[4270]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4270) at position 1", "" },
/*596*/ { -1, "[428]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (428) at position 1", "" },
/*597*/ { -1, "[4280]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4280) at position 1", "" },
/*598*/ { -1, "[429]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (429) at position 1", "" },
/*599*/ { -1, "[4290]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4290) at position 1", "" },
/*600*/ { -1, "[43]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (43) at position 1", "" },
/*601*/ { -1, "[430]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (430) at position 1", "" },
/*602*/ { -1, "[4300]1", 0, "43001", "", "" },
/*603*/ { -1, "[4300]12345678901234567890123456789012345", 0, "430012345678901234567890123456789012345", "", "" },
/*604*/ { -1, "[4300]123456789012345678901234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4300) at position 1", "" },
/*605*/ { -1, "[4301]1", 0, "43011", "", "" },
/*606*/ { -1, "[4301]12345678901234567890123456789012345", 0, "430112345678901234567890123456789012345", "", "" },
/*607*/ { -1, "[4301]123456789012345678901234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4301) at position 1", "" },
/*608*/ { -1, "[4302]1", 0, "43021", "", "" },
/*609*/ { -1, "[4302]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43021234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*610*/ { -1, "[4302]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4302) at position 1", "" },
/*611*/ { -1, "[4303]1", 0, "43031", "", "" },
/*612*/ { -1, "[4303]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43031234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*613*/ { -1, "[4303]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4303) at position 1", "" },
/*614*/ { -1, "[4304]1", 0, "43041", "", "" },
/*615*/ { -1, "[4304]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43041234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*616*/ { -1, "[4304]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4304) at position 1", "" },
/*617*/ { -1, "[4305]1", 0, "43051", "", "" },
/*618*/ { -1, "[4305]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43051234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*619*/ { -1, "[4305]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4305) at position 1", "" },
/*620*/ { -1, "[4306]1", 0, "43061", "", "" },
/*621*/ { -1, "[4306]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43061234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*622*/ { -1, "[4306]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4306) at position 1", "" },
/*623*/ { -1, "[4307]FR", 0, "4307FR", "", "" },
/*624*/ { -1, "[4307]F", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4307) at position 1", "" },
/*625*/ { -1, "[4307]FRR", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4307) at position 1", "" },
/*626*/ { -1, "[4308]1", 0, "43081", "", "" },
/*627*/ { -1, "[4308]123456789012345678901234567890", 0, "4308123456789012345678901234567890", "", "" },
/*628*/ { -1, "[4308]1234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4308) at position 1", "" },
/*629*/ { -1, "[4309]12345678901234567890", 0, "430912345678901234567890", "", "" },
/*630*/ { -1, "[4309]1234567890123456789", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4309) at position 1", "" },
/*631*/ { -1, "[4309]1234567890123456789A", ZINT_WARN_NONCOMPLIANT, "43091234567890123456789A", "261: AI (4309) data position 20: Non-numeric character 'A'", "" },
/*632*/ { -1, "[431]1", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (431) at position 1", "" },
/*633*/ { -1, "[4310]1", 0, "43101", "", "" },
/*634*/ { -1, "[4310]12345678901234567890123456789012345", 0, "431012345678901234567890123456789012345", "", "" },
/*635*/ { -1, "[4310]123456789012345678901234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4310) at position 1", "" },
/*636*/ { -1, "[4311]1", 0, "43111", "", "" },
/*637*/ { -1, "[4311]12345678901234567890123456789012345", 0, "431112345678901234567890123456789012345", "", "" },
/*638*/ { -1, "[4311]123456789012345678901234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4311) at position 1", "" },
/*639*/ { -1, "[4312]1", 0, "43121", "", "" },
/*640*/ { -1, "[4312]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43121234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*641*/ { -1, "[4312]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4312) at position 1", "" },
/*642*/ { -1, "[4313]1", 0, "43131", "", "" },
/*643*/ { -1, "[4313]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43131234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*644*/ { -1, "[4313]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4313) at position 1", "" },
/*645*/ { -1, "[4314]1", 0, "43141", "", "" },
/*646*/ { -1, "[4314]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43141234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*647*/ { -1, "[4314]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4314) at position 1", "" },
/*648*/ { -1, "[4315]1", 0, "43151", "", "" },
/*649*/ { -1, "[4315]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43151234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*650*/ { -1, "[4315]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4315) at position 1", "" },
/*651*/ { -1, "[4316]1", 0, "43161", "", "" },
/*652*/ { -1, "[4316]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43161234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*653*/ { -1, "[4316]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4316) at position 1", "" },
/*654*/ { -1, "[4317]FR", 0, "4317FR", "", "" },
/*655*/ { -1, "[4317]F", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4317) at position 1", "" },
/*656*/ { -1, "[4317]FRF", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4317) at position 1", "" },
/*657*/ { -1, "[4318]1", 0, "43181", "", "" },
/*658*/ { -1, "[4318]12345678901234567890", 0, "431812345678901234567890", "", "" },
/*659*/ { -1, "[4318]123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4318) at position 1", "" },
/*660*/ { -1, "[4319]1", 0, "43191", "", "" },
/*661*/ { -1, "[4319]123456789012345678901234567890", 0, "4319123456789012345678901234567890", "", "" },
/*662*/ { -1, "[4319]1234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4319) at position 1", "" },
/*663*/ { -1, "[432]1", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (432) at position 1", "" },
/*664*/ { -1, "[4320]1", 0, "43201", "", "" },
/*665*/ { -1, "[4320]12345678901234567890123456789012345", 0, "432012345678901234567890123456789012345", "", "" },
/*666*/ { -1, "[4320]123456789012345678901234567890123456", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4320) at position 1", "" },
/*667*/ { -1, "[4321]1", 0, "43211", "", "" },
/*668*/ { -1, "[4321]10", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4321) at position 1", "" },
/*669*/ { -1, "[4322]1", 0, "43221", "", "" },
/*670*/ { -1, "[4322]10", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4322) at position 1", "" },
/*671*/ { -1, "[4323]1", 0, "43231", "", "" },
/*672*/ { -1, "[4323]10", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4323) at position 1", "" },
/*673*/ { -1, "[4324]1212120000", 0, "43241212120000", "", "" },
/*674*/ { -1, "[4324]121212000", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4324) at position 1", "" },
/*675*/ { -1, "[4324]12121200000", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4324) at position 1", "" },
/*676*/ { -1, "[4325]1212120000", 0, "43251212120000", "", "" },
/*677*/ { -1, "[4325]121212000", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4325) at position 1", "" },
/*678*/ { -1, "[4325]12121200000", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4325) at position 1", "" },
/*679*/ { -1, "[4326]121212", 0, "4326121212", "", "" },
/*680*/ { -1, "[4326]12121", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4326) at position 1", "" },
/*681*/ { -1, "[4326]1212120", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4326) at position 1", "" },
/*682*/ { -1, "[4327]121212", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4327) at position 1", "" },
/*683*/ { -1, "[4328]121212", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4328) at position 1", "" },
/*684*/ { -1, "[4329]121212", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4329) at position 1", "" },
/*685*/ { -1, "[433]121212", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (433) at position 1", "" },
/*686*/ { -1, "[4330]121212", 0, "4330121212", "", "" },
/*687*/ { -1, "[4331]121212-", 0, "4331121212-", "", "" },
/*688*/ { -1, "[4332]121212", 0, "4332121212", "", "" },
/*689*/ { -1, "[4333]121212-", 0, "4333121212-", "", "" },
/*690*/ { -1, "[4334]121212", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4334) at position 1", "" },
/*691*/ { -1, "[44]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (44) at position 1", "" },
/*692*/ { -1, "[440]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (440) at position 1", "" },
/*693*/ { -1, "[4400]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4400) at position 1", "" },
/*694*/ { -1, "[49]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (49) at position 1", "" },
/*695*/ { -1, "[490]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (490) at position 1", "" },
/*696*/ { -1, "[4900]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4900) at position 1", "" },
/*697*/ { -1, "[499]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (499) at position 1", "" },
/*698*/ { -1, "[4990]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (4990) at position 1", "" },
/*699*/ { -1, "[50]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (50) at position 1", "" },
/*700*/ { -1, "[500]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (500) at position 1", "" },
/*701*/ { -1, "[5000]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (5000) at position 1", "" },
/*702*/ { -1, "[51]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (51) at position 1", "" },
/*703*/ { -1, "[510]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (510) at position 1", "" },
/*704*/ { -1, "[5100]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (5100) at position 1", "" },
/*705*/ { -1, "[59]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (59) at position 1", "" },
/*706*/ { -1, "[590]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (590) at position 1", "" },
/*707*/ { -1, "[5900]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (5900) at position 1", "" },
/*708*/ { -1, "[60]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (60) at position 1", "" },
/*709*/ { -1, "[600]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (600) at position 1", "" },
/*710*/ { -1, "[6000]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (6000) at position 1", "" },
/*711*/ { -1, "[61]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (61) at position 1", "" },
/*712*/ { -1, "[610]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (610) at position 1", "" },
/*713*/ { -1, "[6100]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (6100) at position 1", "" },
/*714*/ { -1, "[69]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (69) at position 1", "" },
/*715*/ { -1, "[690]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (690) at position 1", "" },
/*716*/ { -1, "[6900]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (6900) at position 1", "" },
/*717*/ { -1, "[70]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (70) at position 1", "" },
/*718*/ { -1, "[700]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (700) at position 1", "" },
/*719*/ { -1, "[7000]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7000) at position 1", "" },
/*720*/ { -1, "[7001]1234567890123", 0, "70011234567890123", "", "" },
/*721*/ { -1, "[7001]123456789012", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7001) at position 1", "" },
/*722*/ { -1, "[7002]abcdefghijklmnopqrstuvwxyz1234", 0, "7002abcdefghijklmnopqrstuvwxyz1234", "", "" },
/*723*/ { -1, "[7002]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7002) at position 1", "" },
/*724*/ { -1, "[7003]1212121212", 0, "70031212121212", "", "" },
/*725*/ { -1, "[7003]121212121", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7003) at position 1", "" },
/*726*/ { -1, "[7004]1234", 0, "70041234", "", "" },
/*727*/ { -1, "[7004]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7004) at position 1", "" },
/*728*/ { -1, "[7005]abcdefghijkl", 0, "7005abcdefghijkl", "", "" },
/*729*/ { -1, "[7005]abcdefghijklm", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7005) at position 1", "" },
/*730*/ { -1, "[7006]200132", ZINT_WARN_NONCOMPLIANT, "7006200132", "261: AI (7006) data position 5: Invalid day '32'", "" },
/*731*/ { -1, "[7006]200100", ZINT_WARN_NONCOMPLIANT, "7006200100", "261: AI (7006) data position 5: Invalid day '00'", "" },
/*732*/ { -1, "[7006]200120", 0, "7006200120", "", "" },
/*733*/ { -1, "[7006]2001320", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7006) at position 1", "" },
/*734*/ { -1, "[7007]010101121212", 0, "7007010101121212", "", "" },
/*735*/ { -1, "[7007]01010112121", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7007) at position 1", "" },
/*736*/ { -1, "[7007]A1010112121", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7007) at position 1", "" },
/*737*/ { -1, "[7007]121212", 0, "7007121212", "", "" },
/*738*/ { -1, "[7007]12121", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7007) at position 1", "" },
/*739*/ { -1, "[7007]1212121", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7007) at position 1", "" },
/*740*/ { -1, "[7008]abc", 0, "7008abc", "", "" },
/*741*/ { -1, "[7008]abcd", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7008) at position 1", "" },
/*742*/ { -1, "[7009]abcdefghij", 0, "7009abcdefghij", "", "" },
/*743*/ { -1, "[7009]abcdefghijk", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7009) at position 1", "" },
/*744*/ { -1, "[7010]01", 0, "701001", "", "" },
/*745*/ { -1, "[7010]1", 0, "70101", "", "" },
/*746*/ { -1, "[7010]012", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7010) at position 1", "" },
/*747*/ { -1, "[7011]121212", 0, "7011121212", "", "" },
/*748*/ { -1, "[7011]1212121212", 0, "70111212121212", "", "" },
/*749*/ { -1, "[7011]12121", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7011) at position 1", "" },
/*750*/ { -1, "[7011]121212121", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7011) at position 1", "" },
/*751*/ { -1, "[7012]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7012) at position 1", "" },
/*752*/ { -1, "[7019]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7019) at position 1", "" },
/*753*/ { -1, "[7020]abcdefghijklmnopqrst", 0, "7020abcdefghijklmnopqrst", "", "" },
/*754*/ { -1, "[7020]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7020) at position 1", "" },
/*755*/ { -1, "[7021]abcdefghijklmnopqrst", 0, "7021abcdefghijklmnopqrst", "", "" },
/*756*/ { -1, "[7021]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7021) at position 1", "" },
/*757*/ { -1, "[7022]abcdefghijklmnopqrst", 0, "7022abcdefghijklmnopqrst", "", "" },
/*758*/ { -1, "[7022]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7022) at position 1", "" },
/*759*/ { -1, "[7023]1234abcdefghijklmnopqrstuvwxyz", 0, "70231234abcdefghijklmnopqrstuvwxyz", "", "" },
/*760*/ { -1, "[7023]1234abcdefghijklmnopqrstuvwxyza", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7023) at position 1", "" },
/*761*/ { -1, "[7024]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7024) at position 1", "" },
/*762*/ { -1, "[7025]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7025) at position 1", "" },
/*763*/ { -1, "[7029]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7029) at position 1", "" },
/*764*/ { -1, "[7030]123abcdefghijklmnopqrstuvwxyza", ZINT_WARN_NONCOMPLIANT, "7030123abcdefghijklmnopqrstuvwxyza", "261: AI (7030) data position 1: Unknown country code '123'", "" },
/*765*/ { -1, "[7030]004abcdefghijklmnopqrstuvwxyza", 0, "7030004abcdefghijklmnopqrstuvwxyza", "", "" },
/*766*/ { -1, "[7030]123abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7030) at position 1", "" },
/*767*/ { -1, "[7031]123abcdefghijklmnopqrstuvwxyza", ZINT_WARN_NONCOMPLIANT, "7031123abcdefghijklmnopqrstuvwxyza", "261: AI (7031) data position 1: Unknown country code '123'", "" },
/*768*/ { -1, "[7031]004abcdefghijklmnopqrstuvwxyza", 0, "7031004abcdefghijklmnopqrstuvwxyza", "", "" },
/*769*/ { -1, "[7031]123abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7031) at position 1", "" },
/*770*/ { -1, "[7032]004abcdefghijklmnopqrstuvwxyza", 0, "7032004abcdefghijklmnopqrstuvwxyza", "", "" },
/*771*/ { -1, "[7032]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7032) at position 1", "" },
/*772*/ { -1, "[7033]004abcdefghijklmnopqrstuvwxyza", 0, "7033004abcdefghijklmnopqrstuvwxyza", "", "" },
/*773*/ { -1, "[7033]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7033) at position 1", "" },
/*774*/ { -1, "[7034]004abcdefghijklmnopqrstuvwxyza", 0, "7034004abcdefghijklmnopqrstuvwxyza", "", "" },
/*775*/ { -1, "[7034]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7034) at position 1", "" },
/*776*/ { -1, "[7035]004abcdefghijklmnopqrstuvwxyza", 0, "7035004abcdefghijklmnopqrstuvwxyza", "", "" },
/*777*/ { -1, "[7035]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7035) at position 1", "" },
/*778*/ { -1, "[7036]004abcdefghijklmnopqrstuvwxyza", 0, "7036004abcdefghijklmnopqrstuvwxyza", "", "" },
/*779*/ { -1, "[7036]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7036) at position 1", "" },
/*780*/ { -1, "[7037]004abcdefghijklmnopqrstuvwxyza", 0, "7037004abcdefghijklmnopqrstuvwxyza", "", "" },
/*781*/ { -1, "[7037]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7037) at position 1", "" },
/*782*/ { -1, "[7038]004abcdefghijklmnopqrstuvwxyza", 0, "7038004abcdefghijklmnopqrstuvwxyza", "", "" },
/*783*/ { -1, "[7038]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7038) at position 1", "" },
/*784*/ { -1, "[7039]004abcdefghijklmnopqrstuvwxyza", 0, "7039004abcdefghijklmnopqrstuvwxyza", "", "" },
/*785*/ { -1, "[7039]123abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7039) at position 1", "" },
/*786*/ { -1, "[7040]1abc", 0, "70401abc", "", "" },
/*787*/ { -1, "[7040]1ab", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7040) at position 1", "" },
/*788*/ { -1, "[7040]1abcd", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7040) at position 1", "" },
/*789*/ { -1, "[7041]BGE", 0, "7041BGE", "", "" },
/*790*/ { -1, "[7041]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7041) at position 1", "" },
/*791*/ { -1, "[7042]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7042) at position 1", "" },
/*792*/ { -1, "[7050]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7050) at position 1", "" },
/*793*/ { -1, "[7090]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7090) at position 1", "" },
/*794*/ { -1, "[7099]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7099) at position 1", "" },
/*795*/ { -1, "[71]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (71) at position 1", "" },
/*796*/ { -1, "[710]abcdefghijklmnopqrst", 0, "710abcdefghijklmnopqrst", "", "" },
/*797*/ { -1, "[710]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (710) at position 1", "" },
/*798*/ { -1, "[7100]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7100) at position 1", "" },
/*799*/ { -1, "[711]abcdefghijklmnopqrst", 0, "711abcdefghijklmnopqrst", "", "" },
/*800*/ { -1, "[711]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (711) at position 1", "" },
/*801*/ { -1, "[712]abcdefghijklmnopqrst", 0, "712abcdefghijklmnopqrst", "", "" },
/*802*/ { -1, "[712]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (712) at position 1", "" },
/*803*/ { -1, "[713]abcdefghijklmnopqrst", 0, "713abcdefghijklmnopqrst", "", "" },
/*804*/ { -1, "[713]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (713) at position 1", "" },
/*805*/ { -1, "[714]abcdefghijklmnopqrst", 0, "714abcdefghijklmnopqrst", "", "" },
/*806*/ { -1, "[714]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (714) at position 1", "" },
/*807*/ { -1, "[715]abcdefghijklmnopqrst", 0, "715abcdefghijklmnopqrst", "", "" },
/*808*/ { -1, "[715]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (715) at position 1", "" },
/*809*/ { -1, "[716]abcdefghijklmnopqrst", 0, "716abcdefghijklmnopqrst", "", "" },
/*810*/ { -1, "[716]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (716) at position 1", "" },
/*811*/ { -1, "[717]abcdefghijklmnopqrst", 0, "717abcdefghijklmnopqrst", "", "" },
/*812*/ { -1, "[717]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (717) at position 1", "" },
/*813*/ { -1, "[718]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (718) at position 1", "" },
/*814*/ { -1, "[719]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (719) at position 1", "" },
/*815*/ { -1, "[72]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (72) at position 1", "" },
/*816*/ { -1, "[720]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (720) at position 1", "" },
/*817*/ { -1, "[7200]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7200) at position 1", "" },
/*818*/ { -1, "[721]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (721) at position 1", "" },
/*819*/ { -1, "[7210]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7210) at position 1", "" },
/*820*/ { -1, "[7220]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7220) at position 1", "" },
/*821*/ { -1, "[7230]EMabcdefghijklmnopqrstuvwxyzab", 0, "7230EMabcdefghijklmnopqrstuvwxyzab", "", "" },
/*822*/ { -1, "[7230]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7230) at position 1", "" },
/*823*/ { -1, "[7230]EM", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7230) at position 1", "" },
/*824*/ { -1, "[7231]EMabcdefghijklmnopqrstuvwxyzab", 0, "7231EMabcdefghijklmnopqrstuvwxyzab", "", "" },
/*825*/ { -1, "[7231]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7231) at position 1", "" },
/*826*/ { -1, "[7232]EMabcdefghijklmnopqrstuvwxyzab", 0, "7232EMabcdefghijklmnopqrstuvwxyzab", "", "" },
/*827*/ { -1, "[7232]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7232) at position 1", "" },
/*828*/ { -1, "[7233]EMabcdefghijklmnopqrstuvwxyzab", 0, "7233EMabcdefghijklmnopqrstuvwxyzab", "", "" },
/*829*/ { -1, "[7233]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7233) at position 1", "" },
/*830*/ { -1, "[7234]EMabcdefghijklmnopqrstuvwxyzab", 0, "7234EMabcdefghijklmnopqrstuvwxyzab", "", "" },
/*831*/ { -1, "[7234]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7234) at position 1", "" },
/*832*/ { -1, "[7235]EMabcdefghijklmnopqrstuvwxyzab", 0, "7235EMabcdefghijklmnopqrstuvwxyzab", "", "" },
/*833*/ { -1, "[7235]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7235) at position 1", "" },
/*834*/ { -1, "[7236]EMabcdefghijklmnopqrstuvwxyzab", 0, "7236EMabcdefghijklmnopqrstuvwxyzab", "", "" },
/*835*/ { -1, "[7236]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7236) at position 1", "" },
/*836*/ { -1, "[7237]EMabcdefghijklmnopqrstuvwxyzab", 0, "7237EMabcdefghijklmnopqrstuvwxyzab", "", "" },
/*837*/ { -1, "[7237]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7237) at position 1", "" },
/*838*/ { -1, "[7238]EMabcdefghijklmnopqrstuvwxyzab", 0, "7238EMabcdefghijklmnopqrstuvwxyzab", "", "" },
/*839*/ { -1, "[7238]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7238) at position 1", "" },
/*840*/ { -1, "[7239]EMabcdefghijklmnopqrstuvwxyzab", 0, "7239EMabcdefghijklmnopqrstuvwxyzab", "", "" },
/*841*/ { -1, "[7239]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7239) at position 1", "" },
/*842*/ { -1, "[7239]E", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7239) at position 1", "" },
/*843*/ { -1, "[7240]abcdefghijklmnopqrst", 0, "7240abcdefghijklmnopqrst", "", "" },
/*844*/ { -1, "[7240]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7240) at position 1", "" },
/*845*/ { -1, "[7241]99", 0, "724199", "", "" },
/*846*/ { -1, "[7241]100", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7241) at position 1", "" },
/*847*/ { -1, "[7242]abcdefghijklmnopqrstuvwxy", 0, "7242abcdefghijklmnopqrstuvwxy", "", "" },
/*848*/ { -1, "[7242]abcdefghijklmnopqrstuvwxyz", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7242) at position 1", "" },
/*849*/ { -1, "[7243]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7243) at position 1", "" },
/*850*/ { -1, "[7249]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7249) at position 1", "" },
/*851*/ { -1, "[7250]12341201", 0, "725012341201", "", "" },
/*852*/ { -1, "[7250]123412012", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7250) at position 1", "" },
/*853*/ { -1, "[7251]123412011359", 0, "7251123412011359", "", "" },
/*854*/ { -1, "[7251]1234120113591", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7251) at position 1", "" },
/*855*/ { -1, "[7252]2", 0, "72522", "", "" },
/*856*/ { -1, "[7252]20", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7252) at position 1", "" },
/*857*/ { -1, "[7253]abcdefghijklmnopqrstuvwxyzabcdefghijklmn", 0, "7253abcdefghijklmnopqrstuvwxyzabcdefghijklmn", "", "" },
/*858*/ { -1, "[7253]abcdefghijklmnopqrstuvwxyzabcdefghijklmno", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7253) at position 1", "" },
/*859*/ { -1, "[7254]abcdefghijklmnopqrstuvwxyzabcdefghijklmn", 0, "7254abcdefghijklmnopqrstuvwxyzabcdefghijklmn", "", "" },
/*860*/ { -1, "[7254]abcdefghijklmnopqrstuvwxyzabcdefghijklmno", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7254) at position 1", "" },
/*861*/ { -1, "[7255]abcdefghij", 0, "7255abcdefghij", "", "" },
/*862*/ { -1, "[7255]abcdefghijk", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7255) at position 1", "" },
/*863*/ { -1, "[7256]abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl", 0, "7256abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl", "", "" },
/*864*/ { -1, "[7256]abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7256) at position 1", "" },
/*865*/ { -1, "[7257]abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqr", 0, "7257abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqr", "", "" },
/*866*/ { -1, "[7257]abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrs", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7257) at position 1", "" },
/*867*/ { -1, "[7258]1/1", 0, "72581/1", "", "" },
/*868*/ { -1, "[7258]1/01", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7258) at position 1", "" },
/*869*/ { -1, "[7259]abcdefghijklmnopqrstuvwxyzabcdefghijklmn", 0, "7259abcdefghijklmnopqrstuvwxyzabcdefghijklmn", "", "" },
/*870*/ { -1, "[7259]abcdefghijklmnopqrstuvwxyzabcdefghijklmno", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7259) at position 1", "" },
/*871*/ { -1, "[7260]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7260) at position 1", "" },
/*872*/ { -1, "[7299]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7299) at position 1", "" },
/*873*/ { -1, "[73]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (73) at position 1", "" },
/*874*/ { -1, "[7300]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7300) at position 1", "" },
/*875*/ { -1, "[74]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (74) at position 1", "" },
/*876*/ { -1, "[7400]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7400) at position 1", "" },
/*877*/ { -1, "[79]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (79) at position 1", "" },
/*878*/ { -1, "[7900]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7900) at position 1", "" },
/*879*/ { -1, "[7999]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (7999) at position 1", "" },
/*880*/ { -1, "[80]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (80) at position 1", "" },
/*881*/ { -1, "[800]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (800) at position 1", "" },
/*882*/ { -1, "[8000]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8000) at position 1", "" },
/*883*/ { -1, "[8001]12345678901234", ZINT_WARN_NONCOMPLIANT, "800112345678901234", "261: AI (8001) data position 13: Invalid winding direction '3'", "" },
/*884*/ { -1, "[8001]12345678901204", 0, "800112345678901204", "", "" },
/*885*/ { -1, "[8001]1234123456789012345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8001) at position 1", "" },
/*886*/ { -1, "[8002]abcdefghijklmnopqrst", 0, "8002abcdefghijklmnopqrst", "", "" },
/*887*/ { -1, "[8002]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8002) at position 1", "" },
/*888*/ { -1, "[8003]01234567890123abcdefghijklmnop", ZINT_WARN_NONCOMPLIANT, "800301234567890123abcdefghijklmnop", "261: AI (8003) data position 14: Bad checksum '3', expected '8'", "" },
/*889*/ { -1, "[8003]01234567890128abcdefghijklmnop", 0, "800301234567890128abcdefghijklmnop", "", "" },
/*890*/ { -1, "[8003]01234567890128abcdefghijklmnopq", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8003) at position 1", "" },
/*891*/ { -1, "[8004]abcdefghijklmnopqrstuvwxyz1234", ZINT_WARN_NONCOMPLIANT, "8004abcdefghijklmnopqrstuvwxyz1234", "261: AI (8004) data position 1: Non-numeric company prefix 'a'", "" },
/*892*/ { -1, "[8004]1234efghijklmnopqrstuvwxyz1234", 0, "80041234efghijklmnopqrstuvwxyz1234", "", "" },
/*893*/ { -1, "[8004]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8004) at position 1", "" },
/*894*/ { -1, "[8004]123", ZINT_WARN_NONCOMPLIANT, "8004123", "261: AI (8004) data position 1: GS1 Company Prefix length 3 too short (minimum 4)", "" },
/*895*/ { -1, "[8005]123456", 0, "8005123456", "", "" },
/*896*/ { -1, "[8005]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8005) at position 1", "" },
/*897*/ { -1, "[8005]1234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8005) at position 1", "" },
/*898*/ { -1, "[8006]123456789012341212", ZINT_WARN_NONCOMPLIANT, "8006123456789012341212", "261: AI (8006) data position 14: Bad checksum '4', expected '1'", "" },
/*899*/ { -1, "[8006]123456789012311212", 0, "8006123456789012311212", "", "" },
/*900*/ { -1, "[8006]12345678901234121", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8006) at position 1", "" },
/*901*/ { -1, "[8006]1234567890123412123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8006) at position 1", "" },
/*902*/ { -1, "[8007]abcdefghijklmnopqrstuvwxyz12345678", ZINT_WARN_NONCOMPLIANT, "8007abcdefghijklmnopqrstuvwxyz12345678", "261: AI (8007) data position 1: Non-alphabetic IBAN country code 'ab'", "" },
/*903*/ { -1, "[8007]AD95EFGHIJKLMNOPQRSTUVWXYZ12345678", 0, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678", "", "" },
/*904*/ { -1, "[8007]AD95EFGHIJKLMNOPQRSTUVWXYZ123456789", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8007) at position 1", "" },
/*905*/ { -1, "[8008]123456121212", ZINT_WARN_NONCOMPLIANT, "8008123456121212", "261: AI (8008) data position 3: Invalid month '34'", "" },
/*906*/ { -1, "[8008]121256121212", ZINT_WARN_NONCOMPLIANT, "8008121256121212", "261: AI (8008) data position 5: Invalid day '56'", "" },
/*907*/ { -1, "[8008]121231121212", 0, "8008121231121212", "", "" },
/*908*/ { -1, "[8008]1234561212", ZINT_WARN_NONCOMPLIANT, "80081234561212", "261: AI (8008) data position 3: Invalid month '34'", "" },
/*909*/ { -1, "[8008]1212311212", 0, "80081212311212", "", "" },
/*910*/ { -1, "[8008]12345612", ZINT_WARN_NONCOMPLIANT, "800812345612", "261: AI (8008) data position 3: Invalid month '34'", "" },
/*911*/ { -1, "[8008]12010112", 0, "800812010112", "", "" },
/*912*/ { -1, "[8008]1234561", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8008) at position 1", "" },
/*913*/ { -1, "[8008]123456121", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8008) at position 1", "" },
/*914*/ { -1, "[8008]12345612121", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8008) at position 1", "" },
/*915*/ { -1, "[8008]1234561212123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8008) at position 1", "" },
/*916*/ { -1, "[8009]12345678901234567890123456789012345678901234567890", 0, "800912345678901234567890123456789012345678901234567890", "", "" },
/*917*/ { -1, "[8009]123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8009) at position 1", "" },
/*918*/ { -1, "[8010]1234abcdefghijklmnopqrstuvwxyz1", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8010) at position 1", "" },
/*919*/ { -1, "[8011]123456789012", 0, "8011123456789012", "", "" },
/*920*/ { -1, "[8011]1234567890123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8011) at position 1", "" },
/*921*/ { -1, "[8012]abcdefghijklmnopqrst", 0, "8012abcdefghijklmnopqrst", "", "" },
/*922*/ { -1, "[8012]abcdefghijklmnopqrstuv", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8012) at position 1", "" },
/*923*/ { -1, "[8013]1234abcdefghijklmnopqrsQP", 0, "80131234abcdefghijklmnopqrsQP", "", "" },
/*924*/ { -1, "[8013]1234abcdefghijklmnopqrsQPv", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8013) at position 1", "" },
/*925*/ { -1, "[8014]1234abcdefghijklmnopqrsQP", 0, "80141234abcdefghijklmnopqrsQP", "", "" },
/*926*/ { -1, "[8014]1234abcdefghijklmnopqrsQPv", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8014) at position 1", "" },
/*927*/ { -1, "[8015]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8015) at position 1", "" },
/*928*/ { -1, "[8016]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8016) at position 1", "" },
/*929*/ { -1, "[8017]313131313131313139", ZINT_WARN_NONCOMPLIANT, "8017313131313131313139", "261: AI (8017) data position 18: Bad checksum '9', expected '1'", "" },
/*930*/ { -1, "[8017]313131313131313131", 0, "8017313131313131313131", "", "" },
/*931*/ { -1, "[8017]31313131313131313", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8017) at position 1", "" },
/*932*/ { -1, "[8017]3131313131313131390", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8017) at position 1", "" },
/*933*/ { -1, "[8018]313131313131313139", ZINT_WARN_NONCOMPLIANT, "8018313131313131313139", "261: AI (8018) data position 18: Bad checksum '9', expected '1'", "" },
/*934*/ { -1, "[8018]313131313131313131", 0, "8018313131313131313131", "", "" },
/*935*/ { -1, "[8018]31313131313131313", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8018) at position 1", "" },
/*936*/ { -1, "[8018]3131313131313131390", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8018) at position 1", "" },
/*937*/ { -1, "[8019]1234567890", 0, "80191234567890", "", "" },
/*938*/ { -1, "[8019]12345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8019) at position 1", "" },
/*939*/ { -1, "[8020]abcdefghijklmnopqrstuvwxy", 0, "8020abcdefghijklmnopqrstuvwxy", "", "" },
/*940*/ { -1, "[8020]abcdefghijklmnopqrstuvwxyz", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8020) at position 1", "" },
/*941*/ { -1, "[8021]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8021) at position 1", "" },
/*942*/ { -1, "[8025]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8025) at position 1", "" },
/*943*/ { -1, "[8026]123456789012341212", ZINT_WARN_NONCOMPLIANT, "8026123456789012341212", "261: AI (8026) data position 14: Bad checksum '4', expected '1'", "" },
/*944*/ { -1, "[8026]123456789012311212", 0, "8026123456789012311212", "", "" },
/*945*/ { -1, "[8026]1234567890123451212", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8026) at position 1", "" },
/*946*/ { -1, "[8026]12345678901234512", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8026) at position 1", "" },
/*947*/ { -1, "[8027]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8027) at position 1", "" },
/*948*/ { -1, "[8030]-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, "8030-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "" },
/*949*/ { -1, "[8030]-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ1", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8030) at position 1", "" },
/*950*/ { -1, "[8031]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8031) at position 1", "" },
/*951*/ { -1, "[8040]123456789012345", 0, "8040123456789012345", "", "" },
/*952*/ { -1, "[8040]12345678901234", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8040) at position 1", "" },
/*953*/ { -1, "[8041]123456789012345", 0, "8041123456789012345", "", "" },
/*954*/ { -1, "[8041]12345678901234", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8041) at position 1", "" },
/*955*/ { -1, "[8042]12345678901234567890123456789012", 0, "804212345678901234567890123456789012", "", "" },
/*956*/ { -1, "[8042]123456789012345678901234567890123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8042) at position 1", "" },
/*957*/ { -1, "[8043]123456789012345678", 0, "8043123456789012345678", "", "" },
/*958*/ { -1, "[8043]1234567890123456781", 0, "80431234567890123456781", "", "" },
/*959*/ { -1, "[8043]12345678901234567812", 0, "804312345678901234567812", "", "" },
/*960*/ { -1, "[8043]123456789012345678123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8043) at position 1", "" },
/*961*/ { -1, "[8044]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8044) at position 1", "" },
/*962*/ { -1, "[8049]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8049) at position 1", "" },
/*963*/ { -1, "[8050]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8050) at position 1", "" },
/*964*/ { -1, "[8060]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8060) at position 1", "" },
/*965*/ { -1, "[8070]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8070) at position 1", "" },
/*966*/ { -1, "[8080]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8080) at position 1", "" },
/*967*/ { -1, "[8090]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8090) at position 1", "" },
/*968*/ { -1, "[8099]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8099) at position 1", "" },
/*969*/ { -1, "[81]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (81) at position 1", "" },
/*970*/ { -1, "[8100]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8100) at position 1", "" },
/*971*/ { -1, "[8109]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8109) at position 1", "" },
/*972*/ { -1, "[8110]5123456789011234565123455123450123105123450123512345678901320123190000", 0, "81105123456789011234565123455123450123105123450123512345678901320123190000", "", "" },
/*973*/ { -1, "[8110]51234567890112345651234551234501231051234501235123456789013201231900001", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8110) at position 1", "" },
/*974*/ { -1, "[8111]1234", 0, "81111234", "", "" },
/*975*/ { -1, "[8111]12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8111) at position 1", "" },
/*976*/ { -1, "[8111]123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8111) at position 1", "" },
/*977*/ { -1, "[8112]1234567890123456789012345678901234567890123456789012345678901234567890", ZINT_WARN_NONCOMPLIANT, "81121234567890123456789012345678901234567890123456789012345678901234567890", "259: Invalid data length for AI (8112) at position 1", "" },
/*978*/ { -1, "[8112]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8112) at position 1", "" },
/*979*/ { -1, "[8112]061234567890121234569123456789012345", 0, "8112061234567890121234569123456789012345", "", "" },
/*980*/ { -1, "[8113]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8113) at position 1", "" },
/*981*/ { -1, "[8120]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8120) at position 1", "" },
/*982*/ { -1, "[8130]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8130) at position 1", "" },
/*983*/ { -1, "[8140]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8140) at position 1", "" },
/*984*/ { -1, "[8150]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8150) at position 1", "" },
/*985*/ { -1, "[8190]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8190) at position 1", "" },
/*986*/ { -1, "[8199]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8199) at position 1", "" },
/*987*/ { -1, "[82]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (82) at position 1", "" },
/*988*/ { -1, "[8200]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "82001234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*989*/ { -1, "^82001234567890123456789012345678901234567890123456789012345678901234567890", 0, "82001234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*990*/ { GS1RAW_MODE, "82001234567890123456789012345678901234567890123456789012345678901234567890", 0, "82001234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*991*/ { -1, "[8201]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8201) at position 1", "" },
/*992*/ { -1, "[8210]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8210) at position 1", "" },
/*993*/ { -1, "[8220]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8220) at position 1", "" },
/*994*/ { -1, "[8230]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8230) at position 1", "" },
/*995*/ { -1, "[8240]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8240) at position 1", "" },
/*996*/ { -1, "[8250]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8250) at position 1", "" },
/*997*/ { -1, "[8290]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8290) at position 1", "" },
/*998*/ { -1, "[8299]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8299) at position 1", "" },
/*999*/ { -1, "[83]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (83) at position 1", "" },
/*1000*/ { -1, "[830]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (830) at position 1", "" },
/*1001*/ { -1, "[8300]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8300) at position 1", "" },
/*1002*/ { -1, "[84]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (84) at position 1", "" },
/*1003*/ { -1, "[840]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (840) at position 1", "" },
/*1004*/ { -1, "[8400]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8400) at position 1", "" },
/*1005*/ { -1, "[85]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (85) at position 1", "" },
/*1006*/ { -1, "[850]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (850) at position 1", "" },
/*1007*/ { -1, "[8500]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8500) at position 1", "" },
/*1008*/ { -1, "[89]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (89) at position 1", "" },
/*1009*/ { -1, "[890]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (890) at position 1", "" },
/*1010*/ { -1, "[8900]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (8900) at position 1", "" },
/*1011*/ { -1, "[90]abcdefghijklmnopqrstuvwxyz1234", 0, "90abcdefghijklmnopqrstuvwxyz1234", "", "" },
/*1012*/ { -1, "[90]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (90) at position 1", "" },
/*1013*/ { -1, "[900]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (900) at position 1", "" },
/*1014*/ { -1, "[9000]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (9000) at position 1", "" },
/*1015*/ { -1, "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "91123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*1016*/ { -1, "[91]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (91) at position 1", "" },
/*1017*/ { -1, "[910]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (910) at position 1", "" },
/*1018*/ { -1, "[9100]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (9100) at position 1", "" },
/*1019*/ { -1, "[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "92123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*1020*/ { -1, "[92]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (92) at position 1", "" },
/*1021*/ { -1, "[920]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (920) at position 1", "" },
/*1022*/ { -1, "[9200]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (9200) at position 1", "" },
/*1023*/ { -1, "[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "93123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*1024*/ { -1, "[93]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (93) at position 1", "" },
/*1025*/ { -1, "[930]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (930) at position 1", "" },
/*1026*/ { -1, "[9300]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (9300) at position 1", "" },
/*1027*/ { -1, "[94]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "94123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*1028*/ { -1, "[94]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (94) at position 1", "" },
/*1029*/ { -1, "[940]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (940) at position 1", "" },
/*1030*/ { -1, "[9400]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (9400) at position 1", "" },
/*1031*/ { -1, "[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "95123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*1032*/ { -1, "[95]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (95) at position 1", "" },
/*1033*/ { -1, "[950]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (950) at position 1", "" },
/*1034*/ { -1, "[9500]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (9500) at position 1", "" },
/*1035*/ { -1, "[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "96123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*1036*/ { -1, "[96]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (96) at position 1", "" },
/*1037*/ { -1, "[960]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (960) at position 1", "" },
/*1038*/ { -1, "[9600]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (9600) at position 1", "" },
/*1039*/ { -1, "[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "97123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*1040*/ { -1, "[97]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (97) at position 1", "" },
/*1041*/ { -1, "[970]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (970) at position 1", "" },
/*1042*/ { -1, "[9700]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (9700) at position 1", "" },
/*1043*/ { -1, "[98]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "98123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*1044*/ { -1, "[98]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (98) at position 1", "" },
/*1045*/ { -1, "[980]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (980) at position 1", "" },
/*1046*/ { -1, "[9800]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (9800) at position 1", "" },
/*1047*/ { -1, "[99]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "99123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", "", "" },
/*1048*/ { -1, "[99]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (99) at position 1", "" },
/*1049*/ { -1, "[990]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (990) at position 1", "" },
/*1050*/ { -1, "[9900]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (9900) at position 1", "" },
/*1051*/ { -1, "[9999]1234", ZINT_ERROR_INVALID_DATA, "", "260: Invalid AI (9999) at position 1", "" },
/*1052*/ { -1, "[01]12345678901234[7006]200101", ZINT_WARN_NONCOMPLIANT, "01123456789012347006200101", "261: AI (01) data position 14: Bad checksum '4', expected '1'", "" },
/*1053*/ { -1, "^01123456789012347006200101", ZINT_WARN_NONCOMPLIANT, "01123456789012347006200101", "261: AI (01) data position 14: Bad checksum '4', expected '1'", "" },
/*1054*/ { GS1RAW_MODE, "01123456789012347006200101", ZINT_WARN_NONCOMPLIANT, "01123456789012347006200101", "261: AI (01) data position 14: Bad checksum '4', expected '1'", "" },
/*1055*/ { -1, "[01]12345678901231[7006]200101", 0, "01123456789012317006200101", "", "" },
/*1056*/ { -1, "^01123456789012317006200101", 0, "01123456789012317006200101", "", "" },
/*1057*/ { GS1RAW_MODE, "01123456789012317006200101", 0, "01123456789012317006200101", "", "" },
/*1058*/ { -1, "[3900]1234567890[01]12345678901234", ZINT_WARN_NONCOMPLIANT, "39001234567890\0350112345678901234", "261: AI (01) data position 14: Bad checksum '4', expected '1'", "" },
/*1059*/ { -1, "^39001234567890^0112345678901234", ZINT_WARN_NONCOMPLIANT, "39001234567890\0350112345678901234", "261: AI (01) data position 14: Bad checksum '4', expected '1'", "" },
/*1060*/ { GS1RAW_MODE, "39001234567890\0350112345678901234", ZINT_WARN_NONCOMPLIANT, "39001234567890\0350112345678901234", "261: AI (01) data position 14: Bad checksum '4', expected '1'", "" },
/*1061*/ { -1, "[3900]1234567890[01]12345678901231", 0, "39001234567890\0350112345678901231", "", "" },
/*1062*/ { -1, "[253]12345678901234[3901]12345678901234[20]12", ZINT_WARN_NONCOMPLIANT, "25312345678901234\035390112345678901234\0352012", "261: AI (253) data position 13: Bad checksum '3', expected '8'", "" },
/*1063*/ { -1, "^25312345678901234^390112345678901234^2012", ZINT_WARN_NONCOMPLIANT, "25312345678901234\035390112345678901234\0352012", "261: AI (253) data position 13: Bad checksum '3', expected '8'", "" },
/*1064*/ { GS1RAW_MODE, "25312345678901234\035390112345678901234\0352012", ZINT_WARN_NONCOMPLIANT, "25312345678901234\035390112345678901234\0352012", "261: AI (253) data position 13: Bad checksum '3', expected '8'", "" },
/*1065*/ { -1, "[253]12345678901284[3901]12345678901234[20]12", 0, "25312345678901284\035390112345678901234\0352012", "", "" },
/*1066*/ { -1, "[253]12345678901234[01]12345678901234[3901]12345678901234[20]12", ZINT_WARN_NONCOMPLIANT, "25312345678901234\0350112345678901234390112345678901234\0352012", "261: AI (01) data position 14: Bad checksum '4', expected '1'", "" },
/*1067*/ { -1, "^25312345678901234^0112345678901234390112345678901234^2012", ZINT_WARN_NONCOMPLIANT, "25312345678901234\0350112345678901234390112345678901234\0352012", "261: AI (01) data position 14: Bad checksum '4', expected '1'", "" },
/*1068*/ { GS1RAW_MODE, "25312345678901234\0350112345678901234390112345678901234\0352012", ZINT_WARN_NONCOMPLIANT, "25312345678901234\0350112345678901234390112345678901234\0352012", "261: AI (01) data position 14: Bad checksum '4', expected '1'", "" },
/*1069*/ { -1, "[253]12345678901284[01]12345678901231[3901]12345678901234[20]12", 0, "25312345678901284\0350112345678901231390112345678901234\0352012", "", "" },
/*1070*/ { -1, "^25312345678901284^0112345678901231390112345678901234^2012", 0, "25312345678901284\0350112345678901231390112345678901234\0352012", "", "" },
/*1071*/ { GS1RAW_MODE, "25312345678901284\0350112345678901231390112345678901234\0352012", 0, "25312345678901284\0350112345678901231390112345678901234\0352012", "", "" },
/*1072*/ { -1, "[01]12345678901231[0A]12345678901231[20]12", ZINT_ERROR_INVALID_DATA, "", "257: Invalid AI at position 19 in input (non-numeric characters in AI)", "" },
/*1073*/ { -1, "^01123456789012310A12345678901231^2012", ZINT_ERROR_INVALID_DATA, "", "857: Invalid AI at position 18", "" },
/*1074*/ { GS1RAW_MODE, "01123456789012310A12345678901231\0352012", ZINT_ERROR_INVALID_DATA, "", "857: Invalid AI at position 17", "" },
/*1075*/ { -1, "[01]12345678901231[0]12345678901231[20]12", ZINT_ERROR_INVALID_DATA, "", "256: Invalid AI at position 19 in input (AI too short)", "" },
/*1076*/ { -1, "[01]12345678901231[]12345678901231[20]12", ZINT_ERROR_INVALID_DATA, "", "256: Invalid AI at position 19 in input (AI too short)", "" },
};
const int data_size = ARRAY_SIZE(data);
int i, length, ret;
struct zint_symbol *symbol = NULL;
int reduced_length ZINT_TESTUTIL_SANITIZEM_INIT;
char reduced[1024] ZINT_TESTUTIL_SANITIZEM_INIT;
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 = (int) strlen(data[i].data);
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\", \"%s\" },\n",
i, testUtilInputModeName(data[i].input_mode),
testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), testUtilErrorName(ret),
testUtilEscape(data[i].expected, (int) strlen(data[i].expected), escaped2, sizeof(escaped2)),
symbol->errtxt, data[i].comment);
} 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) {
assert_zero(strcmp(reduced, data[i].expected), "i:%d strcmp(%s, %s) != 0\n",
i, reduced, data[i].expected);
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_lint(const testCtx *const p_ctx) {
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, "[00]123456789012345675", 0, "00123456789012345675", "" }, /* numeric */
/* 1*/ { -1, "^00123456789012345675", 0, "00123456789012345675", "" }, /* numeric */
/* 2*/ { GS1RAW_MODE, "00123456789012345675", 0, "00123456789012345675", "" }, /* numeric */
/* 3*/ { -1, "[00]12345678901234567.", ZINT_WARN_NONCOMPLIANT, "0012345678901234567.", "261: AI (00) data position 18: Non-numeric character '.'" }, /* numeric */
/* 4*/ { -1, "^0012345678901234567.", ZINT_WARN_NONCOMPLIANT, "0012345678901234567.", "261: AI (00) data position 18: Non-numeric character '.'" }, /* numeric */
/* 5*/ { GS1RAW_MODE, "0012345678901234567.", ZINT_WARN_NONCOMPLIANT, "0012345678901234567.", "261: AI (00) data position 18: Non-numeric character '.'" }, /* numeric */
/* 6*/ { -1, "[00]123456789012345678", ZINT_WARN_NONCOMPLIANT, "00123456789012345678", "261: AI (00) data position 18: Bad checksum '8', expected '5'" }, /* csum */
/* 7*/ { -1, "^00123456789012345678", ZINT_WARN_NONCOMPLIANT, "00123456789012345678", "261: AI (00) data position 18: Bad checksum '8', expected '5'" }, /* csum */
/* 8*/ { GS1RAW_MODE, "00123456789012345678", ZINT_WARN_NONCOMPLIANT, "00123456789012345678", "261: AI (00) data position 18: Bad checksum '8', expected '5'" }, /* csum */
/* 9*/ { -1, "[00]1234567890123456759", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (00) at position 1" }, /* length */
/* 10*/ { -1, "[00]12345678901234567", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (00) at position 1" }, /* length */
/* 11*/ { -1, "[00]123456789012345675A", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (00) at position 1" }, /* length */
/* 12*/ { -1, "[91]!\"%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", 0, "91!\"%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "" }, /* cset82 */
/* 13*/ { -1, "[91] ", ZINT_WARN_NONCOMPLIANT, "91 ", "261: AI (91) data position 1: Invalid CSET 82 character ' '" }, /* cset82 */
/* 14*/ { -1, "^91 ", ZINT_WARN_NONCOMPLIANT, "91 ", "261: AI (91) data position 1: Invalid CSET 82 character ' '" }, /* cset82 */
/* 15*/ { GS1RAW_MODE, "91 ", ZINT_WARN_NONCOMPLIANT, "91 ", "261: AI (91) data position 1: Invalid CSET 82 character ' '" }, /* cset82 */
/* 16*/ { -1, "[91]#", ZINT_WARN_NONCOMPLIANT, "91#", "261: AI (91) data position 1: Invalid CSET 82 character '#'" }, /* cset82 */
/* 17*/ { -1, "[91]a^", ZINT_WARN_NONCOMPLIANT, "91a^", "261: AI (91) data position 2: Invalid CSET 82 character '^'" }, /* cset82 */
/* 18*/ { -1, "^91a^", 0, "91a", "" }, /* cset82 - caret interpreted as FNC1 */
/* 19*/ { GS1RAW_MODE, "91a^", ZINT_WARN_NONCOMPLIANT, "91a^", "261: AI (91) data position 2: Invalid CSET 82 character '^'" }, /* cset82 */
/* 20*/ { -1, "[91]a^345", ZINT_WARN_NONCOMPLIANT, "91a^345", "261: AI (91) data position 2: Invalid CSET 82 character '^'" }, /* cset82 */
/* 21*/ { -1, "^91a^345", ZINT_ERROR_INVALID_DATA, "91a^345", "856: Invalid AI (34) at position 6" }, /* cset82 - caret interpreted as FNC1 */
/* 22*/ { GS1RAW_MODE, "91a^345", ZINT_WARN_NONCOMPLIANT, "91a^345", "261: AI (91) data position 2: Invalid CSET 82 character '^'" }, /* cset82 */
/* 23*/ { -1, "[91]a^3450123456", ZINT_WARN_NONCOMPLIANT, "91a^3450123456", "261: AI (91) data position 2: Invalid CSET 82 character '^'" }, /* cset82 */
/* 24*/ { -1, "^91a^3450123456", 0, "91a\0353450123456", "" }, /* cset82 - caret interpreted as FNC1 */
/* 25*/ { GS1RAW_MODE, "91a^3450123456", ZINT_WARN_NONCOMPLIANT, "91a^3450123456", "261: AI (91) data position 2: Invalid CSET 82 character '^'" }, /* cset82 */
/* 26*/ { -1, "[91]!\"%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxy{", ZINT_WARN_NONCOMPLIANT, "91!\"%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxy{", "261: AI (91) data position 82: Invalid CSET 82 character '{'" }, /* cset82 */
/* 27*/ { -1, "^91!\"%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxy{", ZINT_WARN_NONCOMPLIANT, "91!\"%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxy{", "261: AI (91) data position 82: Invalid CSET 82 character '{'" }, /* cset82 */
/* 28*/ { GS1RAW_MODE, "91!\"%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxy{", ZINT_WARN_NONCOMPLIANT, "91!\"%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxy{", "261: AI (91) data position 82: Invalid CSET 82 character '{'" }, /* cset82 */
/* 29*/ { -1, "[8010]0123#-/456789ABCDEFGHIJKLMNOPQ", 0, "80100123#-/456789ABCDEFGHIJKLMNOPQ", "" }, /* cset39 */
/* 30*/ { -1, "^80100123#-/456789ABCDEFGHIJKLMNOPQ", 0, "80100123#-/456789ABCDEFGHIJKLMNOPQ", "" }, /* cset39 */
/* 31*/ { GS1RAW_MODE, "80100123#-/456789ABCDEFGHIJKLMNOPQ", 0, "80100123#-/456789ABCDEFGHIJKLMNOPQ", "" }, /* cset39 */
/* 32*/ { -1, "[8010]6789ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, "80106789ABCDEFGHIJKLMNOPQRSTUVWXYZ", "" }, /* cset39 */
/* 33*/ { -1, "[8010]01!", ZINT_WARN_NONCOMPLIANT, "801001!", "261: AI (8010) data position 3: Invalid CSET 39 character '!'" }, /* cset39 */
/* 34*/ { -1, "^801001!", ZINT_WARN_NONCOMPLIANT, "801001!", "261: AI (8010) data position 3: Invalid CSET 39 character '!'" }, /* cset39 */
/* 35*/ { GS1RAW_MODE, "801001!", ZINT_WARN_NONCOMPLIANT, "801001!", "261: AI (8010) data position 3: Invalid CSET 39 character '!'" }, /* cset39 */
/* 36*/ { -1, "[8010]01a", ZINT_WARN_NONCOMPLIANT, "801001a", "261: AI (8010) data position 3: Invalid CSET 39 character 'a'" }, /* cset39 */
/* 37*/ { -1, "[8010]6789ABCDEFGHIJKLMNOPQRSTUVWXY}", ZINT_WARN_NONCOMPLIANT, "80106789ABCDEFGHIJKLMNOPQRSTUVWXY}", "261: AI (8010) data position 30: Invalid CSET 39 character '}'" }, /* cset39 */
/* 38*/ { -1, "[8030]-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", 0, "8030-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "" }, /* cset64 */
/* 39*/ { -1, "[8030]+0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", ZINT_WARN_NONCOMPLIANT, "8030+0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "261: AI (8030) data position 1: Invalid CSET 64 character '+'" }, /* cset64 */
/* 40*/ { -1, "[8030]-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^abcdefghijklmnopqrstuvwxyz", ZINT_WARN_NONCOMPLIANT, "8030-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^abcdefghijklmnopqrstuvwxyz", "261: AI (8030) data position 38: Invalid CSET 64 character '^'" }, /* cset64 */
/* 41*/ { -1, "[8030]-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz==", 0, "8030-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz==", "" }, /* cset64 */
/* 42*/ { -1, "[8030]-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz=", ZINT_WARN_NONCOMPLIANT, "8030-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz=", "261: AI (8030) data position 65: Invalid CSET 64 character '='" }, /* cset64 */
/* 43*/ { -1, "[8030]-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz1=", 0, "8030-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz1=", "" }, /* cset64 */
/* 44*/ { -1, "[8030]-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz", ZINT_WARN_NONCOMPLIANT, "8030-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz", "261: AI (8030) data position 38: Invalid CSET 64 character '='" }, /* cset64 */
/* 45*/ { -1, "[8010]#-/0123456789ABCDEFGHIJKLMNOPQ", ZINT_WARN_NONCOMPLIANT, "8010#-/0123456789ABCDEFGHIJKLMNOPQ", "261: AI (8010) data position 1: Non-numeric company prefix '#'" }, /* key */
/* 46*/ { -1, "[8010]0#-/123456789ABCDEFGHIJKLMNOPQ", ZINT_WARN_NONCOMPLIANT, "80100#-/123456789ABCDEFGHIJKLMNOPQ", "261: AI (8010) data position 2: Non-numeric company prefix '#'" }, /* key */
/* 47*/ { -1, "[8010]01#-/123456789ABCDEFGHIJKLMNOP", ZINT_WARN_NONCOMPLIANT, "801001#-/123456789ABCDEFGHIJKLMNOP", "261: AI (8010) data position 3: Non-numeric company prefix '#'" }, /* key */
/* 48*/ { -1, "[8010]012#-/123456789ABCDEFGHIJKLMNO", ZINT_WARN_NONCOMPLIANT, "8010012#-/123456789ABCDEFGHIJKLMNO", "261: AI (8010) data position 4: Non-numeric company prefix '#'" }, /* key */
/* 49*/ { -1, "^8010012#-/123456789ABCDEFGHIJKLMNO", ZINT_WARN_NONCOMPLIANT, "8010012#-/123456789ABCDEFGHIJKLMNO", "261: AI (8010) data position 4: Non-numeric company prefix '#'" }, /* key */
/* 50*/ { GS1RAW_MODE, "8010012#-/123456789ABCDEFGHIJKLMNO", ZINT_WARN_NONCOMPLIANT, "8010012#-/123456789ABCDEFGHIJKLMNO", "261: AI (8010) data position 4: Non-numeric company prefix '#'" }, /* key */
/* 51*/ { -1, "[8010]0123#-/123456789ABCDEFGHIJKLMN", 0, "80100123#-/123456789ABCDEFGHIJKLMN", "" }, /* key */
/* 52*/ { -1, "[401]0", ZINT_WARN_NONCOMPLIANT, "4010", "259: Invalid data length for AI (401) at position 1" }, /* key */
/* 53*/ { -1, "^4010", ZINT_WARN_NONCOMPLIANT, "4010", "259: Invalid data length for AI (401) at position 2" }, /* key */
/* 54*/ { GS1RAW_MODE, "4010", ZINT_WARN_NONCOMPLIANT, "4010", "259: Invalid data length for AI (401) at position 1" }, /* key */
/* 55*/ { -1, "[8013]1987654Ad4X4bL5ttr2310c2K", 0, "80131987654Ad4X4bL5ttr2310c2K", "" }, /* csumalpha */
/* 56*/ { -1, "[8013]12345678901234567890123NT", 0, "801312345678901234567890123NT", "" }, /* csumalpha */
/* 57*/ { -1, "[8013]12345_ABCDEFGHIJKLMCP", 0, "801312345_ABCDEFGHIJKLMCP", "" }, /* csumalpha */
/* 58*/ { -1, "[8013]12345_NOPQRSTUVWXYZDN", 0, "801312345_NOPQRSTUVWXYZDN", "" }, /* csumalpha */
/* 59*/ { -1, "[8013]12345_abcdefghijklmN3", 0, "801312345_abcdefghijklmN3", "" }, /* csumalpha */
/* 60*/ { -1, "[8013]12345_nopqrstuvwxyzP2", 0, "801312345_nopqrstuvwxyzP2", "" }, /* csumalpha */
/* 61*/ { -1, "[8013]12345_!\"%&'()*+,-./LC", 0, "801312345_!\"%&'()*+,-./LC", "" }, /* csumalpha */
/* 62*/ { -1, "[8013]12345_0123456789:;<=>?62", 0, "801312345_0123456789:;<=>?62", "" }, /* csumalpha */
/* 63*/ { -1, "[8013]7907665Bm8v2AB", 0, "80137907665Bm8v2AB", "" }, /* csumalpha */
/* 64*/ { -1, "[8013]97850l6KZm0yCD", 0, "801397850l6KZm0yCD", "" }, /* csumalpha */
/* 65*/ { -1, "[8013]225803106GSpEF", 0, "8013225803106GSpEF", "" }, /* csumalpha */
/* 66*/ { -1, "[8013]149512464PM+GH", 0, "8013149512464PM+GH", "" }, /* csumalpha */
/* 67*/ { -1, "[8013]62577B8fRG7HJK", 0, "801362577B8fRG7HJK", "" }, /* csumalpha */
/* 68*/ { -1, "[8013]515942070CYxLM", 0, "8013515942070CYxLM", "" }, /* csumalpha */
/* 69*/ { -1, "[8013]390800494sP6NP", 0, "8013390800494sP6NP", "" }, /* csumalpha */
/* 70*/ { -1, "[8013]386830132uO+QR", 0, "8013386830132uO+QR", "" }, /* csumalpha */
/* 71*/ { -1, "[8013]53395376X1:nST", 0, "801353395376X1:nST", "" }, /* csumalpha */
/* 72*/ { -1, "[8013]957813138Sb6UV", 0, "8013957813138Sb6UV", "" }, /* csumalpha */
/* 73*/ { -1, "[8013]530790no0qOgWX", 0, "8013530790no0qOgWX", "" }, /* csumalpha */
/* 74*/ { -1, "[8013]62185314IvwmYZ", 0, "801362185314IvwmYZ", "" }, /* csumalpha */
/* 75*/ { -1, "[8013]23956qk1&dB!23", 0, "801323956qk1&dB!23", "" }, /* csumalpha */
/* 76*/ { -1, "[8013]794394895ic045", 0, "8013794394895ic045", "" }, /* csumalpha */
/* 77*/ { -1, "[8013]57453Uq3qA<H67", 0, "801357453Uq3qA<H67", "" }, /* csumalpha */
/* 78*/ { -1, "[8013]62185314IvwmYZ", 0, "801362185314IvwmYZ", "" }, /* csumalpha */
/* 79*/ { -1, "[8013]0881063PhHvY89", 0, "80130881063PhHvY89", "" }, /* csumalpha */
/* 80*/ { -1, "[8013]00000!HV", 0, "801300000!HV", "" }, /* csumalpha */
/* 81*/ { -1, "[8013]99999zzzzzzzzzzzzzzzzzzT2", 0, "801399999zzzzzzzzzzzzzzzzzzT2", "" }, /* csumalpha */
/* 82*/ { -1, "[8013]1987654Ad4X4bL5ttr2310cXK", ZINT_WARN_NONCOMPLIANT, "80131987654Ad4X4bL5ttr2310cXK", "261: AI (8013) data position 24: Bad checksum 'XK', expected '2K'" }, /* csumalpha */
/* 83*/ { -1, "[8013]1987654Ad4X4bL5ttr2310c2X", ZINT_WARN_NONCOMPLIANT, "80131987654Ad4X4bL5ttr2310c2X", "261: AI (8013) data position 24: Bad checksum '2X', expected '2K'" }, /* csumalpha */
/* 84*/ { -1, "[8013]198765£Ad4X4bL5ttr2310c2K", ZINT_ERROR_INVALID_DATA, "", "250: Extended ASCII characters are not supported by GS1" }, /* csumalpha */
/* 85*/ { -1, "[8013]1987654Ad4X4bL5ttr2310£2K", ZINT_ERROR_INVALID_DATA, "", "250: Extended ASCII characters are not supported by GS1" }, /* csumalpha */
/* 86*/ { -1, "[8013]1987654Ad4X4bL5ttr2310cxK", ZINT_WARN_NONCOMPLIANT, "80131987654Ad4X4bL5ttr2310cxK", "261: AI (8013) data position 24: Bad checksum 'xK', expected '2K'" }, /* csumalpha */
/* 87*/ { -1, "[8013]1987654Ad4X4bL5ttr2310c2x", ZINT_WARN_NONCOMPLIANT, "80131987654Ad4X4bL5ttr2310c2x", "261: AI (8013) data position 24: Bad checksum '2x', expected '2K'" }, /* csumalpha */
/* 88*/ { -1, "[8013]12345678901234567890123NTX", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8013) at position 1" }, /* csumalpha */
/* 89*/ { -1, "[8013]1", ZINT_WARN_NONCOMPLIANT, "80131", "259: Invalid data length for AI (8013) at position 1" }, /* csumalpha */
/* 90*/ { -1, "[8013]12", ZINT_WARN_NONCOMPLIANT, "801312", "261: AI (8013) data position 1: Bad checksum '12', expected '22'" }, /* csumalpha */
/* 91*/ { -1, "[8013]22229Z", 0, "801322229Z", "" }, /* csumalpha */
/* 92*/ { -1, "[8013]123", ZINT_WARN_NONCOMPLIANT, "8013123", "261: AI (8013) data position 2: Bad checksum '23', expected '2W'" }, /* csumalpha */
/* 93*/ { -1, "[8013]12349Z", 0, "801312349Z", "" }, /* csumalpha */
/* 94*/ { -1, "[8013]00000!HW", ZINT_WARN_NONCOMPLIANT, "801300000!HW", "261: AI (8013) data position 7: Bad checksum 'HW', expected 'HV'" }, /* csumalpha */
/* 95*/ { -1, "[8013]7907665Bm8v2BB", ZINT_WARN_NONCOMPLIANT, "80137907665Bm8v2BB", "261: AI (8013) data position 13: Bad checksum 'BB', expected 'AB'" }, /* csumalpha */
/* 96*/ { -1, "[8013]9999zzzzzzzzzzzzzzzzzzzNX", 0, "80139999zzzzzzzzzzzzzzzzzzzNX", "" }, /* csumalpha */
/* 97*/ { -1, "[01]09521234567899[10]LOT[8014]1234567MA5", ZINT_WARN_NONCOMPLIANT, "010952123456789910LOT\03580141234567MA5", "261: AI (8014) data position 9: Bad checksum 'A5', expected 'A4'" }, /* csumalpha, issue #332 */
/* 98*/ { -1, "[11]120100", 0, "11120100", "" }, /* yymmd0 */
/* 99*/ { -1, "[11]120131", 0, "11120131", "" }, /* yymmd0 */
/*100*/ { -1, "[11]120132", ZINT_WARN_NONCOMPLIANT, "11120132", "261: AI (11) data position 5: Invalid day '32'" }, /* yymmd0 */
/*101*/ { -1, "[11]120229", 0, "11120229", "" }, /* yymmd0 */
/*102*/ { -1, "[11]110229", ZINT_WARN_NONCOMPLIANT, "11110229", "261: AI (11) data position 5: Invalid day '29'" }, /* yymmd0 */
/*103*/ { -1, "[11]000229", 0, "11000229", "" }, /* yymmd0 NOTE: will be false in 2050 */
/*104*/ { -1, "[11]480229", 0, "11480229", "" }, /* yymmd0 */
/*105*/ { -1, "[11]500229", ZINT_WARN_NONCOMPLIANT, "11500229", "261: AI (11) data position 5: Invalid day '29'" }, /* yymmd0 */
/*106*/ { -1, "[11]980229", ZINT_WARN_NONCOMPLIANT, "11980229", "261: AI (11) data position 5: Invalid day '29'" }, /* yymmd0 */
/*107*/ { -1, "[11]110228", 0, "11110228", "" }, /* yymmd0 */
/*108*/ { -1, "[11]120230", ZINT_WARN_NONCOMPLIANT, "11120230", "261: AI (11) data position 5: Invalid day '30'" }, /* yymmd0 */
/*109*/ { -1, "[11]120331", 0, "11120331", "" }, /* yymmd0 */
/*110*/ { -1, "[11]120332", ZINT_WARN_NONCOMPLIANT, "11120332", "261: AI (11) data position 5: Invalid day '32'" }, /* yymmd0 */
/*111*/ { -1, "[11]120430", 0, "11120430", "" }, /* yymmd0 */
/*112*/ { -1, "[11]120431", ZINT_WARN_NONCOMPLIANT, "11120431", "261: AI (11) data position 5: Invalid day '31'" }, /* yymmd0 */
/*113*/ { -1, "[11]120531", 0, "11120531", "" }, /* yymmd0 */
/*114*/ { -1, "[11]120532", ZINT_WARN_NONCOMPLIANT, "11120532", "261: AI (11) data position 5: Invalid day '32'" }, /* yymmd0 */
/*115*/ { -1, "[11]120630", 0, "11120630", "" }, /* yymmd0 */
/*116*/ { -1, "[11]120631", ZINT_WARN_NONCOMPLIANT, "11120631", "261: AI (11) data position 5: Invalid day '31'" }, /* yymmd0 */
/*117*/ { -1, "[11]120731", 0, "11120731", "" }, /* yymmd0 */
/*118*/ { -1, "[11]120732", ZINT_WARN_NONCOMPLIANT, "11120732", "261: AI (11) data position 5: Invalid day '32'" }, /* yymmd0 */
/*119*/ { -1, "[11]120831", 0, "11120831", "" }, /* yymmd0 */
/*120*/ { -1, "[11]120832", ZINT_WARN_NONCOMPLIANT, "11120832", "261: AI (11) data position 5: Invalid day '32'" }, /* yymmd0 */
/*121*/ { -1, "[11]120930", 0, "11120930", "" }, /* yymmd0 */
/*122*/ { -1, "[11]120931", ZINT_WARN_NONCOMPLIANT, "11120931", "261: AI (11) data position 5: Invalid day '31'" }, /* yymmd0 */
/*123*/ { -1, "[11]121031", 0, "11121031", "" }, /* yymmd0 */
/*124*/ { -1, "[11]121032", ZINT_WARN_NONCOMPLIANT, "11121032", "261: AI (11) data position 5: Invalid day '32'" }, /* yymmd0 */
/*125*/ { -1, "[11]121130", 0, "11121130", "" }, /* yymmd0 */
/*126*/ { -1, "[11]121131", ZINT_WARN_NONCOMPLIANT, "11121131", "261: AI (11) data position 5: Invalid day '31'" }, /* yymmd0 */
/*127*/ { -1, "[11]121200", 0, "11121200", "" }, /* yymmd0 */
/*128*/ { -1, "[11]121231", 0, "11121231", "" }, /* yymmd0 */
/*129*/ { -1, "[11]121232", ZINT_WARN_NONCOMPLIANT, "11121232", "261: AI (11) data position 5: Invalid day '32'" }, /* yymmd0 */
/*130*/ { -1, "[11]120031", ZINT_WARN_NONCOMPLIANT, "11120031", "261: AI (11) data position 3: Invalid month '00'" }, /* yymmd0 */
/*131*/ { -1, "[11]121331", ZINT_WARN_NONCOMPLIANT, "11121331", "261: AI (11) data position 3: Invalid month '13'" }, /* yymmd0 */
/*132*/ { -1, "[4326]121231", 0, "4326121231", "" }, /* yymmdd */
/*133*/ { -1, "[4326]121200", ZINT_WARN_NONCOMPLIANT, "4326121200", "261: AI (4326) data position 5: Invalid day '00'" }, /* yymmdd */
/*134*/ { -1, "[4326]120031", ZINT_WARN_NONCOMPLIANT, "4326120031", "261: AI (4326) data position 3: Invalid month '00'" }, /* yymmdd */
/*135*/ { -1, "[4326]129931", ZINT_WARN_NONCOMPLIANT, "4326129931", "261: AI (4326) data position 3: Invalid month '99'" }, /* yymmdd */
/*136*/ { -1, "[4326]121299", ZINT_WARN_NONCOMPLIANT, "4326121299", "261: AI (4326) data position 5: Invalid day '99'" }, /* yymmdd */
/*137*/ { -1, "[4326]120230", ZINT_WARN_NONCOMPLIANT, "4326120230", "261: AI (4326) data position 5: Invalid day '30'" }, /* yymmdd */
/*138*/ { -1, "[4326]110229", ZINT_WARN_NONCOMPLIANT, "4326110229", "261: AI (4326) data position 5: Invalid day '29'" }, /* yymmdd */
/*139*/ { -1, "[4326]000229", 0, "4326000229", "" }, /* yymmdd NOTE: will be false in 2050 */
/*140*/ { -1, "[4326]940229", ZINT_WARN_NONCOMPLIANT, "4326940229", "261: AI (4326) data position 5: Invalid day '29'" }, /* yymmdd */
/*141*/ { -1, "[7250]20241231", 0, "725020241231", "" }, /* yyyymmdd */
/*142*/ { -1, "[7250]99991231", 0, "725099991231", "" }, /* yyyymmdd */
/*143*/ { -1, "[7250]00001231", 0, "725000001231", "" }, /* yyyymmdd */
/*144*/ { -1, "[7250]20241200", ZINT_WARN_NONCOMPLIANT, "725020241200", "261: AI (7250) data position 7: Invalid day '00'" }, /* yyyymmdd */
/*145*/ { -1, "[7250]20240001", ZINT_WARN_NONCOMPLIANT, "725020240001", "261: AI (7250) data position 5: Invalid month '00'" }, /* yyyymmdd */
/*146*/ { -1, "[7250]20241301", ZINT_WARN_NONCOMPLIANT, "725020241301", "261: AI (7250) data position 5: Invalid month '13'" }, /* yyyymmdd */
/*147*/ { -1, "[7250]20240230", ZINT_WARN_NONCOMPLIANT, "725020240230", "261: AI (7250) data position 7: Invalid day '30'" }, /* yyyymmdd */
/*148*/ { -1, "[7250]20240229", 0, "725020240229", "" }, /* yyyymmdd */
/*149*/ { -1, "[7250]20230229", ZINT_WARN_NONCOMPLIANT, "725020230229", "261: AI (7250) data position 7: Invalid day '29'" }, /* yyyymmdd */
/*150*/ { -1, "[7250]20000229", 0, "725020000229", "" }, /* yyyymmdd */
/*151*/ { -1, "[7250]30000229", ZINT_WARN_NONCOMPLIANT, "725030000229", "261: AI (7250) data position 7: Invalid day '29'" }, /* yyyymmdd */
/*152*/ { -1, "[7250]20240930", 0, "725020240930", "" }, /* yyyymmdd */
/*153*/ { -1, "[7250]20240931", ZINT_WARN_NONCOMPLIANT, "725020240931", "261: AI (7250) data position 7: Invalid day '31'" }, /* yyyymmdd */
/*154*/ { -1, "[4324]1212310000", 0, "43241212310000", "" }, /* hh,mm */
/*155*/ { -1, "[4324]1212312359", 0, "43241212312359", "" }, /* hh,mm */
/*156*/ { -1, "[4324]1212312400", ZINT_WARN_NONCOMPLIANT, "43241212312400", "261: AI (4324) data position 7: Invalid hour of day '24'" }, /* hh,mm */
/*157*/ { -1, "[4324]1212312360", ZINT_WARN_NONCOMPLIANT, "43241212312360", "261: AI (4324) data position 9: Invalid minutes in the hour '60'" }, /* hh,mm */
/*158*/ { -1, "[8008]121231000000", 0, "8008121231000000", "" }, /* hh,mm,ss */
/*159*/ { -1, "^8008121231000000", 0, "8008121231000000", "" }, /* hh,mm,ss */
/*160*/ { GS1RAW_MODE, "8008121231000000", 0, "8008121231000000", "" }, /* hh,mm,ss */
/*161*/ { -1, "[8008]1212310000", 0, "80081212310000", "" }, /* hh,mm[,ss] */
/*162*/ { -1, "[8008]12123100", 0, "800812123100", "" }, /* hh[,mm,ss] */
/*163*/ { -1, "[8008]12123123", 0, "800812123123", "" }, /* hh[,mm,ss] */
/*164*/ { -1, "[8008]12123124", ZINT_WARN_NONCOMPLIANT, "800812123124", "261: AI (8008) data position 7: Invalid hour of day '24'" }, /* hh[,mm,ss] */
/*165*/ { -1, "[8008]1212312359", 0, "80081212312359", "" }, /* hh,mm[,ss] */
/*166*/ { -1, "[8008]1212312360", ZINT_WARN_NONCOMPLIANT, "80081212312360", "261: AI (8008) data position 9: Invalid minutes in the hour '60'" }, /* hh,mm[,ss] */
/*167*/ { -1, "[8008]121231235959", 0, "8008121231235959", "" }, /* hh,mm,ss */
/*168*/ { -1, "[8008]121231235960", ZINT_WARN_NONCOMPLIANT, "8008121231235960", "261: AI (8008) data position 11: Invalid seconds in the minute '60'" }, /* hh,mm,ss */
/*169*/ { -1, "[422]004", 0, "422004", "" }, /* iso3166 */
/*170*/ { -1, "^422004", 0, "422004", "" }, /* iso3166 */
/*171*/ { GS1RAW_MODE, "422004", 0, "422004", "" }, /* iso3166 */
/*172*/ { -1, "[422]894", 0, "422894", "" }, /* iso3166 */
/*173*/ { -1, "[422]00", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (422) at position 1" }, /* iso3166 */
/*174*/ { -1, "^42200", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (422) at position 2" }, /* iso3166 */
/*175*/ { GS1RAW_MODE, "42200", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (422) at position 1" }, /* iso3166 */
/*176*/ { -1, "[422]0A", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (422) at position 1" }, /* iso3166 */
/*177*/ { -1, "^4220A", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (422) at position 2" }, /* iso3166 */
/*178*/ { GS1RAW_MODE, "4220A", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (422) at position 1" }, /* iso3166 */
/*179*/ { -1, "[422]003", ZINT_WARN_NONCOMPLIANT, "422003", "261: AI (422) data position 1: Unknown country code '003'" }, /* iso3166 */
/*180*/ { -1, "^422003", ZINT_WARN_NONCOMPLIANT, "422003", "261: AI (422) data position 1: Unknown country code '003'" }, /* iso3166 */
/*181*/ { GS1RAW_MODE, "422003", ZINT_WARN_NONCOMPLIANT, "422003", "261: AI (422) data position 1: Unknown country code '003'" }, /* iso3166 */
/*182*/ { -1, "[422]895", ZINT_WARN_NONCOMPLIANT, "422895", "261: AI (422) data position 1: Unknown country code '895'" }, /* iso3166 */
/*183*/ { -1, "[422]999", ZINT_WARN_NONCOMPLIANT, "422999", "261: AI (422) data position 1: Unknown country code '999'" }, /* iso3166 */
/*184*/ { -1, "[423]004", 0, "423004", "" }, /* iso3166list */
/*185*/ { -1, "[423]004894", 0, "423004894", "" }, /* iso3166list */
/*186*/ { -1, "[423]004894004", 0, "423004894004", "" }, /* iso3166list */
/*187*/ { -1, "[423]004894004894", 0, "423004894004894", "" }, /* iso3166list */
/*188*/ { -1, "[423]004894004894004", 0, "423004894004894004", "" }, /* iso3166list */
/*189*/ { -1, "[423]004894004894004894", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (423) at position 1" }, /* iso3166list */
/*190*/ { -1, "[423]123894004894004894", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (423) at position 1" }, /* iso3166list */
/*191*/ { -1, "[423]A04894004894004894", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (423) at position 1" }, /* iso3166list */
/*192*/ { -1, "[423]00489400489400489", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (423) at position 1" }, /* iso3166list */
/*193*/ { -1, "[423]0048940048940048", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (423) at position 1" }, /* iso3166list */
/*194*/ { -1, "[423]00489400489400", ZINT_WARN_NONCOMPLIANT, "42300489400489400", "259: Invalid data length for AI (423) at position 1" }, /* iso3166list */
/*195*/ { -1, "[423]0048940048940", ZINT_WARN_NONCOMPLIANT, "4230048940048940", "259: Invalid data length for AI (423) at position 1" }, /* iso3166list */
/*196*/ { -1, "[423]00489400489", ZINT_WARN_NONCOMPLIANT, "42300489400489", "259: Invalid data length for AI (423) at position 1" }, /* iso3166list */
/*197*/ { -1, "[423]0048940048", ZINT_WARN_NONCOMPLIANT, "4230048940048", "259: Invalid data length for AI (423) at position 1" }, /* iso3166list */
/*198*/ { -1, "[423]00489400", ZINT_WARN_NONCOMPLIANT, "42300489400", "259: Invalid data length for AI (423) at position 1" }, /* iso3166list */
/*199*/ { -1, "[423]0048940", ZINT_WARN_NONCOMPLIANT, "4230048940", "259: Invalid data length for AI (423) at position 1" }, /* iso3166list */
/*200*/ { -1, "[423]00489", ZINT_WARN_NONCOMPLIANT, "42300489", "259: Invalid data length for AI (423) at position 1" }, /* iso3166list */
/*201*/ { -1, "[423]0048", ZINT_WARN_NONCOMPLIANT, "4230048", "259: Invalid data length for AI (423) at position 1" }, /* iso3166list */
/*202*/ { -1, "[423]00", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (423) at position 1" }, /* iso3166list */
/*203*/ { -1, "[423]0", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (423) at position 1" }, /* iso3166list */
/*204*/ { -1, "[423]004894004894003", ZINT_WARN_NONCOMPLIANT, "423004894004894003", "261: AI (423) data position 13: Unknown country code '003'" }, /* iso3166list */
/*205*/ { -1, "[423]004894004895004", ZINT_WARN_NONCOMPLIANT, "423004894004895004", "261: AI (423) data position 10: Unknown country code '895'" }, /* iso3166list */
/*206*/ { -1, "[423]004894004999004", ZINT_WARN_NONCOMPLIANT, "423004894004999004", "261: AI (423) data position 10: Unknown country code '999'" }, /* iso3166list */
/*207*/ { -1, "[423]004894005894004", ZINT_WARN_NONCOMPLIANT, "423004894005894004", "261: AI (423) data position 7: Unknown country code '005'" }, /* iso3166list */
/*208*/ { -1, "[423]004893004894004", ZINT_WARN_NONCOMPLIANT, "423004893004894004", "261: AI (423) data position 4: Unknown country code '893'" }, /* iso3166list */
/*209*/ { -1, "[423]004999004894004", ZINT_WARN_NONCOMPLIANT, "423004999004894004", "261: AI (423) data position 4: Unknown country code '999'" }, /* iso3166list */
/*210*/ { -1, "[423]003894004894004", ZINT_WARN_NONCOMPLIANT, "423003894004894004", "261: AI (423) data position 1: Unknown country code '003'" }, /* iso3166list */
/*211*/ { -1, "[423]004894004433", ZINT_WARN_NONCOMPLIANT, "423004894004433", "261: AI (423) data position 10: Unknown country code '433'" }, /* iso3166list */
/*212*/ { -1, "[423]004894435894", ZINT_WARN_NONCOMPLIANT, "423004894435894", "261: AI (423) data position 7: Unknown country code '435'" }, /* iso3166list */
/*213*/ { -1, "[423]004433004894", ZINT_WARN_NONCOMPLIANT, "423004433004894", "261: AI (423) data position 4: Unknown country code '433'" }, /* iso3166list */
/*214*/ { -1, "[423]432894004894", ZINT_WARN_NONCOMPLIANT, "423432894004894", "261: AI (423) data position 1: Unknown country code '432'" }, /* iso3166list */
/*215*/ { -1, "[423]004894003", ZINT_WARN_NONCOMPLIANT, "423004894003", "261: AI (423) data position 7: Unknown country code '003'" }, /* iso3166list */
/*216*/ { -1, "[423]004895004", ZINT_WARN_NONCOMPLIANT, "423004895004", "261: AI (423) data position 4: Unknown country code '895'" }, /* iso3166list */
/*217*/ { -1, "[423]004999004", ZINT_WARN_NONCOMPLIANT, "423004999004", "261: AI (423) data position 4: Unknown country code '999'" }, /* iso3166list */
/*218*/ { -1, "[423]003894004", ZINT_WARN_NONCOMPLIANT, "423003894004", "261: AI (423) data position 1: Unknown country code '003'" }, /* iso3166list */
/*219*/ { -1, "[423]004999", ZINT_WARN_NONCOMPLIANT, "423004999", "261: AI (423) data position 4: Unknown country code '999'" }, /* iso3166list */
/*220*/ { -1, "[423]000894", ZINT_WARN_NONCOMPLIANT, "423000894", "261: AI (423) data position 1: Unknown country code '000'" }, /* iso3166list */
/*221*/ { -1, "[423]003", ZINT_WARN_NONCOMPLIANT, "423003", "261: AI (423) data position 1: Unknown country code '003'" }, /* iso3166list */
/*222*/ { -1, "[7030]999A", 0, "7030999A", "" }, /* iso3166999 */
/*223*/ { -1, "[7030]894A", 0, "7030894A", "" }, /* iso3166999 */
/*224*/ { -1, "[7030]004A", 0, "7030004A", "" }, /* iso3166999 */
/*225*/ { -1, "[7030]004", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7030) at position 1" }, /* iso3166999 */
/*226*/ { -1, "[7030]04", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (7030) at position 1" }, /* iso3166999 */
/*227*/ { -1, "[7030]001A", ZINT_WARN_NONCOMPLIANT, "7030001A", "261: AI (7030) data position 1: Unknown country code '001'" }, /* iso3166999 */
/*228*/ { -1, "[7030]998A", ZINT_WARN_NONCOMPLIANT, "7030998A", "261: AI (7030) data position 1: Unknown country code '998'" }, /* iso3166999 */
/*229*/ { -1, "[7030]998A", ZINT_WARN_NONCOMPLIANT, "7030998A", "261: AI (7030) data position 1: Unknown country code '998'" }, /* iso3166999 */
/*230*/ { -1, "[4307]AD", 0, "4307AD", "" }, /* iso3166alpha2 */
/*231*/ { -1, "[4307]AC", ZINT_WARN_NONCOMPLIANT, "4307AC", "261: AI (4307) data position 1: Unknown country code 'AC'" }, /* iso3166alpha2 */
/*232*/ { -1, "[3910]0081", 0, "39100081", "" }, /* iso4217 */
/*233*/ { -1, "[3910]9991", 0, "39109991", "" }, /* iso4217 */
/*234*/ { -1, "[3910]9971", 0, "39109971", "" }, /* iso4217 */
/*235*/ { -1, "[3910]9251", 0, "39109251", "" }, /* iso4217 */
/*236*/ { -1, "[3910]01", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3910) at position 1" }, /* iso4217 */
/*237*/ { -1, "[3910]001", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (3910) at position 1" }, /* iso4217 */
/*238*/ { -1, "[3910]9981", ZINT_WARN_NONCOMPLIANT, "39109981", "261: AI (3910) data position 1: Unknown currency code '998'" }, /* iso4217 */
/*239*/ { -1, "[3910]0041", ZINT_WARN_NONCOMPLIANT, "39100041", "261: AI (3910) data position 1: Unknown currency code '004'" }, /* iso4217 */
/*240*/ { -1, "[3910]8941", ZINT_WARN_NONCOMPLIANT, "39108941", "261: AI (3910) data position 1: Unknown currency code '894'" }, /* iso4217 */
/*241*/ { -1, "[4300]%12", 0, "4300%12", "" }, /* pcenc */
/*242*/ { -1, "[4300]%1", ZINT_WARN_NONCOMPLIANT, "4300%1", "261: AI (4300) data position 1: Invalid % escape" }, /* pcenc */
/*243*/ { -1, "[4300]%", ZINT_WARN_NONCOMPLIANT, "4300%", "261: AI (4300) data position 1: Invalid % escape" }, /* pcenc */
/*244*/ { -1, "[4300]12%1212", 0, "430012%1212", "" }, /* pcenc */
/*245*/ { -1, "[4300]12%1G12", ZINT_WARN_NONCOMPLIANT, "430012%1G12", "261: AI (4300) data position 5: Invalid character for percent encoding" }, /* pcenc */
/*246*/ { -1, "[4308]ABCDEFGHIJKLMNOPQRSTUVWXYZ%+12", 0, "4308ABCDEFGHIJKLMNOPQRSTUVWXYZ%+12", "" }, /* no pcenc */
/*247*/ { -1, "[4308]ABCDEFGHIJKLMNOPQRSTUVWXYZ%+123", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4308) at position 1" }, /* no pcenc */
/*248*/ { -1, "[4309]02790858483015297971", 0, "430902790858483015297971", "" }, /* latlong */
/*249*/ { -1, "[4309]18000000013015297971", ZINT_WARN_NONCOMPLIANT, "430918000000013015297971", "261: AI (4309) data position 10: Invalid latitude" }, /* latlong */
/*250*/ { -1, "[4309]02790858413600000001", ZINT_WARN_NONCOMPLIANT, "430902790858413600000001", "261: AI (4309) data position 20: Invalid longitude" }, /* latlong */
/*251*/ { -1, "[4321]1", 0, "43211", "" }, /* yesno */
/*252*/ { -1, "[4321]0", 0, "43210", "" }, /* yesno */
/*253*/ { -1, "[4321]2", ZINT_WARN_NONCOMPLIANT, "43212", "261: AI (4321) data position 1: Neither 0 nor 1 for yes or no" }, /* yesno */
/*254*/ { -1, "[4321]9", ZINT_WARN_NONCOMPLIANT, "43219", "261: AI (4321) data position 1: Neither 0 nor 1 for yes or no" }, /* yesno */
/*255*/ { -1, "[7040]1234", 0, "70401234", "" }, /* importeridx */
/*256*/ { -1, "[7040]123A", 0, "7040123A", "" }, /* importeridx */
/*257*/ { -1, "[7040]123Z", 0, "7040123Z", "" }, /* importeridx */
/*258*/ { -1, "[7040]123a", 0, "7040123a", "" }, /* importeridx */
/*259*/ { -1, "[7040]123z", 0, "7040123z", "" }, /* importeridx */
/*260*/ { -1, "[7040]123-", 0, "7040123-", "" }, /* importeridx */
/*261*/ { -1, "[7040]123_", 0, "7040123_", "" }, /* importeridx */
/*262*/ { -1, "[7040]123!", ZINT_WARN_NONCOMPLIANT, "7040123!", "261: AI (7040) data position 4: Invalid importer index '!'" }, /* importeridx */
/*263*/ { -1, "[7040]123/", ZINT_WARN_NONCOMPLIANT, "7040123/", "261: AI (7040) data position 4: Invalid importer index '/'" }, /* importeridx */
/*264*/ { -1, "[7040]123:", ZINT_WARN_NONCOMPLIANT, "7040123:", "261: AI (7040) data position 4: Invalid importer index ':'" }, /* importeridx */
/*265*/ { -1, "[7040]123?", ZINT_WARN_NONCOMPLIANT, "7040123?", "261: AI (7040) data position 4: Invalid importer index '?'" }, /* importeridx */
/*266*/ { -1, "[7241]01", 0, "724101", "" }, /* mediatype */
/*267*/ { -1, "[7241]10", 0, "724110", "" }, /* mediatype */
/*268*/ { -1, "[7241]80", 0, "724180", "" }, /* mediatype */
/*269*/ { -1, "[7241]99", 0, "724199", "" }, /* mediatype */
/*270*/ { -1, "[7241]00", ZINT_WARN_NONCOMPLIANT, "724100", "261: AI (7241) data position 3: Invalid AIDC media type" }, /* mediatype */
/*271*/ { -1, "[7241]11", ZINT_WARN_NONCOMPLIANT, "724111", "261: AI (7241) data position 3: Invalid AIDC media type" }, /* mediatype */
/*272*/ { -1, "[7241]79", ZINT_WARN_NONCOMPLIANT, "724179", "261: AI (7241) data position 3: Invalid AIDC media type" }, /* mediatype */
/*273*/ { -1, "[8001]12341234512311", 0, "800112341234512311", "" }, /* nonzero */
/*274*/ { -1, "[8001]00010000100100", 0, "800100010000100100", "" }, /* nonzero */
/*275*/ { -1, "[8001]00001234512311", ZINT_WARN_NONCOMPLIANT, "800100001234512311", "261: AI (8001) data position 1: Zero not permitted" }, /* nonzero */
/*276*/ { -1, "[8001]12340000012311", ZINT_WARN_NONCOMPLIANT, "800112340000012311", "261: AI (8001) data position 5: Zero not permitted" }, /* nonzero */
/*277*/ { -1, "[8001]00010000100011", ZINT_WARN_NONCOMPLIANT, "800100010000100011", "261: AI (8001) data position 10: Zero not permitted" }, /* nonzero */
/*278*/ { -1, "[8001]00010000100101", 0, "800100010000100101", "" }, /* winding */
/*279*/ { -1, "[8001]00010000100111", 0, "800100010000100111", "" }, /* winding */
/*280*/ { -1, "[8001]00010000100191", 0, "800100010000100191", "" }, /* winding */
/*281*/ { -1, "[8001]00010000100121", ZINT_WARN_NONCOMPLIANT, "800100010000100121", "261: AI (8001) data position 13: Invalid winding direction '2'" }, /* winding */
/*282*/ { -1, "[8001]00010000100131", ZINT_WARN_NONCOMPLIANT, "800100010000100131", "261: AI (8001) data position 13: Invalid winding direction '3'" }, /* winding */
/*283*/ { -1, "[8001]00010000100171", ZINT_WARN_NONCOMPLIANT, "800100010000100171", "261: AI (8001) data position 13: Invalid winding direction '7'" }, /* winding */
/*284*/ { -1, "[8001]00010000100181", ZINT_WARN_NONCOMPLIANT, "800100010000100181", "261: AI (8001) data position 13: Invalid winding direction '8'" }, /* winding */
/*285*/ { -1, "[8003]01234567890128", 0, "800301234567890128", "" }, /* zero */
/*286*/ { -1, "[8003]11234567890128", ZINT_WARN_NONCOMPLIANT, "800311234567890128", "261: AI (8003) data position 1: Zero is required" }, /* zero */
/*287*/ { -1, "[8003]91234567890128", ZINT_WARN_NONCOMPLIANT, "800391234567890128", "261: AI (8003) data position 1: Zero is required" }, /* zero */
/*288*/ { -1, "[8006]123456789012310101", 0, "8006123456789012310101", "" }, /* pieceoftotal */
/*289*/ { -1, "[8006]123456789012310199", 0, "8006123456789012310199", "" }, /* pieceoftotal */
/*290*/ { -1, "[8006]123456789012319999", 0, "8006123456789012319999", "" }, /* pieceoftotal */
/*291*/ { -1, "[8006]123456789012310001", ZINT_WARN_NONCOMPLIANT, "8006123456789012310001", "261: AI (8006) data position 15: Piece number cannot be zero" }, /* pieceoftotal */
/*292*/ { -1, "[8006]123456789012310100", ZINT_WARN_NONCOMPLIANT, "8006123456789012310100", "261: AI (8006) data position 15: Total number cannot be zero" }, /* pieceoftotal */
/*293*/ { -1, "[8006]123456789012310201", ZINT_WARN_NONCOMPLIANT, "8006123456789012310201", "261: AI (8006) data position 15: Piece number '02' exceeds total '01'" }, /* pieceoftotal */
/*294*/ { -1, "[8006]123456789012319998", ZINT_WARN_NONCOMPLIANT, "8006123456789012319998", "261: AI (8006) data position 15: Piece number '99' exceeds total '98'" }, /* pieceoftotal */
/*295*/ { -1, "[8007]GB82WEST12345698765432", 0, "8007GB82WEST12345698765432", "" }, /* iban */
/*296*/ { -1, "[8007]GB83WEST12345698765432", ZINT_WARN_NONCOMPLIANT, "8007GB83WEST12345698765432", "261: AI (8007) data position 3: Bad IBAN checksum '83', expected '82'" }, /* iban */
/*297*/ { -1, "[8007]BE71096123456769", 0, "8007BE71096123456769", "" }, /* iban */
/*298*/ { -1, "[8007]BE71096123456760", ZINT_WARN_NONCOMPLIANT, "8007BE71096123456760", "261: AI (8007) data position 3: Bad IBAN checksum '71', expected '23'" }, /* iban */
/*299*/ { -1, "[8007]BE01096123456760", ZINT_WARN_NONCOMPLIANT, "8007BE01096123456760", "261: AI (8007) data position 3: Bad IBAN checksum '01', expected '23'" }, /* iban */
/*300*/ { -1, "[8007]BE00096123456760", ZINT_WARN_NONCOMPLIANT, "8007BE00096123456760", "261: AI (8007) data position 3: Bad IBAN checksum '00', expected '23'" }, /* iban */
/*301*/ { -1, "[8007]LC14BOSL123456789012345678901234", 0, "8007LC14BOSL123456789012345678901234", "" }, /* iban */
/*302*/ { -1, "[8007]LC14BOSL123456789012345678901230", ZINT_WARN_NONCOMPLIANT, "8007LC14BOSL123456789012345678901230", "261: AI (8007) data position 3: Bad IBAN checksum '14', expected '25'" }, /* iban */
/*303*/ { -1, "[8007]A114BOSL123456789012345678901230", ZINT_WARN_NONCOMPLIANT, "8007A114BOSL123456789012345678901230", "261: AI (8007) data position 1: Non-alphabetic IBAN country code 'A1'" }, /* iban */
/*304*/ { -1, "[8007]1A14BOSL123456789012345678901230", ZINT_WARN_NONCOMPLIANT, "80071A14BOSL123456789012345678901230", "261: AI (8007) data position 1: Non-alphabetic IBAN country code '1A'" }, /* iban */
/*305*/ { -1, "[8007]AA14BOSL123456789012345678901230", ZINT_WARN_NONCOMPLIANT, "8007AA14BOSL123456789012345678901230", "261: AI (8007) data position 1: Invalid IBAN country code 'AA'" }, /* iban */
/*306*/ { -1, "[8007]ZZ14BOSL123456789012345678901230", ZINT_WARN_NONCOMPLIANT, "8007ZZ14BOSL123456789012345678901230", "261: AI (8007) data position 1: Invalid IBAN country code 'ZZ'" }, /* iban */
/*307*/ { -1, "[8007]ZW33BOSL123456789012345678901230", 0, "8007ZW33BOSL123456789012345678901230", "" }, /* iban */
/*308*/ { -1, "[8007]ZWA3BOSL123456789012345678901230", ZINT_WARN_NONCOMPLIANT, "8007ZWA3BOSL123456789012345678901230", "261: AI (8007) data position 3: Non-numeric IBAN checksum 'A3'" }, /* iban */
/*309*/ { -1, "[8007]ZW3ABOSL123456789012345678901230", ZINT_WARN_NONCOMPLIANT, "8007ZW3ABOSL123456789012345678901230", "261: AI (8007) data position 3: Non-numeric IBAN checksum '3A'" }, /* iban */
/*310*/ { -1, "[8007]ZW33bOSL123456789012345678901230", ZINT_WARN_NONCOMPLIANT, "8007ZW33bOSL123456789012345678901230", "261: AI (8007) data position 5: Invalid IBAN character 'b'" }, /* iban */
/*311*/ { -1, "[8007]GB98", ZINT_WARN_NONCOMPLIANT, "8007GB98", "259: Invalid data length for AI (8007) at position 1" }, /* iban */
/*312*/ { -1, "[8007]FR7630006000011234567890189", 0, "8007FR7630006000011234567890189", "" }, /* iban */
/*313*/ { -1, "[8007]DE91100000000123456789", 0, "8007DE91100000000123456789", "" }, /* iban */
/*314*/ { -1, "[8007]GR9608100010000001234567890", 0, "8007GR9608100010000001234567890", "" }, /* iban */
/*315*/ { -1, "[8007]MU43BOMM0101123456789101000MUR", 0, "8007MU43BOMM0101123456789101000MUR", "" }, /* iban */
/*316*/ { -1, "[8007]PL10105000997603123456789123", 0, "8007PL10105000997603123456789123", "" }, /* iban */
/*317*/ { -1, "[8007]RO09BCYP0000001234567890", 0, "8007RO09BCYP0000001234567890", "" }, /* iban */
/*318*/ { -1, "[8007]SA4420000001234567891234", 0, "8007SA4420000001234567891234", "" }, /* iban */
/*319*/ { -1, "[8007]ES7921000813610123456789", 0, "8007ES7921000813610123456789", "" }, /* iban */
/*320*/ { -1, "[8007]CH5604835012345678009", 0, "8007CH5604835012345678009", "" }, /* iban */
/*321*/ { -1, "[8007]GB98MIDL07009312345678", 0, "8007GB98MIDL07009312345678", "" }, /* iban */
/*322*/ { -1, "[8011]1", 0, "80111", "" }, /* nozeroprefix */
/*323*/ { -1, "[8011]11", 0, "801111", "" }, /* nozeroprefix */
/*324*/ { -1, "[8011]0", 0, "80110", "" }, /* nozeroprefix */
/*325*/ { -1, "[8011]01", ZINT_WARN_NONCOMPLIANT, "801101", "261: AI (8011) data position 1: Zero prefix is not permitted" }, /* nozeroprefix */
/*326*/ { -1, "[8110]106141416543213150110120", 0, "8110106141416543213150110120", "" }, /* couponcode (first part of NACAG Appendix C: Example 1 - see test_rss.c test_examples) */
/*327*/ { -1, "[8110]012345612345610104123", 0, "8110012345612345610104123", "" }, /* couponcode */
/*328*/ { -1, "[8110]01234561234561010412", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412", "259: Invalid data length for AI (8110) at position 1" }, /* couponcode */
/*329*/ { -1, "[8110]12345678901234567890", ZINT_WARN_NONCOMPLIANT, "811012345678901234567890", "259: Invalid data length for AI (8110) at position 1" }, /* couponcode */
/*330*/ { -1, "[8110]712345612345610104123", ZINT_WARN_NONCOMPLIANT, "8110712345612345610104123", "261: AI (8110) data position 1: Invalid Primary GS1 Co. Prefix VLI '7'" }, /* couponcode */
/*331*/ { -1, "[8110]A12345612345610104123", ZINT_WARN_NONCOMPLIANT, "8110A12345612345610104123", "261: AI (8110) data position 1: Non-numeric Primary GS1 Co. Prefix VLI 'A'" }, /* couponcode */
/*332*/ { -1, "[8110]012345A12345610104123", ZINT_WARN_NONCOMPLIANT, "8110012345A12345610104123", "261: AI (8110) data position 7: Non-numeric Primary GS1 Co. Prefix 'A'" }, /* couponcode */
/*333*/ { -1, "[8110]012345612345A10104123", ZINT_WARN_NONCOMPLIANT, "8110012345612345A10104123", "261: AI (8110) data position 8: Non-numeric Offer Code" }, /* couponcode */
/*334*/ { -1, "[8110]012345612345600104123", ZINT_WARN_NONCOMPLIANT, "8110012345612345600104123", "261: AI (8110) data position 14: Invalid Save Value VLI '0'" }, /* couponcode */
/*335*/ { -1, "[8110]012345612345660104123", ZINT_WARN_NONCOMPLIANT, "8110012345612345660104123", "261: AI (8110) data position 14: Invalid Save Value VLI '6'" }, /* couponcode */
/*336*/ { -1, "[8110]01234561234561A104123", ZINT_WARN_NONCOMPLIANT, "811001234561234561A104123", "261: AI (8110) data position 15: Non-numeric Save Value 'A'" }, /* couponcode */
/*337*/ { -1, "[8110]012345612345610004123", ZINT_WARN_NONCOMPLIANT, "8110012345612345610004123", "261: AI (8110) data position 16: Invalid Primary Purch. Req. VLI '0'" }, /* couponcode */
/*338*/ { -1, "[8110]012345612345610604123", ZINT_WARN_NONCOMPLIANT, "8110012345612345610604123", "261: AI (8110) data position 16: Invalid Primary Purch. Req. VLI '6'" }, /* couponcode */
/*339*/ { -1, "[8110]0123456123456101A4123", ZINT_WARN_NONCOMPLIANT, "81100123456123456101A4123", "261: AI (8110) data position 17: Non-numeric Primary Purch. Req. 'A'" }, /* couponcode */
/*340*/ { -1, "[8110]012345612345621251234", ZINT_WARN_NONCOMPLIANT, "8110012345612345621251234", "261: AI (8110) data position 18: Primary Purch. Req. incomplete" }, /* couponcode */
/*341*/ { -1, "[8110]01234561234561010A123", ZINT_WARN_NONCOMPLIANT, "811001234561234561010A123", "261: AI (8110) data position 18: Non-numeric Primary Purch. Req. Code" }, /* couponcode */
/*342*/ { -1, "[8110]012345612345610106123", ZINT_WARN_NONCOMPLIANT, "8110012345612345610106123", "261: AI (8110) data position 18: Invalid Primary Purch. Req. Code '6'" }, /* couponcode */
/*343*/ { -1, "[8110]012345612345610212412", ZINT_WARN_NONCOMPLIANT, "8110012345612345610212412", "261: AI (8110) data position 20: Primary Purch. Family Code incomplete" }, /* couponcode */
/*344*/ { -1, "[8110]0123456123456103123412", ZINT_WARN_NONCOMPLIANT, "81100123456123456103123412", "261: AI (8110) data position 21: Primary Purch. Family Code incomplete" }, /* couponcode */
/*345*/ { -1, "[8110]0123456123456103123412A", ZINT_WARN_NONCOMPLIANT, "81100123456123456103123412A", "261: AI (8110) data position 21: Non-numeric Primary Purch. Family Code" }, /* couponcode */
/*346*/ { -1, "[8110]01234561234561031234123", 0, "811001234561234561031234123", "" }, /* couponcode */
/*347*/ { -1, "[8110]612345678901212345651", ZINT_WARN_NONCOMPLIANT, "8110612345678901212345651", "261: AI (8110) data position 21: Save Value incomplete" }, /* couponcode */
/*348*/ { -1, "[8110]6123456789012123456512345", ZINT_WARN_NONCOMPLIANT, "81106123456789012123456512345", "261: AI (8110) data position 26: Primary Purch. Req. VLI missing" }, /* couponcode */
/*349*/ { -1, "[8110]61234567890121234565123455123454123", 0, "811061234567890121234565123455123454123", "" }, /* couponcode */
/*350*/ { -1, "[8110]61234567890121234565123455123454123A", ZINT_WARN_NONCOMPLIANT, "811061234567890121234565123455123454123A", "261: AI (8110) data position 36: Non-numeric Data Field 'A'" }, /* couponcode */
/*351*/ { -1, "[8110]612345678901212345651234551234541237", ZINT_WARN_NONCOMPLIANT, "8110612345678901212345651234551234541237", "261: AI (8110) data position 36: Invalid Data Field '7'" }, /* couponcode */
/*352*/ { -1, "[8110]612345678901212345651234551234541238", ZINT_WARN_NONCOMPLIANT, "8110612345678901212345651234551234541238", "261: AI (8110) data position 36: Invalid Data Field '8'" }, /* couponcode */
/*353*/ { -1, "[8110]0123456123456101041231", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041231", "261: AI (8110) data position 23: Add. Purch. Rules Code incomplete" }, /* couponcode */
/*354*/ { -1, "[8110]0123456123456101041231A", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041231A", "261: AI (8110) data position 23: Non-numeric Add. Purch. Rules Code" }, /* couponcode */
/*355*/ { -1, "[8110]01234561234561010412314", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412314", "261: AI (8110) data position 23: Invalid Add. Purch. Rules Code '4'" }, /* couponcode */
/*356*/ { -1, "[8110]01234561234561010412313", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412313", "261: AI (8110) data position 24: 2nd Purch. Req. VLI missing" }, /* couponcode */
/*357*/ { -1, "[8110]01234561234561010412313A", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412313A", "261: AI (8110) data position 24: Non-numeric 2nd Purch. Req. VLI 'A'" }, /* couponcode */
/*358*/ { -1, "[8110]012345612345610104123130", ZINT_WARN_NONCOMPLIANT, "8110012345612345610104123130", "261: AI (8110) data position 24: Invalid 2nd Purch. Req. VLI '0'" }, /* couponcode */
/*359*/ { -1, "[8110]012345612345610104123131", ZINT_WARN_NONCOMPLIANT, "8110012345612345610104123131", "261: AI (8110) data position 25: 2nd Purch. Req. incomplete" }, /* couponcode */
/*360*/ { -1, "[8110]012345612345610104123131A", ZINT_WARN_NONCOMPLIANT, "8110012345612345610104123131A", "261: AI (8110) data position 25: Non-numeric 2nd Purch. Req. 'A'" }, /* couponcode */
/*361*/ { -1, "[8110]0123456123456101041231310", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041231310", "261: AI (8110) data position 26: 2nd Purch. Req. Code incomplete" }, /* couponcode */
/*362*/ { -1, "[8110]0123456123456101041231310A", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041231310A", "261: AI (8110) data position 26: Non-numeric 2nd Purch. Req. Code" }, /* couponcode */
/*363*/ { -1, "[8110]01234561234561010412313108", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412313108", "261: AI (8110) data position 26: Invalid 2nd Purch. Req. Code '8'" }, /* couponcode */
/*364*/ { -1, "[8110]01234561234561010412313100", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412313100", "261: AI (8110) data position 27: 2nd Purch. Family Code incomplete" }, /* couponcode */
/*365*/ { -1, "[8110]01234561234561010412313100123", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412313100123", "261: AI (8110) data position 30: 2nd Purch. GS1 Co. Prefix VLI missing" }, /* couponcode */
/*366*/ { -1, "[8110]01234561234561010412313100123A", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412313100123A", "261: AI (8110) data position 30: Non-numeric 2nd Purch. GS1 Co. Prefix VLI 'A'" }, /* couponcode */
/*367*/ { -1, "[8110]012345612345610104123131001239", 0, "8110012345612345610104123131001239", "" }, /* couponcode */
/*368*/ { -1, "[8110]01234561234561010412313100123012345", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412313100123012345", "261: AI (8110) data position 31: 2nd Purch. GS1 Co. Prefix incomplete" }, /* couponcode */
/*369*/ { -1, "[8110]0123456123456101041231310012311234567", 0, "81100123456123456101041231310012311234567", "" }, /* couponcode */
/*370*/ { -1, "[8110]0123456123456101041232", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041232", "261: AI (8110) data position 23: 3rd Purch. Req. VLI missing" }, /* couponcode */
/*371*/ { -1, "[8110]0123456123456101041232A", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041232A", "261: AI (8110) data position 23: Non-numeric 3rd Purch. Req. VLI 'A'" }, /* couponcode */
/*372*/ { -1, "[8110]01234561234561010412326", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412326", "261: AI (8110) data position 23: Invalid 3rd Purch. Req. VLI '6'" }, /* couponcode */
/*373*/ { -1, "[8110]01234561234561010412321", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412321", "261: AI (8110) data position 24: 3rd Purch. Req. incomplete" }, /* couponcode */
/*374*/ { -1, "[8110]012345612345610104123210", ZINT_WARN_NONCOMPLIANT, "8110012345612345610104123210", "261: AI (8110) data position 25: 3rd Purch. Req. Code incomplete" }, /* couponcode */
/*375*/ { -1, "[8110]0123456123456101041232105", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041232105", "261: AI (8110) data position 25: Invalid 3rd Purch. Req. Code '5'" }, /* couponcode */
/*376*/ { -1, "[8110]0123456123456101041232104", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041232104", "261: AI (8110) data position 26: 3rd Purch. Family Code incomplete" }, /* couponcode */
/*377*/ { -1, "[8110]012345612345610104123210412A", ZINT_WARN_NONCOMPLIANT, "8110012345612345610104123210412A", "261: AI (8110) data position 26: Non-numeric 3rd Purch. Family Code" }, /* couponcode */
/*378*/ { -1, "[8110]0123456123456101041232104123", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041232104123", "261: AI (8110) data position 29: 3rd Purch. GS1 Co. Prefix VLI missing" }, /* couponcode */
/*379*/ { -1, "[8110]01234561234561010412321041230", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412321041230", "261: AI (8110) data position 30: 3rd Purch. GS1 Co. Prefix incomplete" }, /* couponcode */
/*380*/ { -1, "[8110]0123456123456101041232104123A", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041232104123A", "261: AI (8110) data position 29: Non-numeric 3rd Purch. GS1 Co. Prefix VLI 'A'" }, /* couponcode */
/*381*/ { -1, "[8110]0123456123456101041232104123012345", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041232104123012345", "261: AI (8110) data position 30: 3rd Purch. GS1 Co. Prefix incomplete" }, /* couponcode */
/*382*/ { -1, "[8110]0123456123456101041232104123012345A", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041232104123012345A", "261: AI (8110) data position 35: Non-numeric 3rd Purch. GS1 Co. Prefix 'A'" }, /* couponcode */
/*383*/ { -1, "[8110]01234561234561010412321041230123456", 0, "811001234561234561010412321041230123456", "" }, /* couponcode */
/*384*/ { -1, "[8110]0123456123456101041233", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041233", "261: AI (8110) data position 23: Expiration Date incomplete" }, /* couponcode */
/*385*/ { -1, "[8110]01234561234561010412332012", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412332012", "261: AI (8110) data position 23: Expiration Date incomplete" }, /* couponcode */
/*386*/ { -1, "[8110]012345612345610104123320123A", ZINT_WARN_NONCOMPLIANT, "8110012345612345610104123320123A", "261: AI (8110) data position 23: Non-numeric Expiration Date" }, /* couponcode */
/*387*/ { -1, "[8110]0123456123456101041233201232", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041233201232", "261: AI (8110) data position 27: Invalid day '32'" }, /* couponcode */
/*388*/ { -1, "[8110]0123456123456101041233200031", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041233200031", "261: AI (8110) data position 25: Invalid month '00'" }, /* couponcode */
/*389*/ { -1, "[8110]0123456123456101041233201231", 0, "81100123456123456101041233201231", "" }, /* couponcode */
/*390*/ { -1, "[8110]0123456123456101041234", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041234", "261: AI (8110) data position 23: Start Date incomplete" }, /* couponcode */
/*391*/ { -1, "[8110]01234561234561010412342012", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412342012", "261: AI (8110) data position 23: Start Date incomplete" }, /* couponcode */
/*392*/ { -1, "[8110]012345612345610104123420123A", ZINT_WARN_NONCOMPLIANT, "8110012345612345610104123420123A", "261: AI (8110) data position 23: Non-numeric Start Date" }, /* couponcode */
/*393*/ { -1, "[8110]0123456123456101041234200230", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041234200230", "261: AI (8110) data position 27: Invalid day '30'" }, /* couponcode */
/*394*/ { -1, "[8110]0123456123456101041234201329", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041234201329", "261: AI (8110) data position 25: Invalid month '13'" }, /* couponcode */
/*395*/ { -1, "[8110]0123456123456101041234200229", 0, "81100123456123456101041234200229", "" }, /* couponcode */
/*396*/ { -1, "[8110]0123456123456101041235", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041235", "261: AI (8110) data position 23: Serial Number VLI missing" }, /* couponcode */
/*397*/ { -1, "[8110]0123456123456101041235A", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041235A", "261: AI (8110) data position 23: Non-numeric Serial Number VLI 'A'" }, /* couponcode */
/*398*/ { -1, "[8110]01234561234561010412350", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412350", "261: AI (8110) data position 24: Serial Number incomplete" }, /* couponcode */
/*399*/ { -1, "[8110]0123456123456101041235012345", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041235012345", "261: AI (8110) data position 24: Serial Number incomplete" }, /* couponcode */
/*400*/ { -1, "[8110]0123456123456101041235912345678901234", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041235912345678901234", "261: AI (8110) data position 24: Serial Number incomplete" }, /* couponcode */
/*401*/ { -1, "[8110]0123456123456101041235912345678901234A", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041235912345678901234A", "261: AI (8110) data position 38: Non-numeric Serial Number 'A'" }, /* couponcode */
/*402*/ { -1, "[8110]01234561234561010412359123456789012345", 0, "811001234561234561010412359123456789012345", "" }, /* couponcode */
/*403*/ { -1, "[8110]0123456123456101041236", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041236", "261: AI (8110) data position 23: Retailer ID VLI missing" }, /* couponcode */
/*404*/ { -1, "[8110]0123456123456101041236A", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041236A", "261: AI (8110) data position 23: Non-numeric Retailer ID VLI 'A'" }, /* couponcode */
/*405*/ { -1, "[8110]01234561234561010412360", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412360", "261: AI (8110) data position 23: Invalid Retailer ID VLI '0'" }, /* couponcode */
/*406*/ { -1, "[8110]01234561234561010412368", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412368", "261: AI (8110) data position 23: Invalid Retailer ID VLI '8'" }, /* couponcode */
/*407*/ { -1, "[8110]01234561234561010412361", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412361", "261: AI (8110) data position 24: Retailer ID incomplete" }, /* couponcode */
/*408*/ { -1, "[8110]01234561234561010412361123456", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412361123456", "261: AI (8110) data position 24: Retailer ID incomplete" }, /* couponcode */
/*409*/ { -1, "[8110]01234561234561010412361123456A", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412361123456A", "261: AI (8110) data position 30: Non-numeric Retailer ID 'A'" }, /* couponcode */
/*410*/ { -1, "[8110]012345612345610104123671234567890123", 0, "8110012345612345610104123671234567890123", "" }, /* couponcode */
/*411*/ { -1, "[8110]0123456123456101041239", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041239", "261: AI (8110) data position 23: Save Value Code incomplete" }, /* couponcode */
/*412*/ { -1, "[8110]0123456123456101041239A", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041239A", "261: AI (8110) data position 23: Non-numeric Save Value Code" }, /* couponcode */
/*413*/ { -1, "[8110]01234561234561010412393", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412393", "261: AI (8110) data position 23: Invalid Save Value Code '3'" }, /* couponcode */
/*414*/ { -1, "[8110]01234561234561010412394", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412394", "261: AI (8110) data position 23: Invalid Save Value Code '4'" }, /* couponcode */
/*415*/ { -1, "[8110]01234561234561010412397", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412397", "261: AI (8110) data position 23: Invalid Save Value Code '7'" }, /* couponcode */
/*416*/ { -1, "[8110]01234561234561010412390", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412390", "261: AI (8110) data position 24: Save Value Applies To incomplete" }, /* couponcode */
/*417*/ { -1, "[8110]01234561234561010412390A", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412390A", "261: AI (8110) data position 24: Non-numeric Save Value Applies To" }, /* couponcode */
/*418*/ { -1, "[8110]012345612345610104123903", ZINT_WARN_NONCOMPLIANT, "8110012345612345610104123903", "261: AI (8110) data position 24: Invalid Save Value Applies To '3'" }, /* couponcode */
/*419*/ { -1, "[8110]012345612345610104123902", ZINT_WARN_NONCOMPLIANT, "8110012345612345610104123902", "261: AI (8110) data position 25: Store Coupon Flag incomplete" }, /* couponcode */
/*420*/ { -1, "[8110]012345612345610104123902A", ZINT_WARN_NONCOMPLIANT, "8110012345612345610104123902A", "261: AI (8110) data position 25: Non-numeric Store Coupon Flag" }, /* couponcode */
/*421*/ { -1, "[8110]0123456123456101041239029", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041239029", "261: AI (8110) data position 26: Don't Multiply Flag incomplete" }, /* couponcode */
/*422*/ { -1, "[8110]0123456123456101041239029A", ZINT_WARN_NONCOMPLIANT, "81100123456123456101041239029A", "261: AI (8110) data position 26: Non-numeric Don't Multiply Flag" }, /* couponcode */
/*423*/ { -1, "[8110]01234561234561010412390292", ZINT_WARN_NONCOMPLIANT, "811001234561234561010412390292", "261: AI (8110) data position 26: Invalid Don't Multiply Flag '2'" }, /* couponcode */
/*424*/ { -1, "[8110]01234561234561010412390291", 0, "811001234561234561010412390291", "" }, /* couponcode */
/*425*/ { -1, "[8110]177777776666663100120444101105551888888821109991222222232012314200601522345678961345678990000", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (8110) at position 1" }, /* couponcode (example from GS1 AI (8112) Coupon Data Specifications Appendix A: AI (8110) vs AI (8112)) */
/*426*/ { -1, "[8110]177777776666663100120444101105551888888821109991222222232012314200601", 0, "8110177777776666663100120444101105551888888821109991222222232012314200601", "" }, /* couponcode */
/*427*/ { -1, "[8112]017777777666666223456789", 0, "8112017777777666666223456789", "" }, /* couponposoffer (example from GS1 AI (8112) Coupon Data Specifications Appendix A: AI (8110) vs AI (8112)) */
/*428*/ { -1, "[8112]001234561234560123456", 0, "8112001234561234560123456", "" }, /* couponposoffer */
/*429*/ { -1, "[8112]00123456123456012345", ZINT_WARN_NONCOMPLIANT, "811200123456123456012345", "259: Invalid data length for AI (8112) at position 1" }, /* couponposoffer */
/*430*/ { -1, "[8112]0012345612345601234561", ZINT_WARN_NONCOMPLIANT, "81120012345612345601234561", "261: AI (8112) data position 22: Reserved trailing characters" }, /* couponposoffer */
/*431*/ { -1, "[8112]061234567890121234569123456789012345", 0, "8112061234567890121234569123456789012345", "" }, /* couponposoffer */
/*432*/ { -1, "[8112]0612345678901212345691234567890123456", ZINT_WARN_NONCOMPLIANT, "81120612345678901212345691234567890123456", "259: Invalid data length for AI (8112) at position 1" }, /* couponposoffer */
/*433*/ { -1, "[8112]06123456789012123456912345678901234A", ZINT_WARN_NONCOMPLIANT, "811206123456789012123456912345678901234A", "261: AI (8112) data position 36: Non-numeric Serial Number 'A'" }, /* couponposoffer */
/*434*/ { -1, "[8112]06123456789012123456912345678901234", ZINT_WARN_NONCOMPLIANT, "811206123456789012123456912345678901234", "261: AI (8112) data position 22: Serial Number incomplete" }, /* couponposoffer */
/*435*/ { -1, "[8112]06123456789012123456812345678901234", 0, "811206123456789012123456812345678901234", "" }, /* couponposoffer */
/*436*/ { -1, "[8112]0612345678901212345681234567890123", ZINT_WARN_NONCOMPLIANT, "81120612345678901212345681234567890123", "261: AI (8112) data position 22: Serial Number incomplete" }, /* couponposoffer */
/*437*/ { -1, "[8112]0612345678901212345A0123456", ZINT_WARN_NONCOMPLIANT, "81120612345678901212345A0123456", "261: AI (8112) data position 15: Non-numeric Offer Code" }, /* couponposoffer */
/*438*/ { -1, "[8112]0612345678901A1234560123456", ZINT_WARN_NONCOMPLIANT, "81120612345678901A1234560123456", "261: AI (8112) data position 14: Non-numeric Coupon Funder ID 'A'" }, /* couponposoffer */
/*439*/ { -1, "[8112]071234567890121234560123456", ZINT_WARN_NONCOMPLIANT, "8112071234567890121234560123456", "261: AI (8112) data position 2: Invalid Coupon Funder ID VLI '7'" }, /* couponposoffer */
/*440*/ { -1, "[8112]0A1234567890121234560123456", ZINT_WARN_NONCOMPLIANT, "81120A1234567890121234560123456", "261: AI (8112) data position 2: Non-numeric Coupon Funder ID VLI 'A'" }, /* couponposoffer */
/*441*/ { -1, "[8112]261234567890121234560123456", ZINT_WARN_NONCOMPLIANT, "8112261234567890121234560123456", "261: AI (8112) data position 1: Coupon Format must be 0 or 1" }, /* couponposoffer */
/*442*/ { -1, "[8112]A61234567890121234560123456", ZINT_WARN_NONCOMPLIANT, "8112A61234567890121234560123456", "261: AI (8112) data position 1: Non-numeric Coupon Format" }, /* couponposoffer */
/*443*/ { -1, "[4330]023020", 0, "4330023020", "" }, /* hyphen */
/*444*/ { -1, "[4330]023020-", 0, "4330023020-", "" }, /* hyphen */
/*445*/ { -1, "[4330]023020+", ZINT_WARN_NONCOMPLIANT, "4330023020+", "261: AI (4330) data position 7: Invalid temperature indicator (hyphen only)" }, /* hyphen */
/*446*/ { -1, "[4330]02302", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4330) at position 1" }, /* hyphen */
/*447*/ { -1, "[4330]02302000", ZINT_ERROR_INVALID_DATA, "", "259: Invalid data length for AI (4330) at position 1" }, /* hyphen */
/*448*/ { -1, "[7252]0", 0, "72520", "" }, /* iso5218 */
/*449*/ { -1, "[7252]1", 0, "72521", "" }, /* iso5218 */
/*450*/ { -1, "[7252]2", 0, "72522", "" }, /* iso5218 */
/*451*/ { -1, "[7252]9", 0, "72529", "" }, /* iso5218 */
/*452*/ { -1, "[7252]3", ZINT_WARN_NONCOMPLIANT, "72523", "261: AI (7252) data position 1: Invalid biological sex code (0, 1, 2 or 9 only)" }, /* iso5218 */
/*453*/ { -1, "[7252]5", ZINT_WARN_NONCOMPLIANT, "72525", "261: AI (7252) data position 1: Invalid biological sex code (0, 1, 2 or 9 only)" }, /* iso5218 */
/*454*/ { -1, "[7252]8", ZINT_WARN_NONCOMPLIANT, "72528", "261: AI (7252) data position 1: Invalid biological sex code (0, 1, 2 or 9 only)" }, /* iso5218 */
/*455*/ { -1, "[7258]1/2", 0, "72581/2", "" }, /* posinseqslash */
/*456*/ { -1, "[7258]2/2", 0, "72582/2", "" }, /* posinseqslash */
/*457*/ { -1, "[7258]1/9", 0, "72581/9", "" }, /* posinseqslash */
/*458*/ { -1, "[7258]8/9", 0, "72588/9", "" }, /* posinseqslash */
/*459*/ { -1, "[7258]9/9", 0, "72589/9", "" }, /* posinseqslash */
/*460*/ { -1, "[7258]0/2", ZINT_WARN_NONCOMPLIANT, "72580/2", "261: AI (7258) data position 1: Sequence position cannot be zero" }, /* posinseqslash */
/*461*/ { -1, "[7258]1/0", ZINT_WARN_NONCOMPLIANT, "72581/0", "261: AI (7258) data position 3: Sequence total cannot be zero" }, /* posinseqslash */
/*462*/ { -1, "[7258]2/1", ZINT_WARN_NONCOMPLIANT, "72582/1", "261: AI (7258) data position 1: Sequence position greater than total" }, /* posinseqslash */
/*463*/ { -1, "[7258]111", ZINT_WARN_NONCOMPLIANT, "7258111", "261: AI (7258) data position 1: No sequence separator ('/')" }, /* posinseqslash */
/*464*/ { -1, "[7258]1//", ZINT_WARN_NONCOMPLIANT, "72581//", "261: AI (7258) data position 3: Single sequence separator ('/') only" }, /* posinseqslash */
/*465*/ { -1, "[7258]/11", ZINT_WARN_NONCOMPLIANT, "7258/11", "261: AI (7258) data position 1: Sequence separator '/' cannot start or end" }, /* posinseqslash */
/*466*/ { -1, "[7258]11/", ZINT_WARN_NONCOMPLIANT, "725811/", "261: AI (7258) data position 3: Sequence separator '/' cannot start or end" }, /* posinseqslash */
/*467*/ { -1, "[7258]1+1", ZINT_WARN_NONCOMPLIANT, "72581+1", "261: AI (7258) data position 2: Invalid character '+' in sequence" }, /* posinseqslash */
/*468*/ { -1, "[7258]1/A", ZINT_WARN_NONCOMPLIANT, "72581/A", "261: AI (7258) data position 3: Invalid character 'A' in sequence" }, /* posinseqslash */
/*469*/ { -1, "[8014]990000A35", 0, "8014990000A35", "" }, /* hasnondigit */
/*470*/ { -1, "[8014]990000025", ZINT_WARN_NONCOMPLIANT, "8014990000025", "261: AI (8014) data position 1: A non-digit character is required" }, /* hasnondigit */
/*471*/ { -1, "[7041]8", 0, "70418", "" }, /* packagetype */
/*472*/ { -1, "[7041]9", 0, "70419", "" }, /* packagetype */
/*473*/ { -1, "[7041]9[00]123456789012345675", 0, "70419\03500123456789012345675", "" }, /* packagetype */
/*474*/ { -1, "^70419^00123456789012345675", 0, "70419\03500123456789012345675", "" }, /* packagetype */
/*475*/ { GS1RAW_MODE, "70419\03500123456789012345675", 0, "70419\03500123456789012345675", "" }, /* packagetype */
/*476*/ { -1, "[7041]20", ZINT_WARN_NONCOMPLIANT, "704120", "261: AI (7041) data position 1: Invalid package type '20'" }, /* packagetype */
/*477*/ { -1, "[7041]20[00]123456789012345675", ZINT_WARN_NONCOMPLIANT, "704120\03500123456789012345675", "261: AI (7041) data position 1: Invalid package type '20'" }, /* packagetype */
/*478*/ { -1, "[7041]200", 0, "7041200", "" }, /* packagetype */
/*479*/ { -1, "[7041]200[00]123456789012345675", 0, "7041200\03500123456789012345675", "" }, /* packagetype */
/*480*/ { -1, "[7041]2000", ZINT_WARN_NONCOMPLIANT, "70412000", "261: AI (7041) data position 1: Invalid package type '2000'" }, /* packagetype */
/*481*/ { -1, "[7041]200_", ZINT_WARN_NONCOMPLIANT, "7041200_", "261: AI (7041) data position 1: Invalid package type '200_'" }, /* packagetype */
/*482*/ { -1, "[7041]_", ZINT_WARN_NONCOMPLIANT, "7041_", "261: AI (7041) data position 1: Invalid package type '_'" }, /* packagetype */
/*483*/ { -1, "[7041]_9", ZINT_WARN_NONCOMPLIANT, "7041_9", "261: AI (7041) data position 1: Invalid package type '_9'" }, /* packagetype */
/*484*/ { -1, "[7041]9_", ZINT_WARN_NONCOMPLIANT, "70419_", "261: AI (7041) data position 1: Invalid package type '9_'" }, /* packagetype */
/*485*/ { -1, "[7041]/", ZINT_WARN_NONCOMPLIANT, "7041/", "261: AI (7041) data position 1: Invalid package type '/'" }, /* packagetype */
/*486*/ { -1, "[7041]/9", ZINT_WARN_NONCOMPLIANT, "7041/9", "261: AI (7041) data position 1: Invalid package type '/9'" }, /* packagetype */
/*487*/ { -1, "[7041]9/", ZINT_WARN_NONCOMPLIANT, "70419/", "261: AI (7041) data position 1: Invalid package type '9/'" }, /* packagetype */
/*488*/ { -1, "[7041]0", ZINT_WARN_NONCOMPLIANT, "70410", "261: AI (7041) data position 1: Invalid package type '0'" }, /* packagetype */
/*489*/ { -1, "[7041]00", ZINT_WARN_NONCOMPLIANT, "704100", "261: AI (7041) data position 1: Invalid package type '00'" }, /* packagetype */
/*490*/ { -1, "[7041]000", ZINT_WARN_NONCOMPLIANT, "7041000", "261: AI (7041) data position 1: Invalid package type '000'" }, /* packagetype */
/*491*/ { -1, "[7041]0000", ZINT_WARN_NONCOMPLIANT, "70410000", "261: AI (7041) data position 1: Invalid package type '0000'" }, /* packagetype */
/*492*/ { -1, "[7041]1", ZINT_WARN_NONCOMPLIANT, "70411", "261: AI (7041) data position 1: Invalid package type '1'" }, /* packagetype */
/*493*/ { -1, "[7041]//", ZINT_WARN_NONCOMPLIANT, "7041//", "261: AI (7041) data position 1: Invalid package type '//'" }, /* packagetype */
/*494*/ { -1, "[7041]11", ZINT_WARN_NONCOMPLIANT, "704111", "261: AI (7041) data position 1: Invalid package type '11'" }, /* packagetype */
/*495*/ { -1, "[7041]1A", 0, "70411A", "" }, /* packagetype */
/*496*/ { -1, "[7041]1A1", ZINT_WARN_NONCOMPLIANT, "70411A1", "261: AI (7041) data position 1: Invalid package type '1A1'" }, /* packagetype */
/*497*/ { -1, "[7041]1_A1", ZINT_WARN_NONCOMPLIANT, "70411_A1", "261: AI (7041) data position 1: Invalid package type '1_A1'" }, /* packagetype */
/*498*/ { -1, "[7041]1A1_", ZINT_WARN_NONCOMPLIANT, "70411A1_", "261: AI (7041) data position 1: Invalid package type '1A1_'" }, /* packagetype */
/*499*/ { -1, "[7041]1B", 0, "70411B", "" }, /* packagetype */
/*500*/ { -1, "[7041]1W", 0, "70411W", "" }, /* packagetype */
/*501*/ { -1, "[7041]1X", ZINT_WARN_NONCOMPLIANT, "70411X", "261: AI (7041) data position 1: Invalid package type '1X'" }, /* packagetype */
/*502*/ { -1, "[7041]2A", ZINT_WARN_NONCOMPLIANT, "70412A", "261: AI (7041) data position 1: Invalid package type '2A'" }, /* packagetype */
/*503*/ { -1, "[7041]2B", ZINT_WARN_NONCOMPLIANT, "70412B", "261: AI (7041) data position 1: Invalid package type '2B'" }, /* packagetype */
/*504*/ { -1, "[7041]2C", 0, "70412C", "" }, /* packagetype */
/*505*/ { -1, "[7041]2D", ZINT_WARN_NONCOMPLIANT, "70412D", "261: AI (7041) data position 1: Invalid package type '2D'" }, /* packagetype */
/*506*/ { -1, "[7041]3A", 0, "70413A", "" }, /* packagetype */
/*507*/ { -1, "[7041]3H", 0, "70413H", "" }, /* packagetype */
/*508*/ { -1, "[7041]42", ZINT_WARN_NONCOMPLIANT, "704142", "261: AI (7041) data position 1: Invalid package type '42'" }, /* packagetype */
/*509*/ { -1, "[7041]43", 0, "704143", "" }, /* packagetype */
/*510*/ { -1, "[7041]44", 0, "704144", "" }, /* packagetype */
/*511*/ { -1, "[7041]45", ZINT_WARN_NONCOMPLIANT, "704145", "261: AI (7041) data position 1: Invalid package type '45'" }, /* packagetype */
/*512*/ { -1, "[7041]4A", 0, "70414A", "" }, /* packagetype */
/*513*/ { -1, "[7041]4H", 0, "70414H", "" }, /* packagetype */
/*514*/ { -1, "[7041]4I", ZINT_WARN_NONCOMPLIANT, "70414I", "261: AI (7041) data position 1: Invalid package type '4I'" }, /* packagetype */
/*515*/ { -1, "[7041]5H", 0, "70415H", "" }, /* packagetype */
/*516*/ { -1, "[7041]5K", ZINT_WARN_NONCOMPLIANT, "70415K", "261: AI (7041) data position 1: Invalid package type '5K'" }, /* packagetype */
/*517*/ { -1, "[7041]5M", 0, "70415M", "" }, /* packagetype */
/*518*/ { -1, "[7041]6H", 0, "70416H", "" }, /* packagetype */
/*519*/ { -1, "[7041]6I", ZINT_WARN_NONCOMPLIANT, "70416I", "261: AI (7041) data position 1: Invalid package type '6I'" }, /* packagetype */
/*520*/ { -1, "[7041]7B", 0, "70417B", "" }, /* packagetype */
/*521*/ { -1, "[7041]7C", ZINT_WARN_NONCOMPLIANT, "70417C", "261: AI (7041) data position 1: Invalid package type '7C'" }, /* packagetype */
/*522*/ { -1, "[7041]81", ZINT_WARN_NONCOMPLIANT, "704181", "261: AI (7041) data position 1: Invalid package type '81'" }, /* packagetype */
/*523*/ { -1, "[7041]8A", 0, "70418A", "" }, /* packagetype */
/*524*/ { -1, "[7041]8C", 0, "70418C", "" }, /* packagetype */
/*525*/ { -1, "[7041]90", ZINT_WARN_NONCOMPLIANT, "704190", "261: AI (7041) data position 1: Invalid package type '90'" }, /* packagetype */
/*526*/ { -1, "[7041]AA", 0, "7041AA", "" }, /* packagetype */
/*527*/ { -1, "[7041]AB", 0, "7041AB", "" }, /* packagetype */
/*528*/ { -1, "[7041]AJ", 0, "7041AJ", "" }, /* packagetype */
/*529*/ { -1, "[7041]AK", ZINT_WARN_NONCOMPLIANT, "7041AK", "261: AI (7041) data position 1: Invalid package type 'AK'" }, /* packagetype */
/*530*/ { -1, "[7041]AM", 0, "7041AM", "" }, /* packagetype */
/*531*/ { -1, "[7041]AP", 0, "7041AP", "" }, /* packagetype */
/*532*/ { -1, "[7041]AV", 0, "7041AV", "" }, /* packagetype */
/*533*/ { -1, "[7041]B3", ZINT_WARN_NONCOMPLIANT, "7041B3", "261: AI (7041) data position 1: Invalid package type 'B3'" }, /* packagetype */
/*534*/ { -1, "[7041]B4", 0, "7041B4", "" }, /* packagetype */
/*535*/ { -1, "[7041]BA", ZINT_WARN_NONCOMPLIANT, "7041BA", "261: AI (7041) data position 1: Invalid package type 'BA'" }, /* packagetype */
/*536*/ { -1, "[7041]BB", 0, "7041BB", "" }, /* packagetype */
/*537*/ { -1, "[7041]BG", 0, "7041BG", "" }, /* packagetype */
/*538*/ { -1, "[7041]BM", 0, "7041BM", "" }, /* packagetype */
/*539*/ { -1, "[7041]BN", 0, "7041BN", "" }, /* packagetype */
/*540*/ { -1, "[7041]BR", 0, "7041BR", "" }, /* packagetype */
/*541*/ { -1, "[7041]BZ", 0, "7041BZ", "" }, /* packagetype */
/*542*/ { -1, "[7041]C?", ZINT_WARN_NONCOMPLIANT, "7041C?", "261: AI (7041) data position 1: Invalid package type 'C?'" }, /* packagetype */
/*543*/ { -1, "[7041]CA", 0, "7041CA", "" }, /* packagetype */
/*544*/ { -1, "[7041]CB", 0, "7041CB", "" }, /* packagetype */
/*545*/ { -1, "[7041]CC", 0, "7041CC", "" }, /* packagetype */
/*546*/ { -1, "[7041]DA", 0, "7041DA", "" }, /* packagetype */
/*547*/ { -1, "[7041]DD", ZINT_WARN_NONCOMPLIANT, "7041DD", "261: AI (7041) data position 1: Invalid package type 'DD'" }, /* packagetype */
/*548*/ { -1, "[7041]DF", ZINT_WARN_NONCOMPLIANT, "7041DF", "261: AI (7041) data position 1: Invalid package type 'DF'" }, /* packagetype */
/*549*/ { -1, "[7041]DG", 0, "7041DG", "" }, /* packagetype */
/*550*/ { -1, "[7041]DP", 0, "7041DP", "" }, /* packagetype */
/*551*/ { -1, "[7041]DQ", ZINT_WARN_NONCOMPLIANT, "7041DQ", "261: AI (7041) data position 1: Invalid package type 'DQ'" }, /* packagetype */
/*552*/ { -1, "[7041]E0", ZINT_WARN_NONCOMPLIANT, "7041E0", "261: AI (7041) data position 1: Invalid package type 'E0'" }, /* packagetype */
/*553*/ { -1, "[7041]E1", 0, "7041E1", "" }, /* packagetype */
/*554*/ { -1, "[7041]E3", 0, "7041E3", "" }, /* packagetype */
/*555*/ { -1, "[7041]EB", ZINT_WARN_NONCOMPLIANT, "7041EB", "261: AI (7041) data position 1: Invalid package type 'EB'" }, /* packagetype */
/*556*/ { -1, "[7041]EC", 0, "7041EC", "" }, /* packagetype */
/*557*/ { -1, "[7041]FA", ZINT_WARN_NONCOMPLIANT, "7041FA", "261: AI (7041) data position 1: Invalid package type 'FA'" }, /* packagetype */
/*558*/ { -1, "[7041]FO", 0, "7041FO", "" }, /* packagetype */
/*559*/ { -1, "[7041]FP", 0, "7041FP", "" }, /* packagetype */
/*560*/ { -1, "[7041]GA", ZINT_WARN_NONCOMPLIANT, "7041GA", "261: AI (7041) data position 1: Invalid package type 'GA'" }, /* packagetype */
/*561*/ { -1, "[7041]GB", 0, "7041GB", "" }, /* packagetype */
/*562*/ { -1, "[7041]HR", 0, "7041HR", "" }, /* packagetype */
/*563*/ { -1, "[7041]HT", ZINT_WARN_NONCOMPLIANT, "7041HT", "261: AI (7041) data position 1: Invalid package type 'HT'" }, /* packagetype */
/*564*/ { -1, "[7041]IJ", ZINT_WARN_NONCOMPLIANT, "7041IJ", "261: AI (7041) data position 1: Invalid package type 'IJ'" }, /* packagetype */
/*565*/ { -1, "[7041]IL", 0, "7041IL", "" }, /* packagetype */
/*566*/ { -1, "[7041]IZ", 0, "7041IZ", "" }, /* packagetype */
/*567*/ { -1, "[7041]JB", 0, "7041JB", "" }, /* packagetype */
/*568*/ { -1, "[7041]JD", ZINT_WARN_NONCOMPLIANT, "7041JD", "261: AI (7041) data position 1: Invalid package type 'JD'" }, /* packagetype */
/*569*/ { -1, "[7041]KG", 0, "7041KG", "" }, /* packagetype */
/*570*/ { -1, "[7041]KH", ZINT_WARN_NONCOMPLIANT, "7041KH", "261: AI (7041) data position 1: Invalid package type 'KH'" }, /* packagetype */
/*571*/ { -1, "[7041]LA", ZINT_WARN_NONCOMPLIANT, "7041LA", "261: AI (7041) data position 1: Invalid package type 'LA'" }, /* packagetype */
/*572*/ { -1, "[7041]LE", 0, "7041LE", "" }, /* packagetype */
/*573*/ { -1, "[7041]ME", 0, "7041ME", "" }, /* packagetype */
/*574*/ { -1, "[7041]MP", ZINT_WARN_NONCOMPLIANT, "7041MP", "261: AI (7041) data position 1: Invalid package type 'MP'" }, /* packagetype */
/*575*/ { -1, "[7041]NA", 0, "7041NA", "" }, /* packagetype */
/*576*/ { -1, "[7041]NB", ZINT_WARN_NONCOMPLIANT, "7041NB", "261: AI (7041) data position 1: Invalid package type 'NB'" }, /* packagetype */
/*577*/ { -1, "[7041]OK", 0, "7041OK", "" }, /* packagetype */
/*578*/ { -1, "[7041]OP", ZINT_WARN_NONCOMPLIANT, "7041OP", "261: AI (7041) data position 1: Invalid package type 'OP'" }, /* packagetype */
/*579*/ { -1, "[7041]P1", ZINT_WARN_NONCOMPLIANT, "7041P1", "261: AI (7041) data position 1: Invalid package type 'P1'" }, /* packagetype */
/*580*/ { -1, "[7041]P2", 0, "7041P2", "" }, /* packagetype */
/*581*/ { -1, "[7041]P3", ZINT_WARN_NONCOMPLIANT, "7041P3", "261: AI (7041) data position 1: Invalid package type 'P3'" }, /* packagetype */
/*582*/ { -1, "[7041]PA", 0, "7041PA", "" }, /* packagetype */
/*583*/ { -1, "[7041]PL", 0, "7041PL", "" }, /* packagetype */
/*584*/ { -1, "[7041]PO", 0, "7041PO", "" }, /* packagetype */
/*585*/ { -1, "[7041]PQ", ZINT_WARN_NONCOMPLIANT, "7041PQ", "261: AI (7041) data position 1: Invalid package type 'PQ'" }, /* packagetype */
/*586*/ { -1, "[7041]PP", 0, "7041PP", "" }, /* packagetype */
/*587*/ { -1, "[7041]PU", 0, "7041PU", "" }, /* packagetype */
/*588*/ { -1, "[7041]QO", ZINT_WARN_NONCOMPLIANT, "7041QO", "261: AI (7041) data position 1: Invalid package type 'QO'" }, /* packagetype */
/*589*/ { -1, "[7041]QS", 0, "7041QS", "" }, /* packagetype */
/*590*/ { -1, "[7041]RB", ZINT_WARN_NONCOMPLIANT, "7041RB", "261: AI (7041) data position 1: Invalid package type 'RB'" }, /* packagetype */
/*591*/ { -1, "[7041]RC", ZINT_WARN_NONCOMPLIANT, "7041RC", "261: AI (7041) data position 1: Invalid package type 'RC'" }, /* packagetype */
/*592*/ { -1, "[7041]RD", 0, "7041RD", "" }, /* packagetype */
/*593*/ { -1, "[7041]S1", 0, "7041S1", "" }, /* packagetype */
/*594*/ { -1, "[7041]S2", ZINT_WARN_NONCOMPLIANT, "7041S2", "261: AI (7041) data position 1: Invalid package type 'S2'" }, /* packagetype */
/*595*/ { -1, "[7041]SE", 0, "7041SE", "" }, /* packagetype */
/*596*/ { -1, "[7041]ST", 0, "7041ST", "" }, /* packagetype */
/*597*/ { -1, "[7041]T0", ZINT_WARN_NONCOMPLIANT, "7041T0", "261: AI (7041) data position 1: Invalid package type 'T0'" }, /* packagetype */
/*598*/ { -1, "[7041]T1", 0, "7041T1", "" }, /* packagetype */
/*599*/ { -1, "[7041]TE", 0, "7041TE", "" }, /* packagetype */
/*600*/ { -1, "[7041]TR", 0, "7041TR", "" }, /* packagetype */
/*601*/ { -1, "[7041]TT", 0, "7041TT", "" }, /* packagetype */
/*602*/ { -1, "[7041]TW", 0, "7041TW", "" }, /* packagetype */
/*603*/ { -1, "[7041]UA", ZINT_WARN_NONCOMPLIANT, "7041UA", "261: AI (7041) data position 1: Invalid package type 'UA'" }, /* packagetype */
/*604*/ { -1, "[7041]UN", 0, "7041UN", "" }, /* packagetype */
/*605*/ { -1, "[7041]UU", ZINT_WARN_NONCOMPLIANT, "7041UU", "261: AI (7041) data position 1: Invalid package type 'UU'" }, /* packagetype */
/*606*/ { -1, "[7041]VK", 0, "7041VK", "" }, /* packagetype */
/*607*/ { -1, "[7041]WA", 0, "7041WA", "" }, /* packagetype */
/*608*/ { -1, "[7041]WI", ZINT_WARN_NONCOMPLIANT, "7041WI", "261: AI (7041) data position 1: Invalid package type 'WI'" }, /* packagetype */
/*609*/ { -1, "[7041]WR", 0, "7041WR", "" }, /* packagetype */
/*610*/ { -1, "[7041]X1", ZINT_WARN_NONCOMPLIANT, "7041X1", "261: AI (7041) data position 1: Invalid package type 'X1'" }, /* packagetype */
/*611*/ { -1, "[7041]X2", ZINT_WARN_NONCOMPLIANT, "7041X2", "261: AI (7041) data position 1: Invalid package type 'X2'" }, /* packagetype */
/*612*/ { -1, "[7041]X3", 0, "7041X3", "" }, /* packagetype */
/*613*/ { -1, "[7041]XA", 0, "7041XA", "" }, /* packagetype */
/*614*/ { -1, "[7041]XL", ZINT_WARN_NONCOMPLIANT, "7041XL", "261: AI (7041) data position 1: Invalid package type 'XL'" }, /* packagetype */
/*615*/ { -1, "[7041]YA", 0, "7041YA", "" }, /* packagetype */
/*616*/ { -1, "[7041]YE", ZINT_WARN_NONCOMPLIANT, "7041YE", "261: AI (7041) data position 1: Invalid package type 'YE'" }, /* packagetype */
/*617*/ { -1, "[7041]YZ", 0, "7041YZ", "" }, /* packagetype */
/*618*/ { -1, "[7041]ZA", 0, "7041ZA", "" }, /* packagetype */
/*619*/ { -1, "[7041]ZE", ZINT_WARN_NONCOMPLIANT, "7041ZE", "261: AI (7041) data position 1: Invalid package type 'ZE'" }, /* packagetype */
/*620*/ { -1, "[7041]ZY", 0, "7041ZY", "" }, /* packagetype */
/*621*/ { -1, "[7041]ZZ", 0, "7041ZZ", "" }, /* packagetype */
/*622*/ { -1, "[7041]Z_", ZINT_WARN_NONCOMPLIANT, "7041Z_", "261: AI (7041) data position 1: Invalid package type 'Z_'" }, /* packagetype */
/*623*/ { -1, "[7041]__", ZINT_WARN_NONCOMPLIANT, "7041__", "261: AI (7041) data position 1: Invalid package type '__'" }, /* packagetype */
/*624*/ { -1, "[7041]///", ZINT_WARN_NONCOMPLIANT, "7041///", "261: AI (7041) data position 1: Invalid package type '///'" }, /* packagetype */
/*625*/ { -1, "[7041]100", ZINT_WARN_NONCOMPLIANT, "7041100", "261: AI (7041) data position 1: Invalid package type '100'" }, /* packagetype */
/*626*/ { -1, "[7041]201", 0, "7041201", "" }, /* packagetype */
/*627*/ { -1, "[7041]202", 0, "7041202", "" }, /* packagetype */
/*628*/ { -1, "[7041]206", 0, "7041206", "" }, /* packagetype */
/*629*/ { -1, "[7041]207", ZINT_WARN_NONCOMPLIANT, "7041207", "261: AI (7041) data position 1: Invalid package type '207'" }, /* packagetype */
/*630*/ { -1, "[7041]210", 0, "7041210", "" }, /* packagetype */
/*631*/ { -1, "[7041]212", 0, "7041212", "" }, /* packagetype */
/*632*/ { -1, "[7041]800", ZINT_WARN_NONCOMPLIANT, "7041800", "261: AI (7041) data position 1: Invalid package type '800'" }, /* packagetype */
/*633*/ { -1, "[7041]900", ZINT_WARN_NONCOMPLIANT, "7041900", "261: AI (7041) data position 1: Invalid package type '900'" }, /* packagetype */
/*634*/ { -1, "[7041]AAE", ZINT_WARN_NONCOMPLIANT, "7041AAE", "261: AI (7041) data position 1: Invalid package type 'AAE'" }, /* packagetype */
/*635*/ { -1, "[7041]APE", 0, "7041APE", "" }, /* packagetype */
/*636*/ { -1, "[7041]APF", ZINT_WARN_NONCOMPLIANT, "7041APF", "261: AI (7041) data position 1: Invalid package type 'APF'" }, /* packagetype */
/*637*/ { -1, "[7041]BBC", ZINT_WARN_NONCOMPLIANT, "7041BBC", "261: AI (7041) data position 1: Invalid package type 'BBC'" }, /* packagetype */
/*638*/ { -1, "[7041]BGE", 0, "7041BGE", "" }, /* packagetype */
/*639*/ { -1, "[7041]BME", 0, "7041BME", "" }, /* packagetype */
/*640*/ { -1, "[7041]BRI", 0, "7041BRI", "" }, /* packagetype */
/*641*/ { -1, "[7041]BSI", ZINT_WARN_NONCOMPLIANT, "7041BSI", "261: AI (7041) data position 1: Invalid package type 'BSI'" }, /* packagetype */
/*642*/ { -1, "[7041]CAL", ZINT_WARN_NONCOMPLIANT, "7041CAL", "261: AI (7041) data position 1: Invalid package type 'CAL'" }, /* packagetype */
/*643*/ { -1, "[7041]CBL", 0, "7041CBL", "" }, /* packagetype */
/*644*/ { -1, "[7041]CCE", 0, "7041CCE", "" }, /* packagetype */
/*645*/ { -1, "[7041]DPE", 0, "7041DPE", "" }, /* packagetype */
/*646*/ { -1, "[7041]DPF", ZINT_WARN_NONCOMPLIANT, "7041DPF", "261: AI (7041) data position 1: Invalid package type 'DPF'" }, /* packagetype */
/*647*/ { -1, "[7041]EPE", ZINT_WARN_NONCOMPLIANT, "7041EPE", "261: AI (7041) data position 1: Invalid package type 'EPE'" }, /* packagetype */
/*648*/ { -1, "[7041]FOB", 0, "7041FOB", "" }, /* packagetype */
/*649*/ { -1, "[7041]FOC", ZINT_WARN_NONCOMPLIANT, "7041FOC", "261: AI (7041) data position 1: Invalid package type 'FOC'" }, /* packagetype */
/*650*/ { -1, "[7041]FPE", 0, "7041FPE", "" }, /* packagetype */
/*651*/ { -1, "[7041]GPE", ZINT_WARN_NONCOMPLIANT, "7041GPE", "261: AI (7041) data position 1: Invalid package type 'GPE'" }, /* packagetype */
/*652*/ { -1, "[7041]HPE", ZINT_WARN_NONCOMPLIANT, "7041HPE", "261: AI (7041) data position 1: Invalid package type 'HPE'" }, /* packagetype */
/*653*/ { -1, "[7041]IPE", ZINT_WARN_NONCOMPLIANT, "7041IPE", "261: AI (7041) data position 1: Invalid package type 'IPE'" }, /* packagetype */
/*654*/ { -1, "[7041]JAB", ZINT_WARN_NONCOMPLIANT, "7041JAB", "261: AI (7041) data position 1: Invalid package type 'JAB'" }, /* packagetype */
/*655*/ { -1, "[7041]KAB", ZINT_WARN_NONCOMPLIANT, "7041KAB", "261: AI (7041) data position 1: Invalid package type 'KAB'" }, /* packagetype */
/*656*/ { -1, "[7041]LAA", ZINT_WARN_NONCOMPLIANT, "7041LAA", "261: AI (7041) data position 1: Invalid package type 'LAA'" }, /* packagetype */
/*657*/ { -1, "[7041]LAB", 0, "7041LAB", "" }, /* packagetype */
/*658*/ { -1, "[7041]MPE", 0, "7041MPE", "" }, /* packagetype */
/*659*/ { -1, "[7041]MPF", ZINT_WARN_NONCOMPLIANT, "7041MPF", "261: AI (7041) data position 1: Invalid package type 'MPF'" }, /* packagetype */
/*660*/ { -1, "[7041]OPE", 0, "7041OPE", "" }, /* packagetype */
/*661*/ { -1, "[7041]QAE", ZINT_WARN_NONCOMPLIANT, "7041QAE", "261: AI (7041) data position 1: Invalid package type 'QAE'" }, /* packagetype */
/*662*/ { -1, "[7041]PAD", ZINT_WARN_NONCOMPLIANT, "7041PAD", "261: AI (7041) data position 1: Invalid package type 'PAD'" }, /* packagetype */
/*663*/ { -1, "[7041]PAE", 0, "7041PAE", "" }, /* packagetype */
/*664*/ { -1, "[7041]PLP", 0, "7041PLP", "" }, /* packagetype */
/*665*/ { -1, "[7041]POP", 0, "7041POP", "" }, /* packagetype */
/*666*/ { -1, "[7041]PPE", 0, "7041PPE", "" }, /* packagetype */
/*667*/ { -1, "[7041]PUE", 0, "7041PUE", "" }, /* packagetype */
/*668*/ { -1, "[7041]QUE", ZINT_WARN_NONCOMPLIANT, "7041QUE", "261: AI (7041) data position 1: Invalid package type 'QUE'" }, /* packagetype */
/*669*/ { -1, "[7041]RB0", ZINT_WARN_NONCOMPLIANT, "7041RB0", "261: AI (7041) data position 1: Invalid package type 'RB0'" }, /* packagetype */
/*670*/ { -1, "[7041]RB1", 0, "7041RB1", "" }, /* packagetype */
/*671*/ { -1, "[7041]RB3", 0, "7041RB3", "" }, /* packagetype */
/*672*/ { -1, "[7041]RB4", ZINT_WARN_NONCOMPLIANT, "7041RB4", "261: AI (7041) data position 1: Invalid package type 'RB4'" }, /* packagetype */
/*673*/ { -1, "[7041]RBA", ZINT_WARN_NONCOMPLIANT, "7041RBA", "261: AI (7041) data position 1: Invalid package type 'RBA'" }, /* packagetype */
/*674*/ { -1, "[7041]RCB", 0, "7041RCB", "" }, /* packagetype */
/*675*/ { -1, "[7041]SEC", 0, "7041SEC", "" }, /* packagetype */
/*676*/ { -1, "[7041]STL", 0, "7041STL", "" }, /* packagetype */
/*677*/ { -1, "[7041]STM", ZINT_WARN_NONCOMPLIANT, "7041STM", "261: AI (7041) data position 1: Invalid package type 'STM'" }, /* packagetype */
/*678*/ { -1, "[7041]TEV", 0, "7041TEV", "" }, /* packagetype */
/*679*/ { -1, "[7041]TTE", 0, "7041TTE", "" }, /* packagetype */
/*680*/ { -1, "[7041]TTF", ZINT_WARN_NONCOMPLIANT, "7041TTF", "261: AI (7041) data position 1: Invalid package type 'TTF'" }, /* packagetype */
/*681*/ { -1, "[7041]TWE", 0, "7041TWE", "" }, /* packagetype */
/*682*/ { -1, "[7041]X10", ZINT_WARN_NONCOMPLIANT, "7041X10", "261: AI (7041) data position 1: Invalid package type 'X10'" }, /* packagetype */
/*683*/ { -1, "[7041]X11", 0, "7041X11", "" }, /* packagetype */
/*684*/ { -1, "[7041]X13", ZINT_WARN_NONCOMPLIANT, "7041X13", "261: AI (7041) data position 1: Invalid package type 'X13'" }, /* packagetype */
/*685*/ { -1, "[7041]X14", ZINT_WARN_NONCOMPLIANT, "7041X14", "261: AI (7041) data position 1: Invalid package type 'X14'" }, /* packagetype */
/*686*/ { -1, "[7041]X15", 0, "7041X15", "" }, /* packagetype */
/*687*/ { -1, "[7041]X19", 0, "7041X19", "" }, /* packagetype */
/*688*/ { -1, "[7041]X20", 0, "7041X20", "" }, /* packagetype */
/*689*/ { -1, "[7041]X21", ZINT_WARN_NONCOMPLIANT, "7041X21", "261: AI (7041) data position 1: Invalid package type 'X21'" }, /* packagetype */
/*690*/ { -1, "[7041]___", ZINT_WARN_NONCOMPLIANT, "7041___", "261: AI (7041) data position 1: Invalid package type '___'" }, /* packagetype */
};
const int data_size = ARRAY_SIZE(data);
int i, length, ret;
struct zint_symbol *symbol = NULL;
int reduced_length ZINT_TESTUTIL_SANITIZEM_INIT;
char reduced[1024] ZINT_TESTUTIL_SANITIZEM_INIT;
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 = (int) strlen(data[i].data);
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*/);
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) {
assert_zero(strcmp(reduced, data[i].expected), "i:%d strcmp(%s, %s) != 0\n",
i, testUtilEscape(reduced, reduced_length, escaped, ARRAY_SIZE(escaped)),
testUtilEscape(data[i].expected, (int) strlen(data[i].expected), escaped2,
ARRAY_SIZE(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 GS1_MODE for non-forced GS1 compliant symbologies (see gs1_compliant() in library.c)
*/
static void test_input_mode(const testCtx *const p_ctx) {
int debug = p_ctx->debug;
struct item {
int symbology;
const char *data;
int input_mode;
int output_options;
int ret;
int compare_previous;
};
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
static const struct item data[] = {
/* 0*/ { BARCODE_AZTEC, "[01]12345678901231", GS1_MODE, -1 , 0, 0 },
/* 1*/ { BARCODE_AZTEC, "[01]12345678901231", GS1_MODE | ESCAPE_MODE, -1, 0, 1 },
/* 2*/ { BARCODE_AZTEC, "(01)12345678901231", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, 0, 1 },
/* 3*/ { BARCODE_AZTEC, "^0112345678901231", GS1_MODE, -1, 0, 1 },
/* 4*/ { BARCODE_AZTEC, "0112345678901231", GS1_MODE | GS1RAW_MODE, -1, 0, 1 },
/* 5*/ { BARCODE_AZTEC, "(01)12345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 0 },
/* 6*/ { BARCODE_AZTEC, "^0112345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 1 },
/* 7*/ { BARCODE_AZTEC, "0112345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1RAW_MODE, -1, ZINT_WARN_NONCOMPLIANT, 1 },
/* 8*/ { BARCODE_AZTEC, "(01)12345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 1 },
/* 9*/ { BARCODE_AZTEC, "^0112345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 1 },
/* 10*/ { BARCODE_AZTEC, "0112345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE | GS1RAW_MODE, -1, 0, 1 },
/* 11*/ { BARCODE_AZTEC, "(01)123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 12*/ { BARCODE_AZTEC, "^01123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 13*/ { BARCODE_AZTEC, "01123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1RAW_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 14*/ { BARCODE_AZTEC, "(01)123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/* 15*/ { BARCODE_AZTEC, "(01)12345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 16*/ { BARCODE_AZTEC, "^0112345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 17*/ { BARCODE_AZTEC, "0112345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1RAW_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 18*/ { BARCODE_AZTEC, "(01)12345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/* 19*/ { BARCODE_AZTEC, "(01)1234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 0 },
/* 20*/ { BARCODE_AZTEC, "^011234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 1 },
/* 21*/ { BARCODE_AZTEC, "011234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1RAW_MODE, -1, ZINT_WARN_NONCOMPLIANT, 1 },
/* 22*/ { BARCODE_AZTEC, "(01)1234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/* 23*/ { BARCODE_AZTEC, "[01]1234567890123", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 24*/ { BARCODE_AZTEC, "^011234567890123", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 25*/ { BARCODE_AZTEC, "011234567890123", GS1_MODE | GS1RAW_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 26*/ { BARCODE_AZTEC, "[01]1234567890123", GS1_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/* 27*/ { BARCODE_AZTEC, "[01]12345678901231", GS1_MODE, READER_INIT, ZINT_ERROR_INVALID_OPTION, 0 },
/* 28*/ { BARCODE_AZTEC, "^0112345678901231", GS1_MODE, READER_INIT, ZINT_ERROR_INVALID_OPTION, 0 },
/* 29*/ { BARCODE_AZTEC, "0112345678901231", GS1_MODE | GS1RAW_MODE, READER_INIT, ZINT_ERROR_INVALID_OPTION, 0 },
/* 30*/ { BARCODE_AZTEC, "[01]12345678901231", GS1_MODE | ESCAPE_MODE, READER_INIT, ZINT_ERROR_INVALID_OPTION, 0 },
/* 31*/ { BARCODE_AZTEC, "[10]()", GS1_MODE, -1, 0, 0 },
/* 32*/ { BARCODE_AZTEC, "^10()", GS1_MODE, -1, 0, 1 },
/* 33*/ { BARCODE_AZTEC, "10()", GS1_MODE | GS1RAW_MODE, -1, 0, 1 },
/* 34*/ { BARCODE_AZTEC, "(10)()", GS1_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 35*/ { BARCODE_AZTEC, "(10)()", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 36*/ { BARCODE_AZTEC, "(10)\\(\\)", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, 0, 0 },
/* 37*/ { BARCODE_AZTEC, "1234", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 38*/ { BARCODE_AZTEC, "1234", GS1_MODE | ESCAPE_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 39*/ { BARCODE_AZTEC, "1234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 }, /* Must still begin with AI */
/* 40*/ { BARCODE_AZTEC, "^1234", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 41*/ { BARCODE_AZTEC, "1234", GS1_MODE | GS1RAW_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 42*/ { BARCODE_AZTEC, "https://example.com/01/12345678901231", GS1_MODE, -1, 0, 0 },
/* 43*/ { BARCODE_CODABLOCKF, "[01]12345678901231", GS1_MODE, -1, ZINT_ERROR_INVALID_OPTION, 0 }, /* Codablock F does not support GS1 */
/* 44*/ { BARCODE_CODABLOCKF, "^0112345678901231", GS1_MODE, -1, ZINT_ERROR_INVALID_OPTION, 0 },
/* 45*/ { BARCODE_CODABLOCKF, "0112345678901231", GS1_MODE | GS1RAW_MODE, -1, ZINT_ERROR_INVALID_OPTION, 0 },
/* 46*/ { BARCODE_CODABLOCKF, "[01]12345678901231", GS1_MODE | ESCAPE_MODE, -1, ZINT_ERROR_INVALID_OPTION, 0 },
/* 47*/ { BARCODE_CODABLOCKF, "[01]12345678901231", GS1_MODE | ESCAPE_MODE | GS1NOCHECK_MODE, -1, ZINT_ERROR_INVALID_OPTION, 0 },
/* 48*/ { BARCODE_CODABLOCKF, "1234", GS1_MODE, -1, ZINT_ERROR_INVALID_OPTION, 0 },
/* 49*/ { BARCODE_CODABLOCKF, "^1234", GS1_MODE, -1, ZINT_ERROR_INVALID_OPTION, 0 },
/* 50*/ { BARCODE_CODABLOCKF, "1234", GS1_MODE | GS1RAW_MODE, -1, ZINT_ERROR_INVALID_OPTION, 0 },
/* 51*/ { BARCODE_CODABLOCKF, "1234", GS1_MODE | ESCAPE_MODE, -1, ZINT_ERROR_INVALID_OPTION, 0 },
/* 52*/ { BARCODE_CODEONE, "[01]12345678901231", GS1_MODE, -1, 0, 0 },
/* 53*/ { BARCODE_CODEONE, "^0112345678901231", GS1_MODE, -1, 0, 1 },
/* 54*/ { BARCODE_CODEONE, "0112345678901231", GS1_MODE | GS1RAW_MODE, -1, 0, 1 },
/* 55*/ { BARCODE_CODEONE, "[01]12345678901231", GS1_MODE | ESCAPE_MODE, -1, 0, 1 },
/* 56*/ { BARCODE_CODEONE, "(01)12345678901231", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, 0, 1 },
/* 57*/ { BARCODE_CODEONE, "(01)12345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 0 },
/* 58*/ { BARCODE_CODEONE, "^0112345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 1 },
/* 59*/ { BARCODE_CODEONE, "0112345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1RAW_MODE, -1, ZINT_WARN_NONCOMPLIANT, 1 },
/* 60*/ { BARCODE_CODEONE, "(01)12345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 1 },
/* 61*/ { BARCODE_CODEONE, "(01)123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 62*/ { BARCODE_CODEONE, "^01123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 63*/ { BARCODE_CODEONE, "01123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1RAW_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 64*/ { BARCODE_CODEONE, "(01)123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/* 65*/ { BARCODE_CODEONE, "(01)12345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 66*/ { BARCODE_CODEONE, "(01)12345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/* 67*/ { BARCODE_CODEONE, "(01)1234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 0 },
/* 68*/ { BARCODE_CODEONE, "(01)1234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 1 },
/* 69*/ { BARCODE_CODEONE, "[01]1234567890123", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 70*/ { BARCODE_CODEONE, "[01]1234567890123", GS1_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/* 71*/ { BARCODE_CODEONE, "[10]()", GS1_MODE, -1, 0, 0 },
/* 72*/ { BARCODE_CODEONE, "(10)()", GS1_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 73*/ { BARCODE_CODEONE, "(10)()", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 74*/ { BARCODE_CODEONE, "(10)\\(\\)", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, 0, 0 },
/* 75*/ { BARCODE_CODEONE, "1234", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 76*/ { BARCODE_CODEONE, "1234", GS1_MODE | ESCAPE_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 77*/ { BARCODE_CODE16K, "[01]12345678901231", GS1_MODE, -1, 0, 0 },
/* 78*/ { BARCODE_CODE16K, "^0112345678901231", GS1_MODE, -1, 0, 1 },
/* 79*/ { BARCODE_CODE16K, "0112345678901231", GS1_MODE | GS1RAW_MODE, -1, 0, 1 },
/* 80*/ { BARCODE_CODE16K, "[01]12345678901231", GS1_MODE | ESCAPE_MODE, -1, 0, 1 },
/* 81*/ { BARCODE_CODE16K, "(01)12345678901231", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, 0, 1 },
/* 82*/ { BARCODE_CODE16K, "(01)12345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 0 },
/* 83*/ { BARCODE_CODE16K, "(01)12345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 1 },
/* 84*/ { BARCODE_CODE16K, "(01)123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 85*/ { BARCODE_CODE16K, "(01)123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/* 86*/ { BARCODE_CODE16K, "(01)12345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 87*/ { BARCODE_CODE16K, "(01)12345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/* 88*/ { BARCODE_CODE16K, "(01)1234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 0 },
/* 89*/ { BARCODE_CODE16K, "^011234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 1 },
/* 90*/ { BARCODE_CODE16K, "011234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1RAW_MODE, -1, ZINT_WARN_NONCOMPLIANT, 1 },
/* 91*/ { BARCODE_CODE16K, "(01)1234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 1 },
/* 92*/ { BARCODE_CODE16K, "[01]1234567890123", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 93*/ { BARCODE_CODE16K, "[01]1234567890123", GS1_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/* 94*/ { BARCODE_CODE16K, "[01]12345678901231", GS1_MODE, READER_INIT, ZINT_ERROR_INVALID_OPTION, 0 },
/* 95*/ { BARCODE_CODE16K, "[01]12345678901231", GS1_MODE | ESCAPE_MODE, READER_INIT, ZINT_ERROR_INVALID_OPTION, 0 },
/* 96*/ { BARCODE_CODE16K, "[10]()", GS1_MODE, -1, 0, 0 },
/* 97*/ { BARCODE_CODE16K, "(10)()", GS1_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 98*/ { BARCODE_CODE16K, "(10)()", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/* 99*/ { BARCODE_CODE16K, "(10)\\(\\)", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, 0, 0 },
/*100*/ { BARCODE_CODE16K, "1234", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*101*/ { BARCODE_CODE16K, "1234", GS1_MODE | ESCAPE_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*102*/ { BARCODE_CODE49, "[01]12345678901231", GS1_MODE, -1, 0, 0 },
/*103*/ { BARCODE_CODE49, "^0112345678901231", GS1_MODE, -1, 0, 1 },
/*104*/ { BARCODE_CODE49, "0112345678901231", GS1_MODE | GS1RAW_MODE, -1, 0, 1 },
/*105*/ { BARCODE_CODE49, "[01]12345678901231", GS1_MODE | ESCAPE_MODE, -1, 0, 1 },
/*106*/ { BARCODE_CODE49, "(01)12345678901231", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, 0, 1 },
/*107*/ { BARCODE_CODE49, "(01)12345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 0 },
/*108*/ { BARCODE_CODE49, "(01)12345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 1 },
/*109*/ { BARCODE_CODE49, "(01)123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*110*/ { BARCODE_CODE49, "(01)123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/*111*/ { BARCODE_CODE49, "(01)12345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*112*/ { BARCODE_CODE49, "(01)12345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/*113*/ { BARCODE_CODE49, "(01)1234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 0 },
/*114*/ { BARCODE_CODE49, "(01)1234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 1 },
/*115*/ { BARCODE_CODE49, "[01]1234567890123", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*116*/ { BARCODE_CODE49, "[01]1234567890123", GS1_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/*117*/ { BARCODE_CODE49, "[10]()", GS1_MODE, -1, 0, 0 },
/*118*/ { BARCODE_CODE49, "(10)()", GS1_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*119*/ { BARCODE_CODE49, "(10)()", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*120*/ { BARCODE_CODE49, "(10)\\(\\)", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, 0, 0 },
/*121*/ { BARCODE_CODE49, "1234", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*122*/ { BARCODE_CODE49, "1234", GS1_MODE | ESCAPE_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*123*/ { BARCODE_DATAMATRIX, "[01]12345678901231", GS1_MODE, -1, 0, 0 },
/*124*/ { BARCODE_DATAMATRIX, "^0112345678901231", GS1_MODE, -1, 0, 1 },
/*125*/ { BARCODE_DATAMATRIX, "[01]12345678901231", GS1_MODE | ESCAPE_MODE, -1, 0, 1 },
/*126*/ { BARCODE_DATAMATRIX, "(01)12345678901231", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, 0, 1 },
/*127*/ { BARCODE_DATAMATRIX, "(01)12345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 0 },
/*128*/ { BARCODE_DATAMATRIX, "^0112345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 1 },
/*129*/ { BARCODE_DATAMATRIX, "0112345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1RAW_MODE, -1, ZINT_WARN_NONCOMPLIANT, 1 },
/*130*/ { BARCODE_DATAMATRIX, "(01)12345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 1 },
/*131*/ { BARCODE_DATAMATRIX, "(01)123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*132*/ { BARCODE_DATAMATRIX, "(01)123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/*133*/ { BARCODE_DATAMATRIX, "(01)12345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*134*/ { BARCODE_DATAMATRIX, "(01)12345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/*135*/ { BARCODE_DATAMATRIX, "(01)1234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 0 },
/*136*/ { BARCODE_DATAMATRIX, "(01)1234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 1 },
/*137*/ { BARCODE_DATAMATRIX, "[01]1234567890123", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*138*/ { BARCODE_DATAMATRIX, "[01]1234567890123", GS1_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/*139*/ { BARCODE_DATAMATRIX, "[01]12345678901231", GS1_MODE, READER_INIT, ZINT_ERROR_INVALID_OPTION, 0 },
/*140*/ { BARCODE_DATAMATRIX, "[01]12345678901231", GS1_MODE | ESCAPE_MODE, READER_INIT, ZINT_ERROR_INVALID_OPTION, 0 },
/*141*/ { BARCODE_DATAMATRIX, "[10]()", GS1_MODE, -1, 0, 0 },
/*142*/ { BARCODE_DATAMATRIX, "(10)()", GS1_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*143*/ { BARCODE_DATAMATRIX, "(10)()", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*144*/ { BARCODE_DATAMATRIX, "(10)\\(\\)", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, 0, 0 },
/*145*/ { BARCODE_DATAMATRIX, "1234", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*146*/ { BARCODE_DATAMATRIX, "1234", GS1_MODE | ESCAPE_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*147*/ { BARCODE_DOTCODE, "[01]12345678901231", GS1_MODE, -1, 0, 0 },
/*148*/ { BARCODE_DOTCODE, "^0112345678901231", GS1_MODE, -1, 0, 1 },
/*149*/ { BARCODE_DOTCODE, "0112345678901231", GS1_MODE | GS1RAW_MODE, -1, 0, 1 },
/*150*/ { BARCODE_DOTCODE, "[01]12345678901231", GS1_MODE | ESCAPE_MODE, -1, 0, 1 },
/*151*/ { BARCODE_DOTCODE, "(01)12345678901231", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, 0, 1 },
/*152*/ { BARCODE_DOTCODE, "(01)12345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 0 },
/*153*/ { BARCODE_DOTCODE, "(01)12345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 1 },
/*154*/ { BARCODE_DOTCODE, "(01)123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*155*/ { BARCODE_DOTCODE, "(01)123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/*156*/ { BARCODE_DOTCODE, "(01)12345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*157*/ { BARCODE_DOTCODE, "(01)12345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/*158*/ { BARCODE_DOTCODE, "(01)1234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 0 },
/*159*/ { BARCODE_DOTCODE, "(01)1234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 1 },
/*160*/ { BARCODE_DOTCODE, "[01]1234567890123", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*161*/ { BARCODE_DOTCODE, "[01]1234567890123", GS1_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/*162*/ { BARCODE_DOTCODE, "[01]12345678901231", GS1_MODE, READER_INIT, 0, 0 }, /* Reader Init permissible with default GS1 mode */
/*163*/ { BARCODE_DOTCODE, "[01]12345678901231", GS1_MODE | ESCAPE_MODE, READER_INIT, 0, 1 },
/*164*/ { BARCODE_DOTCODE, "[10]()", GS1_MODE, -1, 0, 0 },
/*165*/ { BARCODE_DOTCODE, "(10)()", GS1_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*166*/ { BARCODE_DOTCODE, "(10)()", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*167*/ { BARCODE_DOTCODE, "(10)\\(\\)", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, 0, 0 },
/*168*/ { BARCODE_DOTCODE, "1234", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*169*/ { BARCODE_DOTCODE, "1234", GS1_MODE | ESCAPE_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*170*/ { BARCODE_QRCODE, "[01]12345678901231", GS1_MODE, -1, 0, 0 },
/*171*/ { BARCODE_QRCODE, "^0112345678901231", GS1_MODE, -1, 0, 1 },
/*172*/ { BARCODE_QRCODE, "0112345678901231", GS1_MODE | GS1RAW_MODE, -1, 0, 1 },
/*173*/ { BARCODE_QRCODE, "[01]12345678901231", GS1_MODE | ESCAPE_MODE, -1, 0, 1 },
/*174*/ { BARCODE_QRCODE, "(01)12345678901231", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, 0, 1 },
/*175*/ { BARCODE_QRCODE, "(01)12345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 0 },
/*176*/ { BARCODE_QRCODE, "(01)12345678901234", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 1 },
/*177*/ { BARCODE_QRCODE, "(01)123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*178*/ { BARCODE_QRCODE, "(01)123456789012345", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/*179*/ { BARCODE_QRCODE, "(01)12345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*180*/ { BARCODE_QRCODE, "(01)12345678901234A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/*181*/ { BARCODE_QRCODE, "(01)1234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 0 },
/*182*/ { BARCODE_QRCODE, "^011234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_WARN_NONCOMPLIANT, 1 },
/*183*/ { BARCODE_QRCODE, "011234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1RAW_MODE, -1, ZINT_WARN_NONCOMPLIANT, 1 },
/*184*/ { BARCODE_QRCODE, "(01)1234567890123A", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, 0, 1 },
/*185*/ { BARCODE_QRCODE, "[01]1234567890123", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*186*/ { BARCODE_QRCODE, "[01]1234567890123", GS1_MODE | GS1NOCHECK_MODE, -1, 0, 0 },
/*187*/ { BARCODE_QRCODE, "[10]()", GS1_MODE, -1, 0, 0 },
/*188*/ { BARCODE_QRCODE, "(10)()", GS1_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*189*/ { BARCODE_QRCODE, "(10)()", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*190*/ { BARCODE_QRCODE, "(10)\\(\\)", GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, 0, 0 },
/*191*/ { BARCODE_QRCODE, "1234", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*192*/ { BARCODE_QRCODE, "1234", GS1_MODE | ESCAPE_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 },
/*193*/ { BARCODE_QRCODE, "https://example.com/01/12345678901231", GS1_MODE, -1, 0, 0 },
};
const int data_size = ARRAY_SIZE(data);
int i, length, ret;
struct zint_symbol *symbol = NULL;
struct zint_symbol *previous_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);
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);
if (p_ctx->index == -1 && data[i].compare_previous) {
ret = testUtilSymbolCmp(symbol, previous_symbol);
assert_zero(ret, "i:%d testUtilSymbolCmp ret %d != 0\n", i, ret);
}
assert_zero(symbol->text_length, "i:%d text_length non-zero %d\n", i, symbol->text_length);
assert_zero(symbol->text[0], "i:%d text non-zero %c(%d)\n", i, symbol->text[0], symbol->text[0]);
ZBarcode_Delete(previous_symbol);
previous_symbol = symbol;
}
ZBarcode_Delete(previous_symbol);
testFinish();
}
/*
* Check GS1NOCHECK_MODE for GS1_128-based and DBAR_EXP-based symbologies
*/
static void test_gs1nocheck_mode(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, GS1NOCHECK_MODE, "[01]12345678901231", "", 0, "" },
/* 2*/ { BARCODE_GS1_128, -1, "[01]12345678901234", "", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (01) data position 14: Bad checksum '4', expected '1'" },
/* 3*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[01]12345678901234", "", 0, "" },
/* 4*/ { BARCODE_GS1_128, -1, "^0112345678901234", "", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (01) data position 14: Bad checksum '4', expected '1'" },
/* 5*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "^0112345678901234", "", 0, "" },
/* 6*/ { BARCODE_GS1_128, GS1RAW_MODE, "0112345678901234", "", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (01) data position 14: Bad checksum '4', expected '1'" },
/* 7*/ { BARCODE_GS1_128, GS1NOCHECK_MODE | GS1RAW_MODE, "0112345678901234", "", 0, "" },
/* 8*/ { BARCODE_GS1_128, -1, "[01]123456789012345", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (01) at position 1" },
/* 9*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[01]123456789012345", "", 0, "" },
/* 10*/ { BARCODE_GS1_128, -1, "^01123456789012345", "", ZINT_ERROR_INVALID_DATA, "Error 859: Invalid data length for AI (01) at position 2" },
/* 11*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "^01123456789012345", "", ZINT_ERROR_INVALID_DATA, "Error 859: Invalid data length for AI (01) at position 2" }, /* Raw/caret need underlong data lengths to work - also new so no need for backward-compatibility */
/* 12*/ { BARCODE_GS1_128, GS1RAW_MODE, "01123456789012345", "", ZINT_ERROR_INVALID_DATA, "Error 859: Invalid data length for AI (01) at position 1" },
/* 13*/ { BARCODE_GS1_128, GS1NOCHECK_MODE | GS1RAW_MODE, "01123456789012345", "", ZINT_ERROR_INVALID_DATA, "Error 859: Invalid data length for AI (01) at position 1" },
/* 14*/ { BARCODE_GS1_128, -1, "[01]1234567890123", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (01) at position 1" },
/* 15*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[01]1234567890123", "", 0, "" },
/* 16*/ { BARCODE_GS1_128, -1, "^011234567890123", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (01) at position 2" },
/* 17*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "^011234567890123", "", 0, "" }, /* Raw/caret too short data lengths ok */
/* 18*/ { BARCODE_GS1_128, GS1RAW_MODE, "011234567890123", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (01) at position 1" },
/* 19*/ { BARCODE_GS1_128, GS1NOCHECK_MODE | GS1RAW_MODE, "011234567890123", "", 0, "" },
/* 20*/ { BARCODE_GS1_128, -1, "^011234567890123^", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (01) at position 2" },
/* 21*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "^011234567890123^", "", 0, "" },
/* 22*/ { BARCODE_GS1_128, GS1RAW_MODE, "011234567890123\035", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (01) at position 1" },
/* 23*/ { BARCODE_GS1_128, GS1NOCHECK_MODE | GS1RAW_MODE, "011234567890123\035", "", 0, "" },
/* 24*/ { BARCODE_GS1_128, -1, "[01]12345678901231[20]1", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (20) at position 19" },
/* 25*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[01]12345678901231[20]1", "", 0, "" },
/* 26*/ { BARCODE_GS1_128, -1, "^0112345678901231201", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (20) at position 18" },
/* 27*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "^0112345678901231201", "", 0, "" },
/* 28*/ { BARCODE_GS1_128, GS1RAW_MODE, "0112345678901231201", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (20) at position 17" },
/* 29*/ { BARCODE_GS1_128, GS1NOCHECK_MODE | GS1RAW_MODE, "0112345678901231201", "", 0, "" },
/* 30*/ { BARCODE_GS1_128, -1, "^0112345678901231201^", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (20) at position 18" },
/* 31*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "^0112345678901231201^", "", 0, "" },
/* 32*/ { BARCODE_GS1_128, GS1RAW_MODE, "0112345678901231201\035", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (20) at position 17" },
/* 33*/ { BARCODE_GS1_128, GS1NOCHECK_MODE | GS1RAW_MODE, "0112345678901231201\035", "", 0, "" },
/* 34*/ { BARCODE_GS1_128, -1, "^0112345678901231^201", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (20) at position 19" },
/* 35*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "^0112345678901231^201", "", 0, "" },
/* 36*/ { BARCODE_GS1_128, GS1RAW_MODE, "0112345678901231\035201", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (20) at position 18" },
/* 37*/ { BARCODE_GS1_128, GS1NOCHECK_MODE | GS1RAW_MODE, "0112345678901231\035201", "", 0, "" },
/* 38*/ { BARCODE_GS1_128, -1, "[03]123", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (03) at position 1" },
/* 39*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[03]123", "", 0, "" },
/* 40*/ { BARCODE_GS1_128, -1, "^03123", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (03) at position 2" },
/* 41*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "^03123", "", 0, "" },
/* 42*/ { BARCODE_GS1_128, GS1RAW_MODE, "03123", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (03) at position 1" },
/* 43*/ { BARCODE_GS1_128, GS1NOCHECK_MODE | GS1RAW_MODE, "03123", "", 0, "" },
/* 44*/ { BARCODE_GS1_128, -1, "[04]1234[05]12345[06]123456", "", ZINT_ERROR_INVALID_DATA, "Error 260: Invalid AI (04) at position 1" },
/* 45*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[04]1234[05]12345[06]123456", "", 0, "" },
/* 46*/ { BARCODE_GS1_128, -1, "^041234^0512345^06123456", "", ZINT_ERROR_INVALID_DATA, "Error 856: Invalid AI (04) at position 2" },
/* 47*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "^041234^0512345^06123456", "", ZINT_ERROR_INVALID_DATA, "Error 856: Invalid AI (04) at position 2" }, /* Raw/caret mode needs valid AIs to work */
/* 48*/ { BARCODE_GS1_128, GS1RAW_MODE, "041234\0350512345\03506123456", "", ZINT_ERROR_INVALID_DATA, "Error 856: Invalid AI (04) at position 1" },
/* 49*/ { BARCODE_GS1_128, GS1NOCHECK_MODE | GS1RAW_MODE, "041234\0350512345\03506123456", "", ZINT_ERROR_INVALID_DATA, "Error 856: Invalid AI (04) at position 1" },
/* 50*/ { BARCODE_GS1_128, -1, "[01]1234567890123A", "", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (01) data position 14: Non-numeric character 'A'" },
/* 51*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[01]1234567890123A", "", 0, "" },
/* 52*/ { BARCODE_GS1_128, -1, "^011234567890123A", "", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (01) data position 14: Non-numeric character 'A'" },
/* 53*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "^011234567890123A", "", 0, "" },
/* 54*/ { BARCODE_GS1_128, GS1RAW_MODE, "011234567890123A", "", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (01) data position 14: Non-numeric character 'A'" },
/* 55*/ { BARCODE_GS1_128, GS1NOCHECK_MODE | GS1RAW_MODE, "011234567890123A", "", 0, "" },
/* 56*/ { BARCODE_GS1_128, -1, "[01]1234567890123.", "", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (01) data position 14: Non-numeric character '.'" },
/* 57*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[01]1234567890123.", "", 0, "" },
/* 58*/ { BARCODE_GS1_128, -1, "[01]1234567890123\177", "", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1" },
/* 59*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[01]1234567890123\177", "", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1" }, /* Nonprintable ASCII still checked */
/* 60*/ { BARCODE_GS1_128, -1, "^011234567890123\177", "", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1" },
/* 61*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "^011234567890123\177", "", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1" },
/* 62*/ { BARCODE_GS1_128, GS1RAW_MODE, "011234567890123\177", "", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1" },
/* 63*/ { BARCODE_GS1_128, GS1NOCHECK_MODE | GS1RAW_MODE, "011234567890123\177", "", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1" },
/* 64*/ { BARCODE_GS1_128, -1, "[01]1234567890123\200", "", ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1" },
/* 65*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[01]1234567890123\200", "", ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1" }, /* Extended ASCII still checked */
/* 66*/ { BARCODE_GS1_128, -1, "0112345678901231", "", ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI" },
/* 67*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "0112345678901231", "", ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI" }, /* Format still checked */
/* 68*/ { BARCODE_GS1_128, -1, "[01]", "", ZINT_ERROR_INVALID_DATA, "Error 258: Empty data field for AI (01) at position 1" },
/* 69*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[01]", "", 0, "" }, /* Zero-length data not checked */
/* 70*/ { BARCODE_GS1_128, -1, "^01", "", ZINT_ERROR_INVALID_DATA, "Error 858: Empty data field for AI (01) at position 2" },
/* 71*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "^01", "", ZINT_ERROR_INVALID_DATA, "Error 858: Empty data field for AI (01) at position 2" }, /* Raw/caret mode needs valid data_lengths to work */
/* 72*/ { BARCODE_GS1_128, GS1RAW_MODE, "01", "", ZINT_ERROR_INVALID_DATA, "Error 858: Empty data field for AI (01) at position 1" },
/* 73*/ { BARCODE_GS1_128, GS1NOCHECK_MODE | GS1RAW_MODE, "01", "", ZINT_ERROR_INVALID_DATA, "Error 858: Empty data field for AI (01) at position 1" },
/* 74*/ { BARCODE_GS1_128, -1, "[01][20]12", "", ZINT_ERROR_INVALID_DATA, "Error 258: Empty data field for AI (01) at position 1" },
/* 75*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[01][20]12", "", 0, "" }, /* Zero-length data not checked */
/* 76*/ { BARCODE_GS1_128, -1, "[0]123", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short)" },
/* 77*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[0]123", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short)" }, /* Length 1 AI with no data still checked */
/* 78*/ { BARCODE_GS1_128, -1, "[0]", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short)" },
/* 79*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[0]", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short)" }, /* Length 1 AI with no data still checked */
/* 80*/ { BARCODE_GS1_128, -1, "^0", "", ZINT_ERROR_INVALID_DATA, "Error 857: Invalid AI at position 2" },
/* 81*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "^0", "", ZINT_ERROR_INVALID_DATA, "Error 857: Invalid AI at position 2" },
/* 82*/ { BARCODE_GS1_128, -1, "[]12", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short)" },
/* 83*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[]12", "", 0, "" }, /* Length 0 AI with data not checked */
/* 84*/ { BARCODE_GS1_128, -1, "[]12[01]", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short)" },
/* 85*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[]12[01]", "", 0, "" }, /* Length 0 AI with data not checked, non-short AI with zero-length data not checked */
/* 86*/ { BARCODE_GS1_128, -1, "[01][]12", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 5 in input (AI too short)" },
/* 87*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[01][]12", "", 0, "" }, /* Length 0 AI with data not checked, non-short AI with zero-length data not checked */
/* 88*/ { BARCODE_GS1_128, -1, "[1]1[]12", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 5 in input (AI too short)" },
/* 89*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[1]1[]12", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 5 in input (AI too short)" }, /* Length 1 AI with data still checked */
/* 90*/ { BARCODE_GS1_128, -1, "[]12[1]1", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short)" },
/* 91*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[]12[1]1", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short)" }, /* Length 1 AI with data still checked */
/* 92*/ { BARCODE_GS1_128, -1, "[]", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short)" },
/* 93*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[]", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short)" }, /* Length 0 AI with no data still checked */
/* 94*/ { BARCODE_GS1_128, -1, "^", "", ZINT_ERROR_INVALID_DATA, "Error 857: Invalid AI at position 1" },
/* 95*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "^", "", ZINT_ERROR_INVALID_DATA, "Error 857: Invalid AI at position 1" },
/* 96*/ { BARCODE_GS1_128, -1, "[01]12345678901231[]", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 19 in input (AI too short)" },
/* 97*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[01]12345678901231[]", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 19 in input (AI too short)" }, /* Length 0 AI with no data still checked */
/* 98*/ { BARCODE_GS1_128, -1, "[01]12345678901231[][20]12", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 19 in input (AI too short)" },
/* 99*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[01]12345678901231[][20]12", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 19 in input (AI too short)" }, /* Length 0 AI with no data still checked */
/*100*/ { BARCODE_GS1_128, -1, "[01]12345678901231[]1[20]12", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 19 in input (AI too short)" },
/*101*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[01]12345678901231[]1[20]12", "", 0, "" }, /* Length 0 AI with data not checked */
/*102*/ { BARCODE_GS1_128, -1, "[1234567890]123", "", ZINT_ERROR_INVALID_DATA, "Error 255: Invalid AI at position 1 in input (AI too long)" },
/*103*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[1234567890]123", "", ZINT_ERROR_INVALID_DATA, "Error 255: Invalid AI at position 1 in input (AI too long)" }, /* Too long still checked */
/*104*/ { BARCODE_GS1_128, -1, "[12345]123", "", ZINT_ERROR_INVALID_DATA, "Error 255: Invalid AI at position 1 in input (AI too long)" },
/*105*/ { BARCODE_GS1_128, GS1NOCHECK_MODE, "[12345]123", "", ZINT_ERROR_INVALID_DATA, "Error 255: Invalid AI at position 1 in input (AI too long)" }, /* Too long still checked */
/*106*/ { BARCODE_GS1_128, GS1PARENS_MODE, "(91)AB[", "", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (91) data position 3: Invalid CSET 82 character '['" },
/*107*/ { BARCODE_GS1_128, GS1PARENS_MODE | GS1NOCHECK_MODE, "(91)AB[", "", 0, "" },
/*108*/ { BARCODE_GS1_128_CC, -1, "[01]12345678901231", "[20]12", 0, "" },
/*109*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]12345678901231", "[20]12", 0, "" },
/*110*/ { BARCODE_GS1_128_CC, -1, "[01]12345678901234", "[20]12", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (01) data position 14: Bad checksum '4', expected '1' (linear component)" },
/*111*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]12345678901234", "[20]12", 0, "" },
/*112*/ { BARCODE_GS1_128_CC, -1, "[01]123456789012345", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (01) at position 1 (linear component)" },
/*113*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]123456789012345", "[20]12", 0, "" },
/*114*/ { BARCODE_GS1_128_CC, -1, "[01]12345678901231", "[20]123", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (20) at position 1 (2D component)" },
/*115*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]12345678901231", "[20]123", 0, "" },
/*116*/ { BARCODE_GS1_128_CC, -1, "[01]12345678901231", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) data position 2: Non-numeric character 'A' (2D component)" },
/*117*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]12345678901231", "[20]1A", 0, "" },
/*118*/ { BARCODE_GS1_128_CC, -1, "[01]1234567890121\177", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1 (linear component)" },
/*119*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]1234567890121\177", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1 (linear component)" }, /* Nonprintable ASCII still checked */
/*120*/ { BARCODE_GS1_128_CC, -1, "[01]1234567890121", "[20]1\177", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1 (2D component)" },
/*121*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[20]1\177", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1 (2D component)" }, /* Nonprintable ASCII still checked */
/*122*/ { BARCODE_GS1_128_CC, -1, "[01]1234567890121\200", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1 (linear component)" },
/*123*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]1234567890121\200", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1 (linear component)" },
/*124*/ { BARCODE_GS1_128_CC, -1, "[01]1234567890121", "[20]1\200", ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1 (2D component)" },
/*125*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[20]1\200", ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1 (2D component)" }, /* Extended ASCII still checked */
/*126*/ { BARCODE_GS1_128_CC, -1, "[01]1234567890121", "2012", ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI (2D component)" },
/*127*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]1234567890121", "2012", ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI (2D component)" }, /* Format still checked */
/*128*/ { BARCODE_GS1_128_CC, -1, "[01]1234567890121", "[20]", ZINT_ERROR_INVALID_DATA, "Error 258: Empty data field for AI (20) at position 1 (2D component)" },
/*129*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[20]", 0, "" }, /* Zero-length data not checked */
/*130*/ { BARCODE_GS1_128_CC, -1, "^011234567890121", "^20", ZINT_ERROR_INVALID_DATA, "Error 858: Empty data field for AI (20) at position 2 (2D component)" },
/*131*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "^011234567890121", "^20", ZINT_ERROR_INVALID_DATA, "Error 858: Empty data field for AI (20) at position 2 (2D component)" },
/*132*/ { BARCODE_GS1_128_CC, GS1RAW_MODE, "011234567890121", "20", ZINT_ERROR_INVALID_DATA, "Error 858: Empty data field for AI (20) at position 1 (2D component)" },
/*133*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE | GS1RAW_MODE, "011234567890121", "20", ZINT_ERROR_INVALID_DATA, "Error 858: Empty data field for AI (20) at position 1 (2D component)" },
/*134*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "^011234567890121", "^20", ZINT_ERROR_INVALID_DATA, "Error 858: Empty data field for AI (20) at position 2 (2D component)" },
/*135*/ { BARCODE_GS1_128_CC, -1, "[01]1234567890121", "[2]12", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short) (2D component)" },
/*136*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[2]12", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short) (2D component)" }, /* Length 1 AI still checked */
/*137*/ { BARCODE_GS1_128_CC, -1, "[01]1234567890121", "[]12", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short) (2D component)" },
/*138*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[]12", 0, "" }, /* Length 0 AI with data not checked */
/*139*/ { BARCODE_GS1_128_CC, -1, "[01]1234567890121", "[1]2[]1", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 5 in input (AI too short) (2D component)" },
/*140*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[1]2[]1", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 5 in input (AI too short) (2D component)" }, /* Length 1 AI still checked */
/*141*/ { BARCODE_GS1_128_CC, -1, "[01]1234567890121", "[]", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short) (2D component)" },
/*142*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[]", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short) (2D component)" }, /* Length 0 AI with no data still checked */
/*143*/ { BARCODE_GS1_128_CC, -1, "[01]1234567890121", "[][20]12", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short) (2D component)" },
/*144*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[][20]12", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short) (2D component)" }, /* Length 0 AI with no data still checked */
/*145*/ { BARCODE_GS1_128_CC, -1, "[01]1234567890121", "[20]12[]", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 7 in input (AI too short) (2D component)" },
/*146*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[20]12[]", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 7 in input (AI too short) (2D component)" }, /* Length 0 AI with no data still checked */
/*147*/ { BARCODE_GS1_128_CC, -1, "[01]12345678901231", "[90]12]34", ZINT_ERROR_INVALID_DATA, "Error 441: Invalid character in input (2D component)" },
/*148*/ { BARCODE_GS1_128_CC, GS1NOCHECK_MODE, "[01]12345678901231", "[90]12]34", ZINT_ERROR_INVALID_DATA, "Error 441: Invalid character in input (2D component)" }, /* Non-CSET 82 always checked for composite data */
/*149*/ { BARCODE_DBAR_EXP, -1, "[01]12345678901231", "", 0, "" },
/*150*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, "[01]12345678901231", "", 0, "" },
/*151*/ { BARCODE_DBAR_EXP, -1, "[01]12345678901231[10]123[11]1234", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (11) at position 26" },
/*152*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, "[01]12345678901231[10]123[11]1234", "", 0, "" },
/*153*/ { BARCODE_DBAR_EXP, -1, "^011234567890123110123^111234", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (11) at position 24" },
/*154*/ { BARCODE_DBAR_EXP, GS1RAW_MODE, "011234567890123110123\035111234", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (11) at position 23" },
/*155*/ { BARCODE_DBAR_EXP, -1, "[01]12345678901231[10]123[11]1234A", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (11) at position 26" },
/*156*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, "[01]12345678901231[10]123[11]1234A", "", 0, "" },
/*157*/ { BARCODE_DBAR_EXP, -1, "[01]12345678901231[10]123[11]12345A", "", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (11) data position 6: Non-numeric character 'A'" },
/*158*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, "[01]12345678901231[10]123[11]12345A", "", 0, "" },
/*159*/ { BARCODE_DBAR_EXP, -1, "[01]1234567890121\177", "", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1" },
/*160*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, "[01]1234567890121\177", "", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1" }, /* Nonprintable ASCII still checked */
/*161*/ { BARCODE_DBAR_EXP, -1, "[01]1234567890121\200", "", ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1" },
/*162*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, "[01]1234567890121\200", "", ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1" }, /* Extended ASCII still checked */
/*163*/ { BARCODE_DBAR_EXP, -1, "011234567890121", "", ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI" },
/*164*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, "011234567890121", "", ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI" }, /* Format still checked */
/*165*/ { BARCODE_DBAR_EXP, -1, "[10]", "", ZINT_ERROR_INVALID_DATA, "Error 258: Empty data field for AI (10) at position 1" },
/*166*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, "[10]", "", 0, "" }, /* Zero-length data not checked */
/*167*/ { BARCODE_DBAR_EXP, -1, "[2]1", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short)" },
/*168*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, "[2]1", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short)" }, /* Length 1 AI still checked */
/*169*/ { BARCODE_DBAR_EXP, -1, "[]1", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short)" },
/*170*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, "[]1", "", 0, "" }, /* Length 0 AI with data not checked */
/*171*/ { BARCODE_DBAR_EXP, -1, "[]", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short)" },
/*172*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, "[]", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short)" }, /* Length 0 AI with no data still checked */
/*173*/ { BARCODE_DBAR_EXP, -1, "[20]12[]", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 7 in input (AI too short)" },
/*174*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, "[20]12[]", "", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 7 in input (AI too short)" }, /* Length 0 AI with no data still checked */
/*175*/ { BARCODE_DBAR_EXP, -1, "[90]12]34", "", ZINT_ERROR_INVALID_DATA, "Error 386: Invalid character in General Field data" },
/*176*/ { BARCODE_DBAR_EXP, GS1NOCHECK_MODE, "[90]12]34", "", ZINT_ERROR_INVALID_DATA, "Error 386: Invalid character in General Field data" }, /* Non-CSET 82 always checked for DBAR_EXP */
/*177*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345", 0, "" },
/*178*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, "[01]123456789012[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345", 0, "" },
/*179*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231[10]123[11]1234", "[21]ABC123[22]12345", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (11) at position 26 (linear component)" },
/*180*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, "[01]12345678901231[10]123[11]1234", "[21]ABC123[22]12345", 0, "" },
/*181*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231[10]123[11]123456", "[21]ABC123[22]12345", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (11) data position 3: Invalid month '34' (linear component)" },
/*182*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, "[01]12345678901231[10]123[11]123456", "[21]ABC123[22]12345", 0, "" },
/*183*/ { BARCODE_DBAR_EXP_CC, -1, "^011234567890123110123^11123456", "^21ABC123^2212345", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (11) data position 3: Invalid month '34' (linear component)" },
/*184*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, "^011234567890123110123^11123456", "^21ABC123^2212345", 0, "" },
/*185*/ { BARCODE_DBAR_EXP_CC, GS1RAW_MODE, "011234567890123110123\03511123456", "21ABC123\0352212345", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (11) data position 3: Invalid month '34' (linear component)" },
/*186*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE | GS1RAW_MODE, "011234567890123110123\03511123456", "21ABC123\0352212345", 0, "" },
/*187*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345[30]123456789", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (30) at position 20 (2D component)" },
/*188*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, "[01]123456789012[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345[30]123456789", 0, "" },
/*189*/ { BARCODE_DBAR_EXP_CC, -1, "[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345[30]1234567A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (30) data position 8: Non-numeric character 'A' (2D component)" },
/*190*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, "[01]123456789012[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345[30]1234567A", 0, "" },
/*191*/ { BARCODE_DBAR_EXP_CC, -1, "[01]1234567890121", "[20]1\177", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1 (2D component)" },
/*192*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[20]1\177", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1 (2D component)" }, /* Nonprintable ASCII still checked */
/*193*/ { BARCODE_DBAR_EXP_CC, -1, "[01]1234567890121", "[20]1\200", ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1 (2D component)" },
/*194*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[20]1\200", ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1 (2D component)" }, /* Extended ASCII still checked */
/*195*/ { BARCODE_DBAR_EXP_CC, -1, "[01]1234567890121", "2012", ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI (2D component)" },
/*196*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, "[01]1234567890121", "2012", ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI (2D component)" }, /* Format still checked */
/*197*/ { BARCODE_DBAR_EXP_CC, -1, "[01]1234567890121", "[10]", ZINT_ERROR_INVALID_DATA, "Error 258: Empty data field for AI (10) at position 1 (2D component)" },
/*198*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[10]", 0, "" }, /* Zero-length data not checked */
/*199*/ { BARCODE_DBAR_EXP_CC, -1, "[01]1234567890121", "[2]1", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short) (2D component)" },
/*200*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[2]1", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short) (2D component)" }, /* Length 1 AI still checked */
/*201*/ { BARCODE_DBAR_EXP_CC, -1, "[01]1234567890121", "[]12", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short) (2D component)" },
/*202*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[]12", 0, "" }, /* Length 0 AI with data not checked */
/*203*/ { BARCODE_DBAR_EXP_CC, -1, "[01]1234567890121", "[]", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short) (2D component)" },
/*204*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[]", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 1 in input (AI too short) (2D component)" }, /* Length 0 AI with no data still checked */
/*205*/ { BARCODE_DBAR_EXP_CC, -1, "[01]1234567890121", "[20]12[][10]123", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 7 in input (AI too short) (2D component)" },
/*206*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[20]12[][10]123", ZINT_ERROR_INVALID_DATA, "Error 256: Invalid AI at position 7 in input (AI too short) (2D component)" }, /* Length 0 AI with no data still checked */
/*207*/ { BARCODE_DBAR_EXP_CC, -1, "[01]1234567890121", "[90]12]34", ZINT_ERROR_INVALID_DATA, "Error 441: Invalid character in input (2D component)" },
/*208*/ { BARCODE_DBAR_EXP_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[90]12]34", ZINT_ERROR_INVALID_DATA, "Error 441: Invalid character in input (2D component)" }, /* Non-CSET 82 always checked for composite */
/*209*/ { BARCODE_DBAR_EXPSTK, -1, "[01]12345678901231", "", 0, "" },
/*210*/ { BARCODE_DBAR_EXPSTK, GS1NOCHECK_MODE, "[01]12345678901231", "", 0, "" },
/*211*/ { BARCODE_DBAR_EXPSTK, -1, "[01]12345678901231[10]123[11]1234", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (11) at position 26" },
/*212*/ { BARCODE_DBAR_EXPSTK, GS1NOCHECK_MODE, "[01]12345678901231[10]123[11]1234", "", 0, "" },
/*213*/ { BARCODE_DBAR_EXPSTK, -1, "[01]12345678901231[10]123[11]1234A", "", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (11) at position 26" },
/*214*/ { BARCODE_DBAR_EXPSTK, GS1NOCHECK_MODE, "[01]12345678901231[10]123[11]1234A", "", 0, "" },
/*215*/ { BARCODE_DBAR_EXPSTK, -1, "[01]12345678901231[10]123[11]12345A", "", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (11) data position 6: Non-numeric character 'A'" },
/*216*/ { BARCODE_DBAR_EXPSTK, GS1NOCHECK_MODE, "[01]12345678901231[10]123[11]12345A", "", 0, "" },
/*217*/ { BARCODE_DBAR_EXPSTK, -1, "[01]1234567890121\177", "", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1" },
/*218*/ { BARCODE_DBAR_EXPSTK, GS1NOCHECK_MODE, "[01]1234567890121\177", "", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1" }, /* Nonprintable ASCII still checked */
/*219*/ { BARCODE_DBAR_EXPSTK, -1, "[01]1234567890121\200", "", ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1" },
/*220*/ { BARCODE_DBAR_EXPSTK, GS1NOCHECK_MODE, "[01]1234567890121\200", "", ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1" }, /* Extended ASCII still checked */
/*221*/ { BARCODE_DBAR_EXPSTK, -1, "011234567890121", "", ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI" },
/*222*/ { BARCODE_DBAR_EXPSTK, GS1NOCHECK_MODE, "011234567890121", "", ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI" }, /* Format still checked */
/*223*/ { BARCODE_DBAR_EXPSTK, -1, "[01]", "", ZINT_ERROR_INVALID_DATA, "Error 258: Empty data field for AI (01) at position 1" },
/*224*/ { BARCODE_DBAR_EXPSTK, GS1NOCHECK_MODE, "[01]", "", 0, "" }, /* Zero-length data not checked */
/*225*/ { BARCODE_DBAR_EXPSTK, -1, "[90]12]34", "", ZINT_ERROR_INVALID_DATA, "Error 386: Invalid character in General Field data" },
/*226*/ { BARCODE_DBAR_EXPSTK, GS1NOCHECK_MODE, "[90]12]34", "", ZINT_ERROR_INVALID_DATA, "Error 386: Invalid character in General Field data" }, /* Non-CSET 82 always checked for DBAR_EXPSTK */
/*227*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345", 0, "" },
/*228*/ { BARCODE_DBAR_EXPSTK_CC, GS1NOCHECK_MODE, "[01]123456789012[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345", 0, "" },
/*229*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]12345678901231[10]123[11]1234", "[21]ABC123[22]12345", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (11) at position 26 (linear component)" },
/*230*/ { BARCODE_DBAR_EXPSTK_CC, GS1NOCHECK_MODE, "[01]12345678901231[10]123[11]1234", "[21]ABC123[22]12345", 0, "" },
/*231*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]12345678901231[10]123[11]123456", "[21]ABC123[22]12345", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (11) data position 3: Invalid month '34' (linear component)" },
/*232*/ { BARCODE_DBAR_EXPSTK_CC, GS1NOCHECK_MODE, "[01]12345678901231[10]123[11]123456", "[21]ABC123[22]12345", 0, "" },
/*233*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345[30]123456789", ZINT_ERROR_INVALID_DATA, "Error 259: Invalid data length for AI (30) at position 20 (2D component)" },
/*234*/ { BARCODE_DBAR_EXPSTK_CC, GS1NOCHECK_MODE, "[01]123456789012[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345[30]123456789", 0, "" },
/*235*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345[30]1234567A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (30) data position 8: Non-numeric character 'A' (2D component)" },
/*236*/ { BARCODE_DBAR_EXPSTK_CC, GS1NOCHECK_MODE, "[01]123456789012[01]12345678901231[10]123[11]121212", "[21]ABC123[22]12345[30]1234567A", 0, "" },
/*237*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]1234567890121", "[20]1\177", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1 (2D component)" },
/*238*/ { BARCODE_DBAR_EXPSTK_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[20]1\177", ZINT_ERROR_INVALID_DATA, "Error 263: DEL characters are not supported by GS1 (2D component)" }, /* Nonprintable ASCII still checked */
/*239*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]1234567890121", "[20]1\200", ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1 (2D component)" },
/*240*/ { BARCODE_DBAR_EXPSTK_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[20]1\200", ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1 (2D component)" }, /* Extended ASCII still checked */
/*241*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]1234567890121", "2012", ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI (2D component)" },
/*242*/ { BARCODE_DBAR_EXPSTK_CC, GS1NOCHECK_MODE, "[01]1234567890121", "2012", ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI (2D component)" }, /* Format still checked */
/*243*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]1234567890121", "[235]", ZINT_ERROR_INVALID_DATA, "Error 258: Empty data field for AI (235) at position 1 (2D component)" },
/*244*/ { BARCODE_DBAR_EXPSTK_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[235]", 0, "" }, /* Zero-length data not checked */
/*245*/ { BARCODE_DBAR_EXPSTK_CC, -1, "^011234567890121", "^235", ZINT_ERROR_INVALID_DATA, "Error 856: Invalid AI (23) at position 2 (2D component)" },
/*246*/ { BARCODE_DBAR_EXPSTK_CC, GS1RAW_MODE, "011234567890121", "235", ZINT_ERROR_INVALID_DATA, "Error 856: Invalid AI (23) at position 1 (2D component)" },
/*247*/ { BARCODE_DBAR_EXPSTK_CC, -1, "[01]1234567890121", "[90]12]34", ZINT_ERROR_INVALID_DATA, "Error 441: Invalid character in input (2D component)" },
/*248*/ { BARCODE_DBAR_EXPSTK_CC, GS1NOCHECK_MODE, "[01]1234567890121", "[90]12]34", ZINT_ERROR_INVALID_DATA, "Error 441: Invalid character in input (2D component)" }, /* Non-CSET 82 always checked for composite */
/*249*/ { BARCODE_DBAR_EXPSTK_CC, -1, "^011234567890121", "^", ZINT_ERROR_INVALID_DATA, "Error 857: Invalid AI at position 1 (2D component)" },
};
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);
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();
}
INTERNAL int zint_test_gs1_hrt_conv_parsed(struct zint_symbol *symbol, const unsigned char source[], const int length,
const int ai_count, const int *ai_vals, const int *ai_locs, const int *data_locs,
const int *data_lens, const int no_errtxt);
static void test_gs1_hrt_conv_parsed(const testCtx *const p_ctx) {
struct item {
const char *data;
int ai_count;
int ai_vals[4];
int ai_locs[4];
int data_locs[4];
int data_lens[4];
int ret;
const char *expected;
};
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
static const struct item data[] = {
/* 0*/ { "^0112345678901231", 1, { 1, 0, 0, 0 }, { 1, 0, 0, 0 }, { 3, 0, 0, 0 }, { 14, 0, 0, 0 }, 0, "(01)12345678901231" },
/* 1*/ { "^011234567890123190ABCD^21123456AB", 3, { 1, 90, 21, 0 }, { 1, 17, 24, 0 }, { 3, 19, 26, 0 }, { 14, 4, 8, 0 }, 0, "(01)12345678901231(90)ABCD(21)123456AB" },
/* 2*/ { "^91123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890^92123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890^93123456789012345678901234567890123456789012345678901234567890123", 3, { 91, 92, 93, 0 }, { 1, 94, 187, 0 }, { 3, 96, 189, 0 }, { 90, 90, 63, 0 }, 0, "(91)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(92)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(93)123456789012345678901234567890123456789012345678901234567890123" },
/* 3*/ { "^91123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890^92123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890^931234567890123456789012345678901234567890123456789012345678901234", 3, { 91, 92, 93, 0 }, { 1, 94, 187, 0 }, { 3, 96, 189, 0 }, { 90, 90, 64, 0 }, ZINT_WARN_HRT_TRUNCATED, "(91)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(92)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" },
/* 4*/ { "^91123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890^92123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890^93123456789012345678901234567890123456789012345678901234567890123^94123", 4, { 91, 92, 93, 94 }, { 1, 94, 187, 256 }, { 3, 96, 189, 258 }, { 90, 90, 63, 3 }, ZINT_WARN_HRT_TRUNCATED, "(91)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(92)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(93)123456789012345678901234567890123456789012345678901234567890123" },
};
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 = (int) strlen(data[i].data);
ret = zint_test_gs1_hrt_conv_parsed(symbol, ZCUCP(data[i].data), length, data[i].ai_count, data[i].ai_vals,
data[i].ai_locs, data[i].data_locs, data[i].data_lens, 0 /*no_errtxt*/);
assert_equal(ret, data[i].ret, "i:%d gs1_hrt_conv_parsed ret %d != %d (%s) (%s)\n",
i, ret, data[i].ret, symbol->errtxt, symbol->text);
assert_zero(strcmp(ZCCP(symbol->text), data[i].expected), "i:%d strcmp(%s, %s) != 0\n",
i, symbol->text, data[i].expected);
length = (int) strlen(ZCCP(symbol->text));
assert_equal(symbol->text_length, length, "i:%d text_length %d != %d (%s) (%s)\n",
i, symbol->text_length, length, symbol->errtxt, symbol->text);
ZBarcode_Delete(symbol);
}
testFinish();
}
INTERNAL int zint_test_gs1_hrt_cpy(struct zint_symbol *symbol, const unsigned char source[], const int length,
const int no_errtxt);
static void test_gs1_hrt_cpy(const testCtx *const p_ctx) {
struct item {
const char *data;
int ret;
const char *expected;
};
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
static const struct item data[] = {
/* 0*/ { "(01)12345678901231", 0, "(01)12345678901231" },
/* 1*/ { "(91)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(92)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(93)123456789012345678901234567890123456789012345678901234567890123", 0, "(91)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(92)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(93)123456789012345678901234567890123456789012345678901234567890123" },
/* 2*/ { "(91)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(92)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(93)123456789012345678901234567890123456789012345678901234567890123", 0, "(91)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(92)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(93)123456789012345678901234567890123456789012345678901234567890123" },
/* 3*/ { "(91)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(92)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(93)1234567890123456789012345678901234567890123456789012345678901234", ZINT_WARN_HRT_TRUNCATED, "(91)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(92)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" },
/* 4*/ { "(91)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(92)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(93)123456789012345678901234567890123456789012345678901234567890123(94)123456789", ZINT_WARN_HRT_TRUNCATED, "(91)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(92)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(93)123456789012345678901234567890123456789012345678901234567890123" },
};
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");
symbol->input_mode |= GS1PARENS_MODE;
length = (int) strlen(data[i].data);
ret = zint_test_gs1_hrt_cpy(symbol, ZCUCP(data[i].data), length, 0 /*no_errtxt*/);
assert_equal(ret, data[i].ret, "i:%d gs1_hrt_cpy ret %d != %d (%s) (%s)\n",
i, ret, data[i].ret, symbol->errtxt, symbol->text);
assert_zero(strcmp(ZCCP(symbol->text), data[i].expected), "i:%d strcmp(%s, %s) != 0\n",
i, symbol->text, data[i].expected);
length = (int) strlen(ZCCP(symbol->text));
assert_equal(symbol->text_length, length, "i:%d text_length %d != %d (%s) (%s)\n",
i, symbol->text_length, length, symbol->errtxt, symbol->text);
ZBarcode_Delete(symbol);
}
testFinish();
}
INTERNAL int zint_test_gs1_hrt_conv_brackets(struct zint_symbol *symbol, const unsigned char source[],
const int length, const int no_errtxt);
static void test_gs1_hrt_conv_brackets(const testCtx *const p_ctx) {
struct item {
const char *data;
int ret;
const char *expected;
};
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
static const struct item data[] = {
/* 0*/ { "[01]12345678901231", 0, "(01)12345678901231" },
/* 1*/ { "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123", 0, "(91)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(92)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(93)123456789012345678901234567890123456789012345678901234567890123" },
/* 2*/ { "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123", 0, "(91)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(92)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(93)123456789012345678901234567890123456789012345678901234567890123" },
/* 3*/ { "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]1234567890123456789012345678901234567890123456789012345678901234", ZINT_WARN_HRT_TRUNCATED, "(91)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(92)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" },
/* 4*/ { "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123[94]123456789", ZINT_WARN_HRT_TRUNCATED, "(91)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(92)123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890(93)123456789012345678901234567890123456789012345678901234567890123" },
};
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 = (int) strlen(data[i].data);
ret = zint_test_gs1_hrt_conv_brackets(symbol, ZCUCP(data[i].data), length, 0 /*no_errtxt*/);
assert_equal(ret, data[i].ret, "i:%d gs1_hrt_conv_brackets ret %d != %d (%s) (%s)\n",
i, ret, data[i].ret, symbol->errtxt, symbol->text);
assert_zero(strcmp(ZCCP(symbol->text), data[i].expected), "i:%d strcmp(%s, %s) != 0\n",
i, symbol->text, data[i].expected);
length = (int) strlen(ZCCP(symbol->text));
assert_equal(symbol->text_length, length, "i:%d text_length %d != %d (%s) (%s)\n",
i, symbol->text_length, length, symbol->errtxt, symbol->text);
ZBarcode_Delete(symbol);
}
testFinish();
}
INTERNAL int zint_test_gs1_lint_parse_raw_caret(const unsigned char source[], const int length,
const int ai_max, int *ai_vals, int *ai_locs, int *data_locs, int *data_lens, int *p_ai_count,
int *p_err_no, int *p_err_posn);
static void test_gs1_lint_parse_raw_caret(const testCtx *const p_ctx) {
struct item {
const char *data;
int ret;
int expected_ai_count;
int expected_ai_vals[4];
int expected_ai_locs[4];
int expected_data_locs[4];
int expected_data_lens[4];
int expected_err_no;
int expected_err_posn;
};
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
static const struct item data[] = {
/* 0*/ { "^", 0, 0, { -1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, 1, 1 },
/* 1*/ { "", 0, 0, { -1, 0, 0, 0 }, { -1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, 1, 0 },
/* 2*/ { "\035", 0, 0, { -1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, 1, 1 },
/* 3*/ { "^0", 0, 0, { -1, 0, 0, 0 }, { 1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, 1, 2 },
/* 4*/ { "0", 0, 0, { -1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, 1, 1 },
/* 5*/ { "\0350", 0, 0, { -1, 0, 0, 0 }, { 1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, 1, 2 },
/* 6*/ { "^01", 0, 0, { 1, 0, 0, 0 }, { 1, 0, 0, 0 }, { 3, 0, 0, 0 }, { 0, 0, 0, 0 }, 2, 2 },
/* 7*/ { "01", 0, 0, { 1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 2, 0, 0, 0 }, { 0, 0, 0, 0 }, 2, 1 },
/* 8*/ { "\03501", 0, 0, { 1, 0, 0, 0 }, { 1, 0, 0, 0 }, { 3, 0, 0, 0 }, { 0, 0, 0, 0 }, 2, 2 },
/* 9*/ { "^011", 1, 1, { 1, 0, 0, 0 }, { 1, 0, 0, 0 }, { 3, 0, 0, 0 }, { 1, 0, 0, 0 }, 0, 0 }, /* Too short ok */
/* 10*/ { "011", 1, 1, { 1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 2, 0, 0, 0 }, { 1, 0, 0, 0 }, 0, 0 },
/* 11*/ { "\035011", 1, 1, { 1, 0, 0, 0 }, { 1, 0, 0, 0 }, { 3, 0, 0, 0 }, { 1, 0, 0, 0 }, 0, 0 }, /* Initial GS ok */
/* 12*/ { "^011^", 1, 1, { 1, 0, 0, 0 }, { 1, 0, 0, 0 }, { 3, 0, 0, 0 }, { 1, 0, 0, 0 }, 0, 0 }, /* Too short ok */
/* 13*/ { "011\035", 1, 1, { 1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 2, 0, 0, 0 }, { 1, 0, 0, 0 }, 0, 0 },
/* 14*/ { "\035011\035", 1, 1, { 1, 0, 0, 0 }, { 1, 0, 0, 0 }, { 3, 0, 0, 0 }, { 1, 0, 0, 0 }, 0, 0 },
/* 15*/ { "^011234567890123", 1, 1, { 1, 0, 0, 0 }, { 1, 0, 0, 0 }, { 3, 0, 0, 0 }, { 13, 0, 0, 0 }, 0, 0 }, /* Too short ok */
/* 16*/ { "011234567890123", 1, 1, { 1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 2, 0, 0, 0 }, { 13, 0, 0, 0 }, 0, 0 },
/* 17*/ { "^011234567890123^", 1, 1, { 1, 0, 0, 0 }, { 1, 0, 0, 0 }, { 3, 0, 0, 0 }, { 13, 0, 0, 0 }, 0, 0 },
/* 18*/ { "011234567890123\035", 1, 1, { 1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 2, 0, 0, 0 }, { 13, 0, 0, 0 }, 0, 0 },
/* 19*/ { "^0112345678901231", 1, 1, { 1, 0, 0, 0 }, { 1, 0, 0, 0 }, { 3, 0, 0, 0 }, { 14, 0, 0, 0 }, 0, 0 },
/* 20*/ { "0112345678901231", 1, 1, { 1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 2, 0, 0, 0 }, { 14, 0, 0, 0 }, 0, 0 },
/* 21*/ { "^01123456789012312012", 1, 2, { 1, 20, 0, 0 }, { 1, 17, 0, 0 }, { 3, 19, 0, 0 }, { 14, 2, 0, 0 }, 0, 0 },
/* 22*/ { "01123456789012312012", 1, 2, { 1, 20, 0, 0 }, { 0, 16, 0, 0 }, { 2, 18, 0, 0 }, { 14, 2, 0, 0 }, 0, 0 },
/* 23*/ { "\03501123456789012312012", 1, 2, { 1, 20, 0, 0 }, { 1, 17, 0, 0 }, { 3, 19, 0, 0 }, { 14, 2, 0, 0 }, 0, 0 },
/* 24*/ { "^0112345678901231^2012", 1, 2, { 1, 20, 0, 0 }, { 1, 18, 0, 0 }, { 3, 20, 0, 0 }, { 14, 2, 0, 0 }, 0, 0 }, /* Separator after predefined allowed */
/* 25*/ { "0112345678901231\0352012", 1, 2, { 1, 20, 0, 0 }, { 0, 17, 0, 0 }, { 2, 19, 0, 0 }, { 14, 2, 0, 0 }, 0, 0 },
/* 26*/ { "^011234567890123^2012", 1, 2, { 1, 20, 0, 0 }, { 1, 17, 0, 0 }, { 3, 19, 0, 0 }, { 13, 2, 0, 0 }, 0, 0 },
/* 27*/ { "011234567890123\0352012", 1, 2, { 1, 20, 0, 0 }, { 0, 16, 0, 0 }, { 2, 18, 0, 0 }, { 13, 2, 0, 0 }, 0, 0 },
/* 28*/ { "^01123456789012312012^", 1, 2, { 1, 20, 0, 0 }, { 1, 17, 0, 0 }, { 3, 19, 0, 0 }, { 14, 2, 0, 0 }, 0, 0 }, /* Redundant terminating separator allowed for predefined */
/* 29*/ { "^011234567890123^2012^", 1, 2, { 1, 20, 0, 0 }, { 1, 17, 0, 0 }, { 3, 19, 0, 0 }, { 13, 2, 0, 0 }, 0, 0 },
/* 30*/ { "011234567890123\0352012\035", 1, 2, { 1, 20, 0, 0 }, { 0, 16, 0, 0 }, { 2, 18, 0, 0 }, { 13, 2, 0, 0 }, 0, 0 },
/* 31*/ { "01123456789012312012\035", 1, 2, { 1, 20, 0, 0 }, { 0, 16, 0, 0 }, { 2, 18, 0, 0 }, { 14, 2, 0, 0 }, 0, 0 },
/* 32*/ { "^01123456789012319012", 1, 2, { 1, 90, 0, 0 }, { 1, 17, 0, 0 }, { 3, 19, 0, 0 }, { 14, 2, 0, 0 }, 0, 0 },
/* 33*/ { "01123456789012319012", 1, 2, { 1, 90, 0, 0 }, { 0, 16, 0, 0 }, { 2, 18, 0, 0 }, { 14, 2, 0, 0 }, 0, 0 },
/* 34*/ { "^01123456789012319012^", 1, 2, { 1, 90, 0, 0 }, { 1, 17, 0, 0 }, { 3, 19, 0, 0 }, { 14, 2, 0, 0 }, 0, 0 }, /* Redundant terminating separator allowed for non-predefined */
/* 35*/ { "01123456789012319012\035", 1, 2, { 1, 90, 0, 0 }, { 0, 16, 0, 0 }, { 2, 18, 0, 0 }, { 14, 2, 0, 0 }, 0, 0 },
/* 36*/ { "^0112345678901231901^912", 1, 3, { 1, 90, 91, 0 }, { 1, 17, 21, 0 }, { 3, 19, 23, 0 }, { 14, 1, 1, 0 }, 0, 0 },
/* 37*/ { "0112345678901231901\035912", 1, 3, { 1, 90, 91, 0 }, { 0, 16, 20, 0 }, { 2, 18, 22, 0 }, { 14, 1, 1, 0 }, 0, 0 },
/* 38*/ { "^242123456^10ABC123", 1, 2, { 242, 10, 0, 0 }, { 1, 11, 0, 0 }, { 4, 13, 0, 0 }, { 6, 6, 0, 0 }, 0, 0 },
/* 39*/ { "242123456\03510ABC123", 1, 2, { 242, 10, 0, 0 }, { 0, 10, 0, 0 }, { 3, 12, 0, 0 }, { 6, 6, 0, 0 }, 0, 0 },
/* 40*/ { "^800112341234512398^0112345678901231", 1, 2, { 8001, 1, 0, 0 }, { 1, 20, 0, 0 }, { 5, 22, 0, 0 }, { 14, 14, 0, 0 }, 0, 0 },
/* 41*/ { "800112341234512398\0350112345678901231", 1, 2, { 8001, 1, 0, 0 }, { 0, 19, 0, 0 }, { 4, 21, 0, 0 }, { 14, 14, 0, 0 }, 0, 0 },
/* 42*/ { "^01123456789012319012012^2012912", 1, 4, { 1, 90, 20, 91 }, { 1, 17, 25, 29 }, { 3, 19, 27, 31 }, { 14, 5, 2, 1 }, 0, 0 },
/* 43*/ { "01123456789012319012012\0352012912", 1, 4, { 1, 90, 20, 91 }, { 0, 16, 24, 28 }, { 2, 18, 26, 30 }, { 14, 5, 2, 1 }, 0, 0 },
/* 44*/ { "^2551234567890128^39401234^4101234567890128", 1, 3, { 255, 3940, 410, 0 }, { 1, 18, 27, 0 }, { 4, 22, 30, 0 }, { 13, 4, 13, 0 }, 0, 0 },
/* 45*/ { "2551234567890128\03539401234\0354101234567890128", 1, 3, { 255, 3940, 410, 0 }, { 0, 17, 26, 0 }, { 3, 21, 29, 0 }, { 13, 4, 13, 0 }, 0, 0 },
/* 46*/ { "\0352551234567890128\03539401234\0354101234567890128", 1, 3, { 255, 3940, 410, 0 }, { 1, 18, 27, 0 }, { 4, 22, 30, 0 }, { 13, 4, 13, 0 }, 0, 0 },
/* 47*/ { "1012345678901234567890211", 0, 0, { 10, 0, 0, 0 }, { 0, 0, 0, 0 }, { 2, 0, 0, 0 }, { 20, 0, 0, 0 }, 2, 1 }, /* Ticket #352, props Simon Resch */
/* 48*/ { "^1012345678901234567890^211", 1, 2, { 10, 21, 0, 0 }, { 1, 24, 0, 0 }, { 3, 26, 0, 0 }, { 20, 1, 0, 0 }, 0, 0 },
/* 49*/ { "1012345678901234567890\035211", 1, 2, { 10, 21, 0, 0 }, { 0, 23, 0, 0 }, { 2, 25, 0, 0 }, { 20, 1, 0, 0 }, 0, 0 },
};
const int data_size = ARRAY_SIZE(data);
int i, length, ret;
testStart(p_ctx->func_name);
for (i = 0; i < data_size; i++) {
int ai_count = 0, err_no = 0, err_posn = 0;
int ai_vals[4] = {0};
int ai_locs[4] = {0};
int data_locs[4] = {0};
int data_lens[4] = {0};
if (testContinue(p_ctx, i)) continue;
length = (int) strlen(data[i].data);
ret = zint_test_gs1_lint_parse_raw_caret(ZCUCP(data[i].data), length, ARRAY_SIZE(ai_vals), ai_vals,
ai_locs, data_locs, data_lens, &ai_count, &err_no, &err_posn);
assert_equal(ret, data[i].ret, "i:%d gs1_lint_parse_raw_caret ret %d != %d (%s)\n",
i, ret, data[i].ret, data[i].data);
assert_equal(err_no, data[i].expected_err_no, "i:%d err_no %d != %d\n",
i, err_no, data[i].expected_err_no);
assert_equal(err_posn, data[i].expected_err_posn, "i:%d err_posn %d != %d\n",
i, err_posn, data[i].expected_err_posn);
assert_equal(ai_count, data[i].expected_ai_count, "i:%d ai_count %d != %d\n",
i, ai_count, data[i].expected_ai_count);
assert_zero(memcmp(ai_vals, data[i].expected_ai_vals, sizeof(int) * ARRAY_SIZE(ai_vals)),
"i:%d ai_vals %d,%d,%d,%d != %d,%d,%d,%d\n", i,
ai_vals[0], ai_vals[1], ai_vals[2], ai_vals[3],
data[i].expected_ai_vals[0], data[i].expected_ai_vals[1],
data[i].expected_ai_vals[2], data[i].expected_ai_vals[3]);
assert_zero(memcmp(ai_locs, data[i].expected_ai_locs, sizeof(int) * ARRAY_SIZE(ai_locs)),
"i:%d ai_locs %d,%d,%d,%d != %d,%d,%d,%d\n", i,
ai_locs[0], ai_locs[1], ai_locs[2], ai_locs[3],
data[i].expected_ai_locs[0], data[i].expected_ai_locs[1],
data[i].expected_ai_locs[2], data[i].expected_ai_locs[3]);
assert_zero(memcmp(data_locs, data[i].expected_data_locs, sizeof(int) * ARRAY_SIZE(data_locs)),
"i:%d data_locs %d,%d,%d,%d != %d,%d,%d,%d\n", i,
data_locs[0], data_locs[1], data_locs[2], data_locs[3],
data[i].expected_data_locs[0], data[i].expected_data_locs[1],
data[i].expected_data_locs[2], data[i].expected_data_locs[3]);
assert_zero(memcmp(data_lens, data[i].expected_data_lens, sizeof(int) * ARRAY_SIZE(data_lens)),
"i:%d data_lens %d,%d,%d,%d != %d,%d,%d,%d\n", i,
data_lens[0], data_lens[1], data_lens[2], data_lens[3],
data[i].expected_data_lens[0], data[i].expected_data_lens[1],
data[i].expected_data_lens[2], data[i].expected_data_lens[3]);
}
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_lint", test_gs1_lint },
{ "test_input_mode", test_input_mode },
{ "test_gs1nocheck_mode", test_gs1nocheck_mode },
{ "test_gs1_hrt_conv_parsed", test_gs1_hrt_conv_parsed },
{ "test_gs1_hrt_cpy", test_gs1_hrt_cpy },
{ "test_gs1_hrt_conv_brackets", test_gs1_hrt_conv_brackets },
{ "test_gs1_lint_parse_raw_caret", test_gs1_lint_parse_raw_caret },
};
testRun(argc, argv, funcs, ARRAY_SIZE(funcs));
testReport();
return 0;
}
/* vim: set ts=4 sw=4 et : */