From b015e38da092df72ad72e08e9286e8ad0266fd19 Mon Sep 17 00:00:00 2001 From: gitlost Date: Thu, 5 Aug 2021 16:34:45 +0100 Subject: [PATCH] composite: fix buffer overflow for large linear, small composite (500 -> 1000) composite: clear errtxt when bumping from CC-A -> CC-B -> CC-C composite: CC-C adjustment 53 -> 52 (same as BWIPP) with proper explanation composite: remove unneeded > 11805 length check CODEONE: remove unneeded extended ASCII check in C40 count GS1_128/CODE16K: remove unneeded initial GS1 mode '[' check PDF417: remove unneeded second option_2 > 30 check Document some "Not reached" lines (code coverage) Update bwipp_dump.ps GUI: window/tab height +5 so 2 full lines for composite edit box (Ubuntu) manual: dash -> hyphen, PDF417 "check digit" -> "error correction", DMRE ref tests: further test cases for CODEONE/CODE16K/common/composite/DATAMATRIX/ DOTCODE/gs1/MAXICODE/PDF417/postal/QRCODE --- backend/code.c | 2 +- backend/code1.c | 6 +- backend/code128.c | 26 +- backend/code16k.c | 3 - backend/composite.c | 61 +- backend/dotcode.c | 4 +- backend/medical.c | 4 +- backend/pdf417.c | 50 +- backend/postal.c | 2 + backend/qr.c | 4 +- backend/tests/test_code1.c | 268 +- backend/tests/test_code128.c | 22 +- backend/tests/test_code16k.c | 30 +- backend/tests/test_common.c | 63 +- backend/tests/test_composite.c | 696 +++-- backend/tests/test_dmatrix.c | 200 +- backend/tests/test_dotcode.c | 260 +- backend/tests/test_gs1.c | 2646 +++++++++-------- backend/tests/test_maxicode.c | 139 +- backend/tests/test_pdf417.c | 920 +++++- backend/tests/test_postal.c | 108 +- backend/tests/test_qr.c | 9 +- backend/tests/testcommon.c | 6 +- .../tests/tools/bwipp_dump-barcode.ps.diff | 56 +- backend/tests/tools/bwipp_dump.ps.tar.xz | Bin 122844 -> 123640 bytes docs/manual.txt | 35 +- frontend_qt/mainWindow.ui | 6 +- win32/README | 3 +- 28 files changed, 3610 insertions(+), 2019 deletions(-) diff --git a/backend/code.c b/backend/code.c index a39c0f7c..256f30fc 100644 --- a/backend/code.c +++ b/backend/code.c @@ -305,7 +305,7 @@ INTERNAL int c39(struct zint_symbol *symbol, unsigned char source[], int length) width = (C + 2) * (3 * N + 6) * X + (C + 1) * I = (C + 2) * 9 + C + 1) * X = (10 * C + 19) */ height = (float) ((10.0 * (symbol->option_2 == 1 ? length + 1 : length) + 19.0) * 0.15); /* Using 50 as default as none recommended */ - error_number = set_height(symbol, height , height > 50.0f ? height : 50.0f, 0.0f, 0 /*no_errtxt*/); + error_number = set_height(symbol, height, height > 50.0f ? height : 50.0f, 0.0f, 0 /*no_errtxt*/); } #else height = 50.0f; diff --git a/backend/code1.c b/backend/code1.c index 478ffdde..64460626 100644 --- a/backend/code1.c +++ b/backend/code1.c @@ -451,10 +451,6 @@ static int c40text_cnt(const int current_mode, const int gs1, unsigned char inpu return 2; } cnt = 1; - if (input & 0x80) { - cnt += 2; - input = input - 128; - } if ((current_mode == C1_C40 && c40_shift[input]) || (current_mode == C1_TEXT && text_shift[input])) { cnt += 1; } @@ -814,7 +810,7 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], unsigne if (cte_p >= 1) { int cws_remaining = codewords_remaining(symbol, tp); - /* Note doing strict interpretation of spec here (same as BWIPP), unlike in Data Matrix case */ + /* Note doing strict interpretation of spec here (same as BWIPP), as now also done in Data Matrix case */ if (cws_remaining == 1 && cte_p == 1 && isc40text(current_mode, source[sp - 1])) { /* 2.2.2.2 "...except when a single symbol character is left at the end before the first error correction character. This single character is encoded in the ASCII code set." */ diff --git a/backend/code128.c b/backend/code128.c index cfb53e2f..f9fc5703 100644 --- a/backend/code128.c +++ b/backend/code128.c @@ -753,9 +753,6 @@ INTERNAL int ean_128_cc(struct zint_symbol *symbol, unsigned char source[], int indexchaine = 0; mode = parunmodd(reduced[indexchaine]); - if (reduced[indexchaine] == '[') { - mode = ABORC; - } do { list[1][indexliste] = mode; @@ -776,15 +773,16 @@ INTERNAL int ean_128_cc(struct zint_symbol *symbol, unsigned char source[], int dxsmooth(list, &indexliste); /* Put set data into set[] */ + /* Note as control chars not permitted in GS1, no reason to ever be in Set A, but cases left in anyway */ read = 0; for (i = 0; i < indexliste; i++) { for (j = 0; j < list[0][i]; j++) { switch (list[1][i]) { - case SHIFTA: set[read] = 'a'; + case SHIFTA: set[read] = 'a'; /* Not reached */ break; - case LATCHA: set[read] = 'A'; + case LATCHA: set[read] = 'A'; /* Not reached */ break; - case SHIFTB: set[read] = 'b'; + case SHIFTB: set[read] = 'b'; /* Not reached */ break; case LATCHB: set[read] = 'B'; break; @@ -841,12 +839,12 @@ INTERNAL int ean_128_cc(struct zint_symbol *symbol, unsigned char source[], int } /* Now we can calculate how long the barcode is going to be - and stop it from - being too long */ + being too long */ last_set = set[0]; glyph_count = 0.0f; for (i = 0; i < reduced_length; i++) { if ((set[i] == 'a') || (set[i] == 'b')) { - glyph_count = glyph_count + 1.0f; + glyph_count = glyph_count + 1.0f; /* Not reached */ } if (((set[i] == 'A') || (set[i] == 'B')) || (set[i] == 'C')) { if (set[i] != last_set) { @@ -869,7 +867,7 @@ INTERNAL int ean_128_cc(struct zint_symbol *symbol, unsigned char source[], int /* So now we know what start character to use - we can get on with it! */ switch (set[0]) { case 'A': /* Start A */ - strcat(dest, C128Table[103]); + strcat(dest, C128Table[103]); /* Not reached */ values[0] = 103; break; case 'B': /* Start B */ @@ -893,7 +891,7 @@ INTERNAL int ean_128_cc(struct zint_symbol *symbol, unsigned char source[], int if ((read != 0) && (set[read] != set[read - 1])) { /* Latch different code set */ switch (set[read]) { - case 'A': strcat(dest, C128Table[101]); + case 'A': strcat(dest, C128Table[101]); /* Not reached */ values[bar_characters] = 101; bar_characters++; break; @@ -910,7 +908,7 @@ INTERNAL int ean_128_cc(struct zint_symbol *symbol, unsigned char source[], int if ((set[read] == 'a') || (set[read] == 'b')) { /* Insert shift character */ - strcat(dest, C128Table[98]); + strcat(dest, C128Table[98]); /* Not reached */ values[bar_characters] = 98; bar_characters++; } @@ -919,7 +917,7 @@ INTERNAL int ean_128_cc(struct zint_symbol *symbol, unsigned char source[], int switch (set[read]) { /* Encode data characters */ case 'A': case 'a': - c128_set_a(reduced[read], dest, values, &bar_characters); + c128_set_a(reduced[read], dest, values, &bar_characters); /* Not reached */ read++; break; case 'B': @@ -950,7 +948,7 @@ INTERNAL int ean_128_cc(struct zint_symbol *symbol, unsigned char source[], int case 2: /* CC-A or CC-B 2D component */ switch (set[reduced_length - 1]) { - case 'A': linkage_flag = 100; + case 'A': linkage_flag = 100; /* Not reached */ break; case 'B': linkage_flag = 99; break; @@ -961,7 +959,7 @@ INTERNAL int ean_128_cc(struct zint_symbol *symbol, unsigned char source[], int case 3: /* CC-C 2D component */ switch (set[reduced_length - 1]) { - case 'A': linkage_flag = 99; + case 'A': linkage_flag = 99; /* Not reached */ break; case 'B': linkage_flag = 101; break; diff --git a/backend/code16k.c b/backend/code16k.c index acc5597c..e62d2ce4 100644 --- a/backend/code16k.c +++ b/backend/code16k.c @@ -152,9 +152,6 @@ INTERNAL int code16k(struct zint_symbol *symbol, unsigned char source[], int len indexchaine = 0; mode = parunmodd(source[indexchaine]); - if ((gs1) && (source[indexchaine] == '[')) { - mode = ABORC; - } /* FNC1 */ do { list[1][indexliste] = mode; diff --git a/backend/composite.c b/backend/composite.c index 4b0f0adb..5d37781f 100644 --- a/backend/composite.c +++ b/backend/composite.c @@ -294,7 +294,7 @@ static void cc_a(struct zint_symbol *symbol, const char source[], const int cc_w symbol->width = bp; if (symbol->debug & ZINT_DEBUG_PRINT) { - printf("CC-A Columns: %d, Rows: %d\n", cc_width, symbol->rows); + printf("CC-A Columns: %d, Rows: %d, Variant: %d, CodeWords: %d\n", cc_width, symbol->rows, variant, cwCnt); } } @@ -413,9 +413,9 @@ static void cc_b(struct zint_symbol *symbol, const char source[], const int cc_w i = longueur - mclength; /* amount of padding required */ offset = MicroVariants[variant + 102]; /* coefficient offset */ - /* We add the padding */ + /* Binary input padded to target length so no padding should be necessary */ while (i > 0) { - chainemc[mclength] = 900; + chainemc[mclength] = 900; /* Not reached */ mclength++; i--; } @@ -517,7 +517,8 @@ static void cc_b(struct zint_symbol *symbol, const char source[], const int cc_w symbol->width = bp; if (symbol->debug & ZINT_DEBUG_PRINT) { - printf("CC-B Columns: %d, Rows: %d\n", cc_width, symbol->rows); + printf("CC-B Columns: %d, Rows: %d, Variant: %d, CodeWords: %d\n", + cc_width, symbol->rows, variant + 1, mclength); } } @@ -558,6 +559,12 @@ static void cc_c(struct zint_symbol *symbol, const char source[], const int cc_w chainemc[0] = mclength; + if (symbol->debug & ZINT_DEBUG_PRINT) { + printf("CC-C Codewords (%d):", mclength); + for (i = 0; i < mclength; i++) printf(" %d", chainemc[i]); + printf("\n"); + } + k = 1; for (i = 1; i <= (ecc_level + 1); i++) { k *= 2; @@ -565,23 +572,23 @@ static void cc_c(struct zint_symbol *symbol, const char source[], const int cc_w /* 796 - we now take care of the Reed Solomon codes */ switch (ecc_level) { - case 1: offset = 2; + case 1: offset = 2; /* Not reached */ break; - case 2: offset = 6; + case 2: offset = 6; /* Min ECC currently used is 2 */ break; case 3: offset = 14; break; case 4: offset = 30; break; - case 5: offset = 62; + case 5: offset = 62; /* Max ECC currently used is 5 */ break; - case 6: offset = 126; + case 6: offset = 126; /* Not reached */ break; - case 7: offset = 254; + case 7: offset = 254; /* Not reached */ break; - case 8: offset = 510; + case 8: offset = 510; /* Not reached */ break; - default: offset = 0; + default: offset = 0; /* Not reached */ break; } @@ -656,7 +663,8 @@ static void cc_c(struct zint_symbol *symbol, const char source[], const int cc_w symbol->width = bp; if (symbol->debug & ZINT_DEBUG_PRINT) { - printf("CC-C Columns: %d, Rows: %d\n", cc_width, symbol->rows); + printf("CC-C Columns: %d, Rows: %d, CodeWords: %d, ECC Level: %d\n", + cc_width, symbol->rows, mclength, ecc_level); } } @@ -786,7 +794,7 @@ static int calc_padding_ccb(const int binary_length, const int cc_width) { return target_bitsize; } -static int calc_padding_ccc(const int binary_length, int *cc_width, const int lin_width, int *ecc) { +static int calc_padding_ccc(const int binary_length, int *cc_width, const int linear_width, int *ecc) { int target_bitsize = 0; int byte_length, codewords_used, ecc_level, ecc_codewords, rows; int codewords_total, target_codewords, target_bytesize; @@ -820,7 +828,8 @@ static int calc_padding_ccc(const int binary_length, int *cc_width, const int li codewords_used += ecc_codewords; codewords_used += 3; - *(cc_width) = (lin_width - 53) / 17; // -53 = (6 left quiet zone + 10 right quiet zone - (17 * 3 + 18)) + /* -52 = 7 left shift (section 12.3 f) + 10 right quiet zone - 17 start + 2x17 row indicators + 18 stop */ + *(cc_width) = (linear_width - 52) / 17; if (*(cc_width) > 30) { *(cc_width) = 30; } @@ -831,8 +840,8 @@ static int calc_padding_ccc(const int binary_length, int *cc_width, const int li rows = (int) ceil((double) codewords_used / *(cc_width)); } - if (rows > 30) { - return 0; + if (rows > 30) { /* Should never happen given `codewords_used` check above (865 / 30 ~ 28.83) */ + return 0; /* Not reached */ } if (rows < 3) { rows = 3; @@ -853,7 +862,7 @@ static int calc_padding_ccc(const int binary_length, int *cc_width, const int li /* Handles all data encodation from section 5 of ISO/IEC 24723 */ static int cc_binary_string(struct zint_symbol *symbol, const unsigned char source[], const int source_len, - char binary_string[], const int cc_mode, int *cc_width, int *ecc, const int lin_width) { + char binary_string[], const int cc_mode, int *cc_width, int *ecc, const int linear_width) { int encoding_method, read_posn, alpha_pad; int i, j, ai_crop, ai_crop_posn, fnc1_latch; int ai90_mode, remainder; @@ -1169,7 +1178,7 @@ static int cc_binary_string(struct zint_symbol *symbol, const unsigned char sour target_bitsize = calc_padding_ccb(bp, *(cc_width)); break; case 3: - target_bitsize = calc_padding_ccc(bp, cc_width, lin_width, ecc); + target_bitsize = calc_padding_ccc(bp, cc_width, linear_width, ecc); break; } @@ -1198,11 +1207,6 @@ static int cc_binary_string(struct zint_symbol *symbol, const unsigned char sour } } - if (bp > 11805) { /* (2361 * 5) */ - strcpy(symbol->errtxt, "443: Input too long"); - return ZINT_ERROR_TOO_LONG; - } - switch (cc_mode) { case 1: target_bitsize = calc_padding_cca(bp, *(cc_width)); @@ -1211,7 +1215,7 @@ static int cc_binary_string(struct zint_symbol *symbol, const unsigned char sour target_bitsize = calc_padding_ccb(bp, *(cc_width)); break; case 3: - target_bitsize = calc_padding_ccc(bp, cc_width, lin_width, ecc); + target_bitsize = calc_padding_ccc(bp, cc_width, linear_width, ecc); break; } @@ -1271,7 +1275,8 @@ static const char in_linear_comp[] = " in linear component"; INTERNAL int composite(struct zint_symbol *symbol, unsigned char source[], int length) { int error_number, warn_number = 0, cc_mode, cc_width = 0, ecc_level = 0; int j, i, k; - unsigned int bs = 13 * length + 500 + 1; /* Allow for 8 bits + 5-bit latch per char + 500 bits overhead/padding */ + /* Allow for 8 bits + 5-bit latch per char + 1000 bits overhead/padding */ + unsigned int bs = 13 * length + 1000 + 1; #ifndef _MSC_VER char binary_string[bs]; #else @@ -1282,6 +1287,8 @@ INTERNAL int composite(struct zint_symbol *symbol, unsigned char source[], int l int top_shift, bottom_shift; int linear_width = 0; + if (symbol->debug & ZINT_DEBUG_PRINT) printf("Reduced length: %d\n", length); + /* Perform sanity checks on input options first */ error_number = 0; pri_len = (int) strlen(symbol->primary); @@ -1383,6 +1390,7 @@ INTERNAL int composite(struct zint_symbol *symbol, unsigned char source[], int l if (cc_mode == 1) { i = cc_binary_string(symbol, source, length, binary_string, cc_mode, &cc_width, &ecc_level, linear_width); if (i == ZINT_ERROR_TOO_LONG) { + symbol->errtxt[0] = '\0'; /* Unset error text */ cc_mode = 2; } else if (i != 0) { return i; @@ -1396,6 +1404,7 @@ INTERNAL int composite(struct zint_symbol *symbol, unsigned char source[], int l if (symbol->symbology != BARCODE_GS1_128_CC) { return ZINT_ERROR_TOO_LONG; } + symbol->errtxt[0] = '\0'; /* Unset error text */ cc_mode = 3; } else if (i != 0) { return i; @@ -1506,7 +1515,7 @@ INTERNAL int composite(struct zint_symbol *symbol, unsigned char source[], int l } break; case BARCODE_GS1_128_CC: if (cc_mode == 3) { - bottom_shift = 7; + bottom_shift = 7; /* ISO/IEC 24723:2010 12.3 f) */ } else { /* ISO/IEC 24723:2010 12.3 g) "GS1-128 components linked to the right quiet zone of the CC-A or CC-B: the CC-A or CC-B component is aligned with the last space module of one of the rightmost symbol diff --git a/backend/dotcode.c b/backend/dotcode.c index bf7e1370..f77a20f4 100644 --- a/backend/dotcode.c +++ b/backend/dotcode.c @@ -1434,8 +1434,8 @@ INTERNAL int dotcode(struct zint_symbol *symbol, unsigned char source[], int len } if ((height < 5) || (width < 5)) { - if (height < 5 && width < 5) { - sprintf(symbol->errtxt, "527: Symbol size %dx%d (WxH) is too small", width, height); + if (height < 5 && width < 5) { /* Won't happen as if width < 5, min height is 19 */ + sprintf(symbol->errtxt, "527: Symbol size %dx%d (WxH) is too small", width, height); /* Not reached */ } else { sprintf(symbol->errtxt, "529: Symbol %s %d is too small", width < 5 ? "width" : "height", width < 5 ? width : height); diff --git a/backend/medical.c b/backend/medical.c index ac4a1b47..a69f5870 100644 --- a/backend/medical.c +++ b/backend/medical.c @@ -362,8 +362,8 @@ INTERNAL int code32(struct zint_symbol *symbol, unsigned char source[], int leng risultante[6] = '\0'; /* Plot the barcode using Code 39 */ error_number = c39(symbol, (unsigned char*) risultante, (int) strlen(risultante)); - if (error_number != 0) { - return error_number; + if (error_number != 0) { /* Should never happen */ + return error_number; /* Not reached */ } #ifdef COMPLIANT_HEIGHTS diff --git a/backend/pdf417.c b/backend/pdf417.c index 90e1aec2..2cae1fc4 100644 --- a/backend/pdf417.c +++ b/backend/pdf417.c @@ -552,7 +552,7 @@ static int pdf417(struct zint_symbol *symbol, unsigned char chaine[], const int break; case NUM: printf("Number\n"); break; - default: printf("ERROR\n"); + default: printf("ERROR\n"); /* Should never happen */ /* Not reached */ break; } } @@ -610,7 +610,7 @@ static int pdf417(struct zint_symbol *symbol, unsigned char chaine[], const int assert(mclength > 0); /* Suppress clang-analyzer-core.uninitialized.Assign warning */ if (debug) { - printf("\nCompressed data stream:\n"); + printf("\nCompressed data stream (%d):\n", mclength); for (i = 0; i < mclength; i++) { printf("%d ", chainemc[i]); } @@ -642,9 +642,7 @@ static int pdf417(struct zint_symbol *symbol, unsigned char chaine[], const int return ZINT_ERROR_TOO_LONG; } - if (symbol->option_2 > 30) { - symbol->option_2 = 30; - } else if (symbol->option_2 < 1) { + if (symbol->option_2 < 1) { symbol->option_2 = (int) (0.5 + sqrt((longueur + k) / 3.0)); } if (((longueur + k) / symbol->option_2) > 90) { @@ -717,7 +715,7 @@ static int pdf417(struct zint_symbol *symbol, unsigned char chaine[], const int } if (debug) { - printf("Complete CW string:\n"); + printf("Complete CW string (%d):\n", mclength); for (i = 0; i < mclength; i++) { printf("%d ", chainemc[i]); } @@ -732,6 +730,8 @@ static int pdf417(struct zint_symbol *symbol, unsigned char chaine[], const int symbol->rows = mclength / symbol->option_2; assert(symbol->rows > 0); /* Suppress clang-analyzer-core.DivideZero warning */ + if (debug) printf("\nSymbol size:\n%d columns x %d rows\n", symbol->option_2, symbol->rows); + /* 818 - The CW string is finished */ c1 = (symbol->rows - 1) / 3; c2 = symbol->option_1 * 3 + (symbol->rows - 1) % 3; @@ -801,19 +801,17 @@ INTERNAL int pdf417enc(struct zint_symbol *symbol, unsigned char source[], int l strcpy(symbol->errtxt, "460: Security value out of range"); if (symbol->warn_level == WARN_FAIL_ALL) { return ZINT_ERROR_INVALID_OPTION; - } else { - symbol->option_1 = -1; - error_number = ZINT_WARN_INVALID_OPTION; } + symbol->option_1 = -1; + error_number = ZINT_WARN_INVALID_OPTION; } if ((symbol->option_2 < 0) || (symbol->option_2 > 30)) { strcpy(symbol->errtxt, "461: Number of columns out of range"); if (symbol->warn_level == WARN_FAIL_ALL) { return ZINT_ERROR_INVALID_OPTION; - } else { - symbol->option_2 = 0; - error_number = ZINT_WARN_INVALID_OPTION; } + symbol->option_2 = 0; + error_number = ZINT_WARN_INVALID_OPTION; } /* 349 */ @@ -877,7 +875,7 @@ INTERNAL int micro_pdf417(struct zint_symbol *symbol, unsigned char chaine[], in break; case NUM: printf("NUMBER\n"); break; - default: printf("*ERROR*\n"); + default: printf("*ERROR*\n"); /* Should never happen */ /* Not reached */ break; } } @@ -944,14 +942,13 @@ INTERNAL int micro_pdf417(struct zint_symbol *symbol, unsigned char chaine[], in strcpy(symbol->errtxt, "468: Specified width out of range"); if (symbol->warn_level == WARN_FAIL_ALL) { return ZINT_ERROR_INVALID_OPTION; - } else { - symbol->option_2 = 0; - error_number = ZINT_WARN_INVALID_OPTION; } + symbol->option_2 = 0; + error_number = ZINT_WARN_INVALID_OPTION; } if (debug) { - printf("\nEncoded Data Stream:\n"); + printf("\nEncoded Data Stream (%d):\n", mclength); for (i = 0; i < mclength; i++) { printf("%3d ", chainemc[i]); } @@ -967,10 +964,9 @@ INTERNAL int micro_pdf417(struct zint_symbol *symbol, unsigned char chaine[], in strcpy(symbol->errtxt, "469: Specified symbol size too small for data"); if (symbol->warn_level == WARN_FAIL_ALL) { return ZINT_ERROR_INVALID_OPTION; - } else { - symbol->option_2 = 0; - error_number = ZINT_WARN_INVALID_OPTION; } + symbol->option_2 = 0; + error_number = ZINT_WARN_INVALID_OPTION; } if ((symbol->option_2 == 2) && (mclength > 37)) { @@ -978,10 +974,9 @@ INTERNAL int micro_pdf417(struct zint_symbol *symbol, unsigned char chaine[], in strcpy(symbol->errtxt, "470: Specified symbol size too small for data"); if (symbol->warn_level == WARN_FAIL_ALL) { return ZINT_ERROR_INVALID_OPTION; - } else { - symbol->option_2 = 0; - error_number = ZINT_WARN_INVALID_OPTION; } + symbol->option_2 = 0; + error_number = ZINT_WARN_INVALID_OPTION; } if ((symbol->option_2 == 3) && (mclength > 82)) { @@ -989,10 +984,9 @@ INTERNAL int micro_pdf417(struct zint_symbol *symbol, unsigned char chaine[], in strcpy(symbol->errtxt, "471: Specified symbol size too small for data"); if (symbol->warn_level == WARN_FAIL_ALL) { return ZINT_ERROR_INVALID_OPTION; - } else { - symbol->option_2 = 0; - error_number = ZINT_WARN_INVALID_OPTION; } + symbol->option_2 = 0; + error_number = ZINT_WARN_INVALID_OPTION; } if (symbol->option_2 == 1) { @@ -1098,7 +1092,7 @@ INTERNAL int micro_pdf417(struct zint_symbol *symbol, unsigned char chaine[], in if (debug) { printf("\nChoose symbol size:\n"); - printf("%d columns x %d rows\n", symbol->option_2, symbol->rows); + printf("%d columns x %d rows, variant %d\n", symbol->option_2, symbol->rows, variant + 1); printf("%d data codewords (including %d pads), %d ecc codewords\n", longueur, i, k); printf("\n"); } @@ -1135,7 +1129,7 @@ INTERNAL int micro_pdf417(struct zint_symbol *symbol, unsigned char chaine[], in } if (debug) { - printf("Encoded Data Stream with ECC:\n"); + printf("Encoded Data Stream with ECC (%d):\n", mclength); for (i = 0; i < mclength; i++) { printf("%3d ", chainemc[i]); } diff --git a/backend/postal.c b/backend/postal.c index 6ed2c370..351b040d 100644 --- a/backend/postal.c +++ b/backend/postal.c @@ -701,6 +701,8 @@ INTERNAL int japan_post(struct zint_symbol *symbol, unsigned char source[], int } strcat(pattern, JapanTable[posn(KASUTSET, check_char)]); + if (symbol->debug & ZINT_DEBUG_PRINT) printf("Check: %d, char: %c\n", check, check_char); + strcat(pattern, "31"); /* Stop */ /* Resolve pattern to 4-state symbols */ diff --git a/backend/qr.c b/backend/qr.c index fe798e14..11371984 100644 --- a/backend/qr.c +++ b/backend/qr.c @@ -2700,8 +2700,8 @@ INTERNAL int upnqr(struct zint_symbol *symbol, unsigned char source[], int lengt mode[i] = 'B'; } break; - case GS1_MODE: - strcpy(symbol->errtxt, "571: UPNQR does not support GS-1 encoding"); + case GS1_MODE: /* Should never happen as checked before being called */ + strcpy(symbol->errtxt, "571: UPNQR does not support GS-1 encoding"); /* Not reached */ return ZINT_ERROR_INVALID_OPTION; break; case UNICODE_MODE: diff --git a/backend/tests/test_code1.c b/backend/tests/test_code1.c index f433b86b..18417c1d 100644 --- a/backend/tests/test_code1.c +++ b/backend/tests/test_code1.c @@ -1706,7 +1706,97 @@ static void test_encode(int index, int generate, int debug) { "1011110100111010100000" "0001111010001000110010" }, - /* 57*/ { -1, -1, -1, "123456789012345", -1, 0, 16, 18, 1, "5 DECIMAL triplets, ASCII switch before padding (2)", + /* 57*/ { -1, -1, -1, "\015*>\015*>\015*>ABC", -1, 0, 16, 18, 1, "3 EDI triplets + 3 alphas (EDI)", + "111011000000100000" + "111010000010110000" + "001010000000100101" + "101110000010111001" + "111010111100100000" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "100111111111100110" + "111001010000100011" + "011001101110101101" + "010011011100100111" + "000001001101111001" + }, + /* 58*/ { -1, -1, -1, "\015*>\015*>\015*>1234567", -1, 0, 22, 22, 1, "3 EDI triplets + 7 digits ending (EDI)", + "1110110000001000000010" + "1110100000101100001011" + "0000100010001000110011" + "0000101011000010000011" + "0111101111001110001000" + "0011101111100000010001" + "1000101000100010000000" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001100101" + "1011111111111010100100" + "1000111100110000100110" + "0010100010010111101000" + "0101100111000110101001" + "0110011101010010101010" + "0101111011000100110001" + }, + /* 59*/ { -1, -1, -1, "\015*>\015*>\015*>12345678", -1, 0, 22, 22, 1, "3 EDI triplets + 8 digits ending -> DECIMAL", + "1110110000001000000010" + "1110100000101100001011" + "0000100010111110001010" + "0000101011111111100100" + "1011101101100010001000" + "1010100000000100010001" + "1000101000100010001110" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001101101" + "1101011110111101100011" + "1100101101000111100010" + "1000010100101111100101" + "0110001001101100100110" + "1101100100110011101111" + "1001110001001011110010" + }, + /* 60*/ { -1, -1, -1, "\015*>\015*>\015*>123456789012\015*>", -1, 0, 22, 22, 1, "3 EDI triplets + 12 DECIMAL not ending -> DECIMAL", + "1110110000001000000010" + "1110100000101100001011" + "0000100010111110001010" + "0000101011111111100100" + "1011101101110110000000" + "1010100000110011101110" + "0010100011100010001010" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "1011111100010001100011" + "0111101001010000100101" + "0010110110010110101010" + "1100111001111011100010" + "1000011000100100101001" + "1110010110011011100001" + "1100100100000011111100" + }, + /* 61*/ { -1, -1, -1, "123456789012345", -1, 0, 16, 18, 1, "5 DECIMAL triplets, ASCII switch before padding (2)", "111111111111001100" "000110000110010101" "100010110101101111" @@ -1724,7 +1814,7 @@ static void test_encode(int index, int generate, int debug) { "100010110110101011" "111111011010110001" }, - /* 58*/ { -1, -1, -1, "1234567890123456", -1, 0, 16, 18, 1, "5 DECIMAL triplets + singlet, switch to ASCII before padding (2)", + /* 62*/ { -1, -1, -1, "1234567890123456", -1, 0, 16, 18, 1, "5 DECIMAL triplets + singlet, switch to ASCII before padding (2)", "111111111111001100" "000110000110010101" "100010110101101111" @@ -1742,7 +1832,7 @@ static void test_encode(int index, int generate, int debug) { "000101110010100011" "010101000001110111" }, - /* 59*/ { -1, -1, -1, "12345678901234567", -1, 0, 16, 18, 1, "5 DECIMAL triplets + doublet, switch before ASCII encoding of final char, padding (1)", + /* 63*/ { -1, -1, -1, "12345678901234567", -1, 0, 16, 18, 1, "5 DECIMAL triplets + doublet, switch before ASCII encoding of final char, padding (1)", "111111111111001100" "000110000110010101" "100010110101101111" @@ -1760,7 +1850,7 @@ static void test_encode(int index, int generate, int debug) { "011100000111101100" "100010110100110100" }, - /* 60*/ { -1, -1, -1, "123456789012345678", -1, 0, 16, 18, 1, "6 DECIMAL triplets, switch to ASCII, padding (1)", + /* 64*/ { -1, -1, -1, "123456789012345678", -1, 0, 16, 18, 1, "6 DECIMAL triplets, switch to ASCII, padding (1)", "111111111111001100" "000110000110010101" "100010110101101010" @@ -1778,7 +1868,7 @@ static void test_encode(int index, int generate, int debug) { "101110000010100101" "011010011110111101" }, - /* 61*/ { -1, -1, -1, "1234567890123456789", -1, 0, 16, 18, 1, "6 DECIMAL triplets + singlet, switch before ASCII encoding of singlet, no padding", + /* 65*/ { -1, -1, -1, "1234567890123456789", -1, 0, 16, 18, 1, "6 DECIMAL triplets + singlet, switch before ASCII encoding of singlet, no padding", "111111111111001100" "000110000110010101" "100010110101101010" @@ -1796,7 +1886,7 @@ static void test_encode(int index, int generate, int debug) { "011001101011100100" "101110111011110000" }, - /* 62*/ { -1, -1, -1, "12345678901234567890", -1, 0, 16, 18, 1, "6 DECIMAL triplets + doublet, switch before ASCII 2-digit encoding of doublet, no padding", + /* 66*/ { -1, -1, -1, "12345678901234567890", -1, 0, 16, 18, 1, "6 DECIMAL triplets + doublet, switch before ASCII 2-digit encoding of doublet, no padding", "111111111111001100" "000110000110010101" "100010110101101010" @@ -1814,7 +1904,7 @@ static void test_encode(int index, int generate, int debug) { "111110100110101101" "001000111011111111" }, - /* 63*/ { -1, -1, -1, "123456789012345678901", -1, 0, 16, 18, 1, "7 DECIMAL triplets, fills to final codeword, no padding", + /* 67*/ { -1, -1, -1, "123456789012345678901", -1, 0, 16, 18, 1, "7 DECIMAL triplets, fills to final codeword, no padding", "111111111111001100" "000110000110010101" "100010110101101010" @@ -1832,7 +1922,7 @@ static void test_encode(int index, int generate, int debug) { "111000110101100101" "110001100000110100" }, - /* 64*/ { -1, -1, -1, "1234567890123456789012", -1, 0, 16, 18, 1, "7 DECIMAL triplets + singlet, fills to final codeword, no padding", + /* 68*/ { -1, -1, -1, "1234567890123456789012", -1, 0, 16, 18, 1, "7 DECIMAL triplets + singlet, fills to final codeword, no padding", "111111111111001100" "000110000110010101" "100010110101101010" @@ -1850,7 +1940,61 @@ static void test_encode(int index, int generate, int debug) { "100111000001100000" "101000001010111101" }, - /* 65*/ { -1, -1, 10, "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", -1, 0, 16, 49, 1, "T-48 90", + /* 69*/ { -1, -1, -1, "123456789012345678901234567890123678901AB", -1, 0, 28, 32, 1, "DECIMAL + 4 bits ASCII switch", + "11111111111100110010001101110110" + "00011000011001010100000101101010" + "10101011101000101111100111100001" + "01111000011110100000111011101111" + "00101001110001111101000100101000" + "10101011101011111100100011100001" + "10001010001000100010001000101000" + "00011000010001000100010001100001" + "10001010001000100010001000101000" + "00011000010001000100010001100001" + "00001000000000000000000000100000" + "11111111111111111111111111111111" + "00000000000000000000000000100000" + "11111111111111111111111111111111" + "00000000000000000000000000000000" + "01111111111111111111111111111110" + "01000000000000000000000000000010" + "01111111111111111111111111111110" + "10001010001000100010001000101000" + "00011000010001000100010001100001" + "10001010000110111001100000101011" + "00011000011011000011101111101001" + "11111001011001010000010011100010" + "10111001000000011101101001100000" + "10111010100111101101110011101010" + "10011010100110001011101000100101" + "11011010001110110010110100101110" + "01011111010001011011010000110111" + }, + /* 70*/ { -1, -1, -1, "123456789012345678901234567890123678901234A", -1, 0, 22, 22, 0, "DECIMAL + single ASCII in last 8 bits; BWIPP different encodation TODO: investigate", + "1111111111110011001000" + "0001100001100101010000" + "1101100110101011101000" + "0101101010011100011110" + "1011101110011100010010" + "1000100011101111111010" + "0111100001111001000001" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "1110100010110010101000" + "0110010011100000100000" + "0100100111101100101110" + "1010101110111110101001" + "1001001001100100101101" + "1111110100001111101111" + "0100010100010000111100" + }, + /* 71*/ { -1, -1, 10, "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", -1, 0, 16, 49, 1, "T-48 90", "1111111111001100100011011011010101110100010111110" "0001000110010101000001010101001110001111010000011" "0111000100011001010100000010110100111000111101000" @@ -1868,10 +2012,10 @@ static void test_encode(int index, int generate, int debug) { "1000000000000000000000001000000000000000000000001" "1011111111111111111111111111111111111111111111101" }, - /* 66*/ { -1, -1, 10, "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", -1, ZINT_ERROR_TOO_LONG, 0, 0, 1, "T-48 89", + /* 72*/ { -1, -1, 10, "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", -1, ZINT_ERROR_TOO_LONG, 0, 0, 1, "T-48 89", "" }, - /* 67*/ { -1, -1, -1, "A123456789012345678901A", -1, 0, 22, 22, 1, "ASCII + 7 DECIMAL triplets + ASCII", + /* 73*/ { -1, -1, -1, "A123456789012345678901A", -1, 0, 22, 22, 1, "ASCII + 7 DECIMAL triplets + ASCII", "0100111111111111001100" "0010100001000110010101" "1000101101011010101110" @@ -1895,7 +2039,7 @@ static void test_encode(int index, int generate, int debug) { "1010001010001011101101" "1101101001100001110101" }, - /* 68*/ { -1, -1, -1, "A1234567890123456789012A", -1, 0, 22, 22, 1, "ASCII + 7 DECIMAL triplets + singlet + ASCII", + /* 74*/ { -1, -1, -1, "A1234567890123456789012A", -1, 0, 22, 22, 1, "ASCII + 7 DECIMAL triplets + singlet + ASCII", "0100111111111111001100" "0010100001000110010101" "1000101101011010101110" @@ -1919,7 +2063,7 @@ static void test_encode(int index, int generate, int debug) { "0101101010001000100111" "1110011111011111110100" }, - /* 69*/ { -1, -1, -1, "A12345678901234567890123A", -1, 0, 22, 22, 1, "ASCII + 7 DECIMAL triplets + doublet + ASCII", + /* 75*/ { -1, -1, -1, "A12345678901234567890123A", -1, 0, 22, 22, 1, "ASCII + 7 DECIMAL triplets + doublet + ASCII", "0100111111111111001100" "0010100001000110010101" "1000101101011010101110" @@ -1943,7 +2087,7 @@ static void test_encode(int index, int generate, int debug) { "0001111010010111100010" "0001001001000000110100" }, - /* 70*/ { -1, -1, -1, "ABCDEFGHI123456789012A", -1, 0, 22, 22, 1, "3 C40 triplets + 4 DECIMAL triplets + ASCII 0 padding", + /* 76*/ { -1, -1, -1, "ABCDEFGHI123456789012A", -1, 0, 22, 22, 1, "3 C40 triplets + 4 DECIMAL triplets + ASCII 0 padding", "1110110101111001100010" "0110101001100111010100" "1000100101111110001010" @@ -1967,7 +2111,7 @@ static void test_encode(int index, int generate, int debug) { "0011001101000011100011" "0100110101010110111011" }, - /* 71*/ { -1, -1, -1, "ABCDEFGHI12345678", -1, 0, 22, 22, 1, "3 C40 triplets + ASCII 2-digits end-of-data", + /* 77*/ { -1, -1, -1, "ABCDEFGHI12345678", -1, 0, 22, 22, 1, "3 C40 triplets + ASCII 2-digits end-of-data", "1110110101111001100010" "0110101001100111010100" "1000100101111110001010" @@ -1991,7 +2135,7 @@ static void test_encode(int index, int generate, int debug) { "1010111111111110101011" "1101101100101010110101" }, - /* 72*/ { -1, -1, -1, "ABCDEFGH123456789012345678901A", -1, 0, 22, 22, 1, "2 C40 triplets + doublet + ASCII 2-digits ASCII 0 padding", + /* 78*/ { -1, -1, -1, "ABCDEFGH123456789012345678901A", -1, 0, 22, 22, 1, "2 C40 triplets + doublet + ASCII 2-digits ASCII 0 padding", "1110110101111001100010" "0110101001100111010100" "1000100100111110011010" @@ -2015,7 +2159,31 @@ static void test_encode(int index, int generate, int debug) { "0010110111111111101111" "1010010000100000110111" }, - /* 73*/ { -1, -1, -1, "\200\200", -1, 0, 16, 18, 1, "BYTE", + /* 79*/ { -1, -1, -1, "\101\102\103\104\105\106\107\110\111\112\113\200", -1, 0, 22, 22, 1, "3 C40 triplets + doublet + extended ASCII - note extended ASCII not encodable in C40 mode", + "1110110101111001100010" + "0110101001100111010100" + "1000100101100110001011" + "0000101111001100101011" + "1000101111100010001000" + "0001101111000100010001" + "1000101000100010000001" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001101001" + "1001001101110100100010" + "1111100010000001101100" + "0000001011000000100010" + "0010111110100000100000" + "1010000101100100100110" + "0101111100110010110010" + }, + /* 80*/ { -1, -1, -1, "\200\200", -1, 0, 16, 18, 1, "BYTE", "111011000010001000" "011110001000000000" "100010100010001000" @@ -2033,7 +2201,7 @@ static void test_encode(int index, int generate, int debug) { "010011001011100111" "110100011101110111" }, - /* 74*/ { -1, -1, -1, "\200\200\200\200\200\200\200\200", -1, 0, 16, 18, 1, "BYTE (no padding, byte count 0)", + /* 81*/ { -1, -1, -1, "\200\200\200\200\200\200\200\200", -1, 0, 16, 18, 1, "BYTE (no padding, byte count 0)", "111011000010001000" "011110000000000000" "100010100010001000" @@ -2051,7 +2219,7 @@ static void test_encode(int index, int generate, int debug) { "111101011011100111" "101110100100111000" }, - /* 75*/ { -1, -1, -1, "\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063", -1, 0, 70, 76, 1, "249 BYTEs + 13 DECIMAL", + /* 82*/ { -1, -1, -1, "\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063", -1, 0, 70, 76, 1, "249 BYTEs + 13 DECIMAL", "1110111111100010001000100011100010001000100010001110001000100010001000111000" "0111101001000000000000000010000000000000000000001000000000000000000000100000" "1000101000100010001000100010100010001000100010001010001000100010001000101000" @@ -2123,7 +2291,7 @@ static void test_encode(int index, int generate, int debug) { "0000101101010101000011010110011110110100100111111011100001010010000111100100" "1101111110001011101100010011101010100111101110111101101000010100111000111001" }, - /* 76*/ { -1, -1, -1, "\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063", -1, 0, 70, 76, 1, "250 BYTEs + 13 DECIMAL", + /* 83*/ { -1, -1, -1, "\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063", -1, 0, 70, 76, 1, "250 BYTEs + 13 DECIMAL", "1110111111000010001000100011100010001000100010001110001000100010001000111000" "0111101010000000000000000010000000000000000000001000000000000000000000100000" "1000101000100010001000100010100010001000100010001010001000100010001000101000" @@ -2195,7 +2363,7 @@ static void test_encode(int index, int generate, int debug) { "1111101101101101100101000110010011000011110001101001001011010001000001100100" "1110110001110110001100000011110011001110000101001111000111011001010011111110" }, - /* 77*/ { -1, -1, -1, "\061\062\063\064\065\066\067\070\071\060\061\062\063\064\065\066\067\070\071\060\061\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063", -1, 0, 104, 98, 1, "21 DECIMAL + 501 BYTEs + 13 DECIMAL", + /* 84*/ { -1, -1, -1, "\061\062\063\064\065\066\067\070\071\060\061\062\063\064\065\066\067\070\071\060\061\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063", -1, 0, 104, 98, 1, "21 DECIMAL + 501 BYTEs + 13 DECIMAL", "11111111111100110010001101011110101011101011111011111100001000100010011010001000100010001011001000" "00010010011001010100000101110010011100011111011110101100010000000000010000000000000000000010000000" "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" @@ -2301,7 +2469,7 @@ static void test_encode(int index, int generate, int debug) { "11001110100000010100001001010010000101101110100110101100011011001110010101111001100100110010001101" "01110011001111110111010101111010111001011100001111011101001011010000011011001100100000101011000101" }, - /* 78*/ { -1, -1, -1, "\061\062\063\064\065\066\067\070\071\060\061\062\063\064\065\066\067\070\071\060\061\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063\064\065\066\067\070\071\060\061\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063", -1, 0, 104, 98, 1, "21 DECIMAL + 251 BYTEs + 21 DECIMAL + 252 BYTEs 13 DECIMAL", + /* 85*/ { -1, -1, -1, "\061\062\063\064\065\066\067\070\071\060\061\062\063\064\065\066\067\070\071\060\061\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063\064\065\066\067\070\071\060\061\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063", -1, 0, 104, 98, 1, "21 DECIMAL + 251 BYTEs + 21 DECIMAL + 252 BYTEs 13 DECIMAL", "11111111111100110010001101011110101011101011111011111100001000100010011010001000100010001011001000" "00010010011001010100000101110010011100011111011110101000010000000000010000000000000000000010000000" "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" @@ -2407,7 +2575,7 @@ static void test_encode(int index, int generate, int debug) { "01101010000000111001110100110111110011111001000110101010111111101011110001100001110101000110111101" "01111111101011000101001010011010111100011101111011110000111111000110111010011101101111001111011011" }, - /* 79*/ { -1, 3, -1, "\351", -1, 0, 16, 18, 1, "é in ISO 8859-1", + /* 86*/ { -1, 3, -1, "\351", -1, 0, 16, 18, 1, "é in ISO 8859-1", "100011010101011000" "000110110111010010" "100010100011100110" @@ -2425,7 +2593,7 @@ static void test_encode(int index, int generate, int debug) { "001010011001100100" "101100110110110101" }, - /* 80*/ { -1, 899, -1, "\134\134\351\142\154\134\141\150\134", -1, 0, 28, 32, 1, "éblah", + /* 87*/ { -1, 899, -1, "\134\134\351\142\154\134\141\150\134", -1, 0, 28, 32, 1, "éblah", "10001101010101100010001110110101" "00011011011101001010100101101101" "01011001010101111001100110100110" @@ -2455,7 +2623,7 @@ static void test_encode(int index, int generate, int debug) { "11011011010100010100111000101011" "11011110101110100011111110110011" }, - /* 81*/ { GS1_MODE, -1, -1, "[90]12[91]1234567890123A", -1, 0, 22, 22, 1, "Step B4", + /* 88*/ { GS1_MODE, -1, -1, "[90]12[91]1234567890123A", -1, 0, 22, 22, 1, "Step B4", "1110111101100011101110" "1000101100111011000100" "0000101011111001110001" @@ -2479,7 +2647,7 @@ static void test_encode(int index, int generate, int debug) { "0100001001100001101110" "1110110100001101111001" }, - /* 82*/ { GS1_MODE, -1, -1, "[90]12[91]12345", -1, 0, 16, 18, 1, "Step B5", + /* 89*/ { GS1_MODE, -1, -1, "[90]12[91]12345", -1, 0, 16, 18, 1, "Step B5", "111011110110001110" "100010110011101100" "111010000010111101" @@ -2497,6 +2665,54 @@ static void test_encode(int index, int generate, int debug) { "011100010001100101" "101000101000110110" }, + /* 90*/ { GS1_MODE, -1, -1, "[10]AB[90]ABCDEFGHIJKLMNOP[91]ABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 28, 32, 1, "Step P", + "11101110000100010011101101111110" + "10001011000010001110001100100110" + "01011011100110001010000101101001" + "10011010011101010000001111100011" + "10011010101101101110000101100001" + "10101001100101010101000010100111" + "01101001010111100010001100101001" + "00001000100011110101101000101010" + "00001010100011110001111101101011" + "00111011011110000010010011100100" + "00001000000000000000000000100000" + "11111111111111111111111111111111" + "00000000000000000000000000100000" + "11111111111111111111111111111111" + "00000000000000000000000000000000" + "01111111111111111111111111111110" + "01000000000000000000000000000010" + "01111111111111111111111111111110" + "11101011101111010110001000101000" + "01101011111111101100010001100001" + "10001010000010110100001000100011" + "00011000011100110001011011100011" + "11001011010100110100000101100011" + "10111000010010101001100000100100" + "01101001000001010101110001100011" + "00011011010110111001110010100100" + "01111000010000110101101110100100" + "00011110111111111110101011110110" + }, + /* 91*/ { GS1_MODE, -1, -1, "[11]121212", -1, 0, 16, 18, 1, "Start FNC1 and Decimal", + "111011000100000101" + "110010110011011111" + "110010001110001000" + "100110001100010001" + "100010100001011101" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100010100101010" + "101010101001100101" + "110011110100100111" + "000111100011101101" + "100101110101111101" + }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; diff --git a/backend/tests/test_code128.c b/backend/tests/test_code128.c index b2d6aaca..dca19b8d 100644 --- a/backend/tests/test_code128.c +++ b/backend/tests/test_code128.c @@ -416,6 +416,9 @@ static void test_ean128_input(int index, int generate, int debug) { /* 20*/ { GS1_MODE, "[90]1A[90]1", 0, 134, "(12) 104 102 25 16 17 33 102 25 99 1 65 106", "StartB FNC1 9 0 1 A FNC1 9 CodeC 01" }, /* 21*/ { GS1_MODE, "[90]12A[90]123", 0, 145, "(13) 105 102 90 12 100 33 102 25 99 1 23 25 106", "StartC FNC1 90 12 CodeB A FNC1 9 CodeC 01 23" }, /* 22*/ { GS1_MODE, "[90]123[90]A234[90]123", 0, 244, "(22) 105 102 90 12 100 19 99 102 90 100 33 18 99 34 102 100 25 99 1 23 37 106", "StartC FNC1 90 12 CodeB 3 CodeC FNC1 90 CodeB A 2 CodeC 34 FNC1 CodeB 9 CodeC 01 23" }, + /* 23*/ { GS1_MODE, "[90]12345A12345A", 0, 178, "(16) 105 102 90 12 34 100 21 33 17 99 23 45 100 33 59 106", "StartC FNC1 90 12 34 CodeB 5 A 1 CodeC 23 45 CodeB A [" }, + /* 24*/ { GS1_MODE, "[01]12345678901231[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890123456789012345678901234", 0, 684, "(62) 105 102 1 12 34 56 78 90 12 31 90 12 34 56 78 90 12 34 56 78 90 12 34 56 78 90 102 91", "Max length" }, + /* 25*/ { GS1_MODE, "[01]12345678901231[90]123456789012345678901234567890[91]12345678901234567890123456789012345678901234567890123456789012345", ZINT_ERROR_TOO_LONG, 0, "Error 344: Input too long (60 symbol character maximum)", "" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -746,28 +749,31 @@ static void test_encode(int index, int generate, int debug) { /* 35*/ { BARCODE_GS1_128, GS1_MODE, "[90]ABCDEfGHI", 0, 1, 167, 0, "Shift A; BWIPP different encodation, same codeword count", "11010010000111101011101110010110010011101100101000110001000101100010001000110101100010001000110100010110000100110100010001100010100011000100010110010011101100011101011" }, - /* 36*/ { BARCODE_EAN14, GS1_MODE, "4070071967072", 0, 1, 134, 1, "Verified manually against tec-it", + /* 36*/ { BARCODE_GS1_128, GS1_MODE, "[01]12345678901231[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890123456789012345678901234", 0, 1, 684, 1, "Max length", + "110100111001111010111011001101100101100111001000101100011100010110110000101001101111011010110011100110110001101101111011010110011100100010110001110001011011000010100110111101101011001110010001011000111000101101100001010011011110110101100111001000101100011100010110110000101001101111011011110101110111101101101011001110010001011000111000101101100001010011011110110101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010100110111101101011001110010001011000111000101101100001010011011110110101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010100110111101101011001110010001011000100011110101100011101011" + }, + /* 37*/ { BARCODE_EAN14, GS1_MODE, "4070071967072", 0, 1, 134, 1, "Verified manually against tec-it", "11010011100111101011101100110110011000101000101100001001001100010011001011100100001011001001100010011001001110110111001001100011101011" }, - /* 37*/ { BARCODE_NVE18, GS1_MODE, "40700000071967072", 0, 1, 156, 1, "Verified manually against tec-it", + /* 38*/ { BARCODE_NVE18, GS1_MODE, "40700000071967072", 0, 1, 156, 1, "Verified manually against tec-it", "110100111001111010111011011001100110001010001011000010011011001100110110011001001100010011001011100100001011001001100010011001001110110111011101100011101011" }, - /* 38*/ { BARCODE_HIBC_128, UNICODE_MODE, "83278F8G9H0J2G", 0, 1, 211, 1, "ANSI/HIBC 2.6 - 2016 Section 4.1, not same, uses different encoding (eg begins StartA instead of StartB)", + /* 39*/ { BARCODE_HIBC_128, UNICODE_MODE, "83278F8G9H0J2G", 0, 1, 211, 1, "ANSI/HIBC 2.6 - 2016 Section 4.1, not same, uses different encoding (eg begins StartA instead of StartB)", "1101001000011000100100111010011001011101111011000110110110000101001011110111010001100010111010011001101000100011100101100110001010001001110110010110111000110011100101101000100010001001100111101010001100011101011" }, - /* 39*/ { BARCODE_HIBC_128, UNICODE_MODE, "A123BJC5D6E71", 0, 1, 200, 1, "ANSI/HIBC 2.6 - 2016 Figure 1, same", + /* 40*/ { BARCODE_HIBC_128, UNICODE_MODE, "A123BJC5D6E71", 0, 1, 200, 1, "ANSI/HIBC 2.6 - 2016 Figure 1, same", "11010010000110001001001010001100010011100110110011100101100101110010001011000101101110001000100011011011100100101100010001100111010010001101000111011011101001110011011010001000110001101101100011101011" }, - /* 40*/ { BARCODE_HIBC_128, UNICODE_MODE, "$$52001510X3G", 0, 1, 178, 1, "ANSI/HIBC 2.6 - 2016 Figure 5, same", + /* 41*/ { BARCODE_HIBC_128, UNICODE_MODE, "$$52001510X3G", 0, 1, 178, 1, "ANSI/HIBC 2.6 - 2016 Figure 5, same", "1101001000011000100100100100011001001000110010111011110110111000101101100110010111001100110010001001011110111011100010110110010111001101000100010110001000100011110101100011101011" }, - /* 41*/ { BARCODE_DPD, UNICODE_MODE, "%000393206219912345678101040", 0, 1, 211, 1, "DPDAPPD 4.0.2 - Illustrations 2, 7, 8, same; NOTE: correct HRT given by Illustration 7 only", + /* 42*/ { BARCODE_DPD, UNICODE_MODE, "%000393206219912345678101040", 0, 1, 211, 1, "DPDAPPD 4.0.2 - Illustrations 2, 7, 8, same; NOTE: correct HRT given by Illustration 7 only", "1101001000010001001100100111011001011101111011011001100110100010001100011011010011001000110111001001011101111010110011100100010110001110001011011000010100110010001001100100010011000101000101011110001100011101011" }, - /* 42*/ { BARCODE_DPD, UNICODE_MODE, "%007110601782532948375101276", 0, 1, 211, 1, "DPDAPPD 4.0.2 - Illustration 6 **NOT SAME** HRT incorrect, also uses CodeA and inefficient encoding; verified against tec-it", + /* 43*/ { BARCODE_DPD, UNICODE_MODE, "%007110601782532948375101276", 0, 1, 211, 1, "DPDAPPD 4.0.2 - Illustration 6 **NOT SAME** HRT incorrect, also uses CodeA and inefficient encoding; verified against tec-it", "1101001000010001001100100111011001011101111010011000100110001001001001100100011001101100110000101001110010110011000110110100010111101011110010011000010010110010001001011001110011001010000100010111101100011101011" }, - /* 43*/ { BARCODE_DPD, UNICODE_MODE, "0123456789012345678901234567", 0, 1, 189, 1, "DPDAPPD 4.0.2 - Illustration 9, same (allowing for literal HRT)", + /* 44*/ { BARCODE_DPD, UNICODE_MODE, "0123456789012345678901234567", 0, 1, 189, 1, "DPDAPPD 4.0.2 - Illustration 9, same (allowing for literal HRT)", "110100111001100110110011101101110101110110001000010110011011011110110011011001110110111010111011000100001011001101101111011001101100111011011101011101100010000101100101011110001100011101011" }, }; diff --git a/backend/tests/test_code16k.c b/backend/tests/test_code16k.c index a2f53bb4..d09af678 100644 --- a/backend/tests/test_code16k.c +++ b/backend/tests/test_code16k.c @@ -166,20 +166,22 @@ static void test_input(int index, int generate, int debug) { /* 2*/ { UNICODE_MODE, "12", -1, 0, 2, 70, "(10) 2 12 103 103 103 103 103 103 98 27", "ModeC 12 Pad (6)" }, /* 3*/ { GS1_MODE, "[90]A", -1, 0, 2, 70, "(10) 3 25 16 33 103 103 103 103 83 20", "ModeBFNC1 9 0 A Pad (4)" }, /* 4*/ { GS1_MODE, "[90]12", -1, 0, 2, 70, "(10) 4 90 12 103 103 103 103 103 79 62", "ModeCFNC1 90 12 Pad (5)" }, - /* 5*/ { GS1_MODE | GS1PARENS_MODE, "(90)12", -1, 0, 2, 70, "(10) 4 90 12 103 103 103 103 103 79 62", "ModeCFNC1 90 12 Pad (5)" }, - /* 6*/ { UNICODE_MODE, "a0123456789", -1, 0, 2, 70, "(10) 5 65 1 23 45 67 89 103 27 86", "ModeC1SB a 01 23 45 67 89 Pad" }, - /* 7*/ { UNICODE_MODE, "ab0123456789", -1, 0, 2, 70, "(10) 6 65 66 1 23 45 67 89 19 42", "ModeC2SB a b 01 23 45 67 89" }, - /* 8*/ { UNICODE_MODE, "1234\037a", -1, 0, 2, 70, "(10) 2 12 34 101 95 98 65 103 67 53", "ModeC 12 34 CodeA US 1SB a Pad" }, - /* 9*/ { UNICODE_MODE, "\000\037ß", 4, 0, 2, 70, "(10) 0 64 95 101 63 103 103 103 75 11", "ModeA NUL US FNC4 ß Pad (3)" }, - /* 10*/ { UNICODE_MODE, "\000\037é", 4, 0, 2, 70, "(10) 0 64 95 101 98 73 103 103 75 6", "ModeA NUL US FNC4 1SB é Pad (2)" }, - /* 11*/ { UNICODE_MODE, "\000\037éa", 5, 0, 2, 70, "(10) 0 64 95 100 100 73 65 103 99 69", "ModeA NUL US CodeB FNC4 é a Pad" }, - /* 12*/ { UNICODE_MODE, "abß", -1, 0, 2, 70, "(10) 1 65 66 100 63 103 103 103 66 56", "ModeB a b FNC4 ß Pad (3)" }, - /* 13*/ { DATA_MODE, "\141\142\237", -1, 0, 2, 70, "(10) 1 65 66 100 98 95 103 103 6 71", "ModeB a b FNC4 1SA APC Pad (2)" }, - /* 14*/ { DATA_MODE, "\141\142\237\037", -1, 0, 2, 70, "(10) 1 65 66 101 101 95 95 103 72 93", "ModeB a b CodeA FNC4 APC US Pad" }, - /* 15*/ { UNICODE_MODE, "ééé", -1, 0, 2, 70, "(10) 1 100 73 100 73 100 73 103 105 106", "ModeB FNC4 é FNC4 é FNC4 é Pad" }, - /* 16*/ { UNICODE_MODE, "aééééb", -1, 0, 3, 70, "(15) 8 65 100 73 100 73 100 73 100 73 66 103 103 39 83", "ModeB a FNC4 é (4) b Pad (2)" }, - /* 17*/ { UNICODE_MODE, "aéééééb", -1, 0, 3, 70, "(15) 8 65 100 73 100 73 100 73 100 73 100 73 66 74 106", "ModeB a FNC4 é (5) b" }, - /* 18*/ { UNICODE_MODE, "aééééébcdeé", -1, 0, 4, 70, "(20) 15 65 100 73 100 73 100 73 100 73 100 73 66 67 68 69 100 73 14 69", "ModeB a FNC4 é (5) b c d e FNC4 é" }, + /* 5*/ { GS1_MODE, "[90]12[20]12", -1, 0, 2, 70, "(10) 4 90 12 102 20 12 103 103 9 72", "ModeCFNC1 90 12 FNC1 20 12 Pad (2)" }, + /* 6*/ { GS1_MODE, "[90]123[20]12", -1, 0, 2, 70, "(15) 4 90 12 100 19 99 102 20 12 103 103 103 103 88 22", "ModeCFNC1 90 CodeB 3 CodeC FNC1 20 12 Pad (4)" }, + /* 7*/ { GS1_MODE | GS1PARENS_MODE, "(90)12", -1, 0, 2, 70, "(10) 4 90 12 103 103 103 103 103 79 62", "ModeCFNC1 90 12 Pad (5)" }, + /* 8*/ { UNICODE_MODE, "a0123456789", -1, 0, 2, 70, "(10) 5 65 1 23 45 67 89 103 27 86", "ModeC1SB a 01 23 45 67 89 Pad" }, + /* 9*/ { UNICODE_MODE, "ab0123456789", -1, 0, 2, 70, "(10) 6 65 66 1 23 45 67 89 19 42", "ModeC2SB a b 01 23 45 67 89" }, + /* 10*/ { UNICODE_MODE, "1234\037a", -1, 0, 2, 70, "(10) 2 12 34 101 95 98 65 103 67 53", "ModeC 12 34 CodeA US 1SB a Pad" }, + /* 11*/ { UNICODE_MODE, "\000\037ß", 4, 0, 2, 70, "(10) 0 64 95 101 63 103 103 103 75 11", "ModeA NUL US FNC4 ß Pad (3)" }, + /* 12*/ { UNICODE_MODE, "\000\037é", 4, 0, 2, 70, "(10) 0 64 95 101 98 73 103 103 75 6", "ModeA NUL US FNC4 1SB é Pad (2)" }, + /* 13*/ { UNICODE_MODE, "\000\037éa", 5, 0, 2, 70, "(10) 0 64 95 100 100 73 65 103 99 69", "ModeA NUL US CodeB FNC4 é a Pad" }, + /* 14*/ { UNICODE_MODE, "abß", -1, 0, 2, 70, "(10) 1 65 66 100 63 103 103 103 66 56", "ModeB a b FNC4 ß Pad (3)" }, + /* 15*/ { DATA_MODE, "\141\142\237", -1, 0, 2, 70, "(10) 1 65 66 100 98 95 103 103 6 71", "ModeB a b FNC4 1SA APC Pad (2)" }, + /* 16*/ { DATA_MODE, "\141\142\237\037", -1, 0, 2, 70, "(10) 1 65 66 101 101 95 95 103 72 93", "ModeB a b CodeA FNC4 APC US Pad" }, + /* 17*/ { UNICODE_MODE, "ééé", -1, 0, 2, 70, "(10) 1 100 73 100 73 100 73 103 105 106", "ModeB FNC4 é FNC4 é FNC4 é Pad" }, + /* 18*/ { UNICODE_MODE, "aééééb", -1, 0, 3, 70, "(15) 8 65 100 73 100 73 100 73 100 73 66 103 103 39 83", "ModeB a FNC4 é (4) b Pad (2)" }, + /* 19*/ { UNICODE_MODE, "aéééééb", -1, 0, 3, 70, "(15) 8 65 100 73 100 73 100 73 100 73 100 73 66 74 106", "ModeB a FNC4 é (5) b" }, + /* 20*/ { UNICODE_MODE, "aééééébcdeé", -1, 0, 4, 70, "(20) 15 65 100 73 100 73 100 73 100 73 100 73 66 67 68 69 100 73 14 69", "ModeB a FNC4 é (5) b c d e FNC4 é" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; diff --git a/backend/tests/test_common.c b/backend/tests/test_common.c index 72b7dd13..03de3863 100644 --- a/backend/tests/test_common.c +++ b/backend/tests/test_common.c @@ -82,6 +82,66 @@ static void test_utf8_to_unicode(int index, int debug) { testFinish(); } +static void test_set_height(int index, int debug) { + + struct item { + int rows; + int row_height[20]; + float height; + + float min_row_height; + float default_height; + float max_height; + int no_errtxt; + + int ret; + float expected_height; + char *expected_errtxt; + char *comment; + }; + // s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<")) + struct item data[] = { + /* 0*/ { 0, { 0 }, 0, 0, 0, 0, 0, 0, 0.5, "", "" }, + /* 1*/ { 2, { 1, 1 }, 2, 0, 0, 0, 0, 0, 2, "", "zero_count == 0, fixed height only" }, + /* 2*/ { 2, { 1, 1 }, 2, 0, 0, 1, 1, ZINT_WARN_NONCOMPLIANT, 2, "", "zero_count == 0, height < max height" }, + /* 3*/ { 2, { 1, 1 }, 2, 0, 0, 1, 0, ZINT_WARN_NONCOMPLIANT, 2, "248: Height not compliant with standards", "zero_count == 0, height < max height" }, + /* 4*/ { 2, { 2, 0 }, 2, 0, 0, 0, 0, 0, 2.5, "", "zero_count != 0, height 2" }, + /* 5*/ { 2, { 2, 0 }, 2, 1, 0, 0, 1, ZINT_WARN_NONCOMPLIANT, 2.5, "", "zero_count != 0, row_height < min_row_height" }, + /* 6*/ { 2, { 2, 0 }, 2, 1, 0, 0, 0, ZINT_WARN_NONCOMPLIANT, 2.5, "247: Height not compliant with standards", "zero_count != 0, row_height < min_row_height" }, + /* 7*/ { 2, { 2, 0 }, 0, 0, 20, 0, 0, 0, 22, "", "zero_count != 0, default_height 20" }, + /* 8*/ { 2, { 2, 0 }, 20, 0, 20, 0, 0, 0, 20, "", "zero_count != 0, height 20" }, + /* 9*/ { 2, { 2, 0 }, 0, 2, 0, 0, 0, 0, 4, "", "zero_count != 0, min_row_height 2" }, + }; + int data_size = ARRAY_SIZE(data); + int i, ret; + + struct zint_symbol symbol; + + testStart("set_height"); + + symbol.debug = debug; + + for (i = 0; i < data_size; i++) { + int j; + + if (index != -1 && i != index) continue; + + memset(&symbol, 0, sizeof(symbol)); + symbol.rows = data[i].rows; + for (j = 0; j < ARRAY_SIZE(data[i].row_height); j++) { + symbol.row_height[j] = data[i].row_height[j]; + } + symbol.height = data[i].height; + + ret = set_height(&symbol, data[i].min_row_height, data[i].default_height, data[i].max_height, data[i].no_errtxt); + assert_equal(ret, data[i].ret, "i:%d ret %d != %d\n", i, ret, data[i].ret); + assert_equal(symbol.height, data[i].expected_height, "i:%d symbol.height %g != %g\n", i, symbol.height, data[i].expected_height); + assert_zero(strcmp(symbol.errtxt, data[i].expected_errtxt), "i:%d errtxt %s != %s\n", i, symbol.errtxt, data[i].expected_errtxt); + } + + testFinish(); +} + static void test_is_valid_utf8(int index) { struct item { @@ -158,8 +218,9 @@ int main(int argc, char *argv[]) { testFunction funcs[] = { /* name, func, has_index, has_generate, has_debug */ { "test_utf8_to_unicode", test_utf8_to_unicode, 1, 0, 1 }, - { "test_debug_test_codeword_dump_int", test_debug_test_codeword_dump_int, 1, 0, 1 }, + { "test_set_height", test_set_height, 1, 0, 1 }, { "test_is_valid_utf8", test_is_valid_utf8, 1, 0, 0 }, + { "test_debug_test_codeword_dump_int", test_debug_test_codeword_dump_int, 1, 0, 1 }, }; testRun(argc, argv, funcs, ARRAY_SIZE(funcs)); diff --git a/backend/tests/test_composite.c b/backend/tests/test_composite.c index 8d7ff1c1..995d7552 100644 --- a/backend/tests/test_composite.c +++ b/backend/tests/test_composite.c @@ -146,12 +146,13 @@ static void test_examples(int index, int generate, int debug) { int expected_rows; int expected_width; + int bwipp_cmp; char *comment; char *expected; }; // Verified manually against GS1 General Specifications 21.0.1 (GGS) and ISO/IEC 24723:2010, with noted exceptions, and verified via bwipp_dump.ps against BWIPP struct item data[] = { - /* 0*/ { BARCODE_DBAR_OMNSTK_CC, -1, 1, "0401234567890", "[17]050101[10]ABC123", 0, 11, 56, "GSS Figure 5.1-5. GS1 DataBar Stacked Omnidirectional barcode with a Composite Component", + /* 0*/ { BARCODE_DBAR_OMNSTK_CC, -1, 1, "0401234567890", "[17]050101[10]ABC123", 0, 11, 56, 1, "GSS Figure 5.1-5. GS1 DataBar Stacked Omnidirectional barcode with a Composite Component", "01101100110101110001001100001000000110100111011110101001" "01101101110110001100010100001100001000010110011100101001" "01101101100111000101110001101001100011111010011101101001" @@ -164,7 +165,7 @@ static void test_examples(int index, int generate, int debug) { "00001000110000101010000000101010111011001111000000000000" "10100111001111010101111111000001000100110000110101000000" }, - /* 1*/ { BARCODE_DBAR_LTD_CC, -1, 1, "1311234567890", "[17]010615[10]A123456", 0, 6, 79, "GGS Figure 5.11.2-1. (24723:2010 Figure 1) GS1 DataBar Limited Composite symbol with CC-A", + /* 1*/ { BARCODE_DBAR_LTD_CC, -1, 1, "1311234567890", "[17]010615[10]A123456", 0, 6, 79, 1, "GGS Figure 5.11.2-1. (24723:2010 Figure 1) GS1 DataBar Limited Composite symbol with CC-A", "0111100010110110001010011000111110100110011101110100111100111011101001101000000" "0100111110001101001010111000111101111010111101001111011100111011101011101000000" "0100110011010000001010110000111001000110111101111011110010100011101011001000000" @@ -172,7 +173,7 @@ static void test_examples(int index, int generate, int debug) { "0000001100000101010011001110101011010100110010101111000101100110100111000000000" "0101110011111010101100110001010100101011001101010000111010011001011000010100000" }, - /* 2*/ { BARCODE_GS1_128_CC, -1, 3, "[01]03812345678908", "[10]ABCD123456[410]3898765432108", 0, 7, 154, "GGS Figure 5.11.2-2. GS1-128 Composite symbol with CC-C **NOT SAME** as zint uses encodation '10', same if '0' forced", + /* 2*/ { BARCODE_GS1_128_CC, -1, 3, "[01]03812345678908", "[10]ABCD123456[410]3898765432108", 0, 7, 154, 1, "GGS Figure 5.11.2-2. GS1-128 Composite symbol with CC-C **NOT SAME** as zint uses encodation '10', same if '0' forced", "1111111101010100011110101011110000111101011001111101110111110111010010000010000100010110010000101100001111011110110011011110101001111000111111101000101001" "1111111101010100011111101010001110100001000111101001100101110010000011100001011000100100100111110110001011100001011111011111101010111000111111101000101001" "1111111101010100011101010011111100110001111010001101000101011110000010001111101100010111101101111101001001011000111110011101010001111110111111101000101001" @@ -181,7 +182,7 @@ static void test_examples(int index, int generate, int debug) { "0000000001011000110000101000100110010011011011001110110100001100010010001010001001110111101001100100100001011100110110100001000100100001001001110001010000" "0000000110100111001111010111011001101100100100110001001011110011101101110101110110001000010110011011011110100011001001011110111011011110110110001110101100" }, - /* 3*/ { BARCODE_GS1_128_CC, -1, 3, "[01]93812345678901", "[10]ABCD123456[410]3898765432108", 0, 7, 154, "24723:2010 Figure 2 GS1-128 Composite symbol with 5-row CC-C **NOT SAME** ditto as above", + /* 3*/ { BARCODE_GS1_128_CC, -1, 3, "[01]93812345678901", "[10]ABCD123456[410]3898765432108", 0, 7, 154, 1, "24723:2010 Figure 2 GS1-128 Composite symbol with 5-row CC-C **NOT SAME** ditto as above", "1111111101010100011110101011110000111101011001111101110111110111010010000010000100010110010000101100001111011110110011011110101001111000111111101000101001" "1111111101010100011111101010001110100001000111101001100101110010000011100001011000100100100111110110001011100001011111011111101010111000111111101000101001" "1111111101010100011101010011111100110001111010001101000101011110000010001111101100010111101101111101001001011000111110011101010001111110111111101000101001" @@ -190,7 +191,7 @@ static void test_examples(int index, int generate, int debug) { "0000000001011000110000101000100110010011010111000010110100001100010010001010001001110111101001100100100001001100100110100001000100001001001001110001010000" "0000000110100111001111010111011001101100101000111101001011110011101101110101110110001000010110011011011110110011011001011110111011110110110110001110101100" }, - /* 4*/ { BARCODE_EANX_CC, -1, 1, "331234567890", "[21]1234-abcd", 0, 7, 99, "GGS Figure 5.11.8-1. EAN-13 symbol with a four-column CC-A component (note [21] not [99])", + /* 4*/ { BARCODE_EANX_CC, -1, 1, "331234567890", "[21]1234-abcd", 0, 7, 99, 1, "GGS Figure 5.11.8-1. EAN-13 symbol with a four-column CC-A component (note [21] not [99])", "110110111011010000100000110100110011101100001001110100100001011001100001100111000110001011011000101" "110110110011000110111100010111011001110000101001100100100000010111101001101011100010000011001000101" "110110100010011010001110000111111010001100101001100110111111010001101001010000011011111011101000101" @@ -199,7 +200,7 @@ static void test_examples(int index, int generate, int debug) { "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" "000101011110100110010011011010000100111010110001010101010000100010010010001110100111001010000101010" }, - /* 5*/ { BARCODE_EANX_CC, -1, 1, "331234567890", "[99]1234-abcd", 0, 7, 99, "24723:2010 Figure 5 An EAN-13 composite symbol (with CC-A)", + /* 5*/ { BARCODE_EANX_CC, -1, 1, "331234567890", "[99]1234-abcd", 0, 7, 99, 1, "24723:2010 Figure 5 An EAN-13 composite symbol (with CC-A)", "110110111011100110111011110100010100000010001001110100111011010110000001100110010000100011011000101" "110110110011100010011101100111110001000101101001100100100001101011111101101011100010000011001000101" "110110100010001011101111110110011100100011101001100110100000011101011001011110001001000011101000101" @@ -208,7 +209,7 @@ static void test_examples(int index, int generate, int debug) { "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" "000101011110100110010011011010000100111010110001010101010000100010010010001110100111001010000101010" }, - /* 6*/ { BARCODE_UPCA_CC, -1, 2, "61414101234", "[91]abcdefghijklmnopqrstuvwxyz", 0, 14, 99, "GGS Figure 5.11.8-2. UPC-A symbol with a four-column CC-B component **NOT SAME** (using [91] not [10] as length > 20 max for [10])", + /* 6*/ { BARCODE_UPCA_CC, -1, 2, "61414101234", "[91]abcdefghijklmnopqrstuvwxyz", 0, 14, 99, 1, "GGS Figure 5.11.8-2. UPC-A symbol with a four-column CC-B component **NOT SAME** (using [91] not [10] as length > 20 max for [10])", "110001001010000001110010110110011111101100101001111010100100101111000001110101001111110011000100101" "111001001011101110101000000111101101000111001011111010100011000110000101110011010000110011100100101" "111101001011110110001101000111101000100000101011110010101001111001000001011111010001110011110100101" @@ -224,7 +225,7 @@ static void test_examples(int index, int generate, int debug) { "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" "000101010111100110010100011001100101000110011001010101110010110011011011001000010101110010000101010" }, - /* 7*/ { BARCODE_UPCA_CC, GS1NOCHECK_MODE, 2, "61414101234", "[10]abcdefghijklmnopqrstuvwxyz", 0, 14, 99, "GGS Figure 5.11.8-2. UPC-A symbol with a four-column CC-B component **NOT SAME** as zint uses encodation '10', same if '0' forced", + /* 7*/ { BARCODE_UPCA_CC, GS1NOCHECK_MODE, 2, "61414101234", "[10]abcdefghijklmnopqrstuvwxyz", 0, 14, 99, 1, "GGS Figure 5.11.8-2. UPC-A symbol with a four-column CC-B component **NOT SAME** as zint uses encodation '10', same if '0' forced", "110001001010000001110010110110011111101100101001111010111000101011111101011010001110000011000100101" "111001001010110011100011000100010000100000101011111010111000111010010001011000111101110011100100101" "111101001011000001000111010111010000110100001011110010111011001111001101110101100000010011110100101" @@ -240,7 +241,7 @@ static void test_examples(int index, int generate, int debug) { "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" "000101010111100110010100011001100101000110011001010101110010110011011011001000010101110010000101010" }, - /* 8*/ { BARCODE_EANX_CC, -1, -1, "1234567", "[21]A12345678", 0, 8, 72, "GGS Figure 5.11.8-3. (24723:2010 Figure 4) EAN-8 symbol with a three-column CC-A", + /* 8*/ { BARCODE_EANX_CC, -1, -1, "1234567", "[21]A12345678", 0, 8, 72, 1, "GGS Figure 5.11.8-3. (24723:2010 Figure 4) EAN-8 symbol with a three-column CC-A", "101001111000001001010011000111110101110111101001101001111110011101001101" "111110010011100101010111000101110011011100001111110100011001011101011101" "110011001000010001010110000101000001000010001001000110110000011101011001" @@ -250,7 +251,7 @@ static void test_examples(int index, int generate, int debug) { "000010000000000000000000000000000000000000000000000000000000000000000010" "000010100110010010011011110101000110101010011101010000100010011100101010" }, - /* 9*/ { BARCODE_UPCE_CC, -1, 1, "0121230", "[15]021231", 0, 9, 55, "GGS Figure 5.11.8-4. (24723:2010 Figure 3) UPC-E symbol with a two-column CC-A", + /* 9*/ { BARCODE_UPCE_CC, -1, 1, "0121230", "[15]021231", 0, 9, 55, 1, "GGS Figure 5.11.8-4. (24723:2010 Figure 3) UPC-E symbol with a two-column CC-A", "1101100110111010011111010001100111100010110011110101001" "1101101110110010010000110001101000011011100011100101001" "1101101100111101001000000101000101111000010011101101001" @@ -261,14 +262,14 @@ static void test_examples(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010110011001001100110010011011011110101001110101010" }, - /* 10*/ { BARCODE_DBAR_OMN_CC, -1, 1, "0361234567890", "[11]990102", 0, 5, 100, "GGS Figure 5.11.8-5. (24723:2010 Figure 8) GS1 DataBar Omnidirectional symbol with a four-column CC-A", + /* 10*/ { BARCODE_DBAR_OMN_CC, -1, 1, "0361234567890", "[11]990102", 0, 5, 100, 1, "GGS Figure 5.11.8-5. (24723:2010 Figure 8) GS1 DataBar Omnidirectional symbol with a four-column CC-A", "1101101110110000101000110001111001010111100010011101001110011101100110011001001100111000110110001010" "1101101100110111011111001001000011010111111010011001001101000000111010010010111111001110110010001010" "1101101000110010010111110001011001101111000010011001101111010011110010010000011001011100111010001010" "0000000000010110001110100000000101001011010111111011001101010000011010000000010100101000110011110000" "0000010011101001110001001111111000010100101000000100110010101111100101111111100011010111001100001101" }, - /* 11*/ { BARCODE_DBAR_STK_CC, -1, 1, "0341234567890", "[17]010200", 0, 9, 56, "GGS Figure 5.11.8-6. (24723:2010 Figure 6) GS1 DataBar Stacked symbol with a two-column CC-A", + /* 11*/ { BARCODE_DBAR_STK_CC, -1, 1, "0341234567890", "[17]010200", 0, 9, 56, 1, "GGS Figure 5.11.8-6. (24723:2010 Figure 6) GS1 DataBar Stacked symbol with a two-column CC-A", "01101100110101110011100111101010000100001111011110101001" "01101101110110110001000010001110111101100100011100101001" "01101101100110100001111011001111110011010110011101101001" @@ -279,7 +280,7 @@ static void test_examples(int index, int generate, int debug) { "00000011010111101010000010101010101001001101010000000000" "10101100111000010101111111110111000110110011100101000000" }, - /* 12*/ { BARCODE_DBAR_LTD_CC, -1, 2, "0351234567890", "[91]abcdefghijklmnopqrstuv", 0, 17, 88, "GGS Figure 5.11.8-7. (24723:2010 Figure 7) GS1 DataBar Limited symbol with a three-column CC-B **NOT SAME** (using [91] not [21] as length > 20 max for [21])", + /* 12*/ { BARCODE_DBAR_LTD_CC, -1, 2, "0351234567890", "[91]abcdefghijklmnopqrstuv", 0, 17, 88, 1, "GGS Figure 5.11.8-7. (24723:2010 Figure 7) GS1 DataBar Limited symbol with a three-column CC-B **NOT SAME** (using [91] not [21] as length > 20 max for [21])", "1101110100111011111011101001011000100100000100001000101111101101001111011011101001000000" "1101100100111111010100111001011000110111101100001100101010000111100010011011001001000000" "1101100110100111100001001001010000110111011100101111001101110010001110011011001101000000" @@ -298,7 +299,7 @@ static void test_examples(int index, int generate, int debug) { "0000000000000111101110001101000111010101011010100110010111010010011100011010111000000000" "0000000000101000010001110010111000101010100101011001101000101101100011100101000010100000" }, - /* 13*/ { BARCODE_DBAR_LTD_CC, GS1NOCHECK_MODE, 2, "0351234567890", "[21]abcdefghijklmnopqrstuv", 0, 17, 88, "GGS Figure 5.11.8-7. (24723:2010 Figure 7) GS1 DataBar Limited symbol with a three-column CC-B, same", + /* 13*/ { BARCODE_DBAR_LTD_CC, GS1NOCHECK_MODE, 2, "0351234567890", "[21]abcdefghijklmnopqrstuv", 0, 17, 88, 1, "GGS Figure 5.11.8-7. (24723:2010 Figure 7) GS1 DataBar Limited symbol with a three-column CC-B, same", "1101110100111011111011101001011000100100000100001000101111010011011111011011101001000000" "1101100100101111100101110001011000110111110001010011001111101100001001011011001001000000" "1101100110101111000110110001010000110111011100101111001101110010001110011011001101000000" @@ -317,14 +318,14 @@ static void test_examples(int index, int generate, int debug) { "0000000000000111101110001101000111010101011010100110010111010010011100011010111000000000" "0000000000101000010001110010111000101010100101011001101000101101100011100101000010100000" }, - /* 14*/ { BARCODE_DBAR_EXP_CC, -1, 1, "[01]93712345678904[3103]001234", "[91]1A2B3C4D5E", 0, 5, 151, "GGS Figure 5.11.8-8. (24723:2010 Figure 9) GS1 DataBar Expanded symbol with a four-column CC-A, same, verified against BWIPP and tec-it", + /* 14*/ { BARCODE_DBAR_EXP_CC, -1, 1, "[01]93712345678904[3103]001234", "[91]1A2B3C4D5E", 0, 5, 151, 1, "GGS Figure 5.11.8-8. (24723:2010 Figure 9) GS1 DataBar Expanded symbol with a four-column CC-A, same, verified against BWIPP and tec-it", "0011011011101110011010011000011100011100110110100111010011010001000011000101101110011000001101100010100000000000000000000000000000000000000000000000000" "0011011011001101110111110100011010001111001100100110010010111111001001100100101111110011101100100010100000000000000000000000000000000000000000000000000" "0011011010001010111011111100011111011011110010100110011011000011010011110100001011001111101110100010100000000000000000000000000000000000000000000000000" "0000011011111011000100000000101001010000011101001110100110001100111101000010101000011010001110001000100001010000111001010000001010010111000110010110000" "0101100100000100111011111111000010101111100010110001011001110011000010111100000011100101110001110111011110101111000110001111110000101000111001101000010" }, - /* 15*/ { BARCODE_GS1_128_CC, -1, 1, "[01]03212345678906", "[21]A1B2C3D4E5F6G7H8", 0, 6, 145, "GGS Figure 5.11.8-9. (24723:2010 Figure 11) GS1-128 symbol with a four-column CC-A", + /* 15*/ { BARCODE_GS1_128_CC, -1, 1, "[01]03212345678906", "[21]A1B2C3D4E5F6G7H8", 0, 6, 145, 1, "GGS Figure 5.11.8-9. (24723:2010 Figure 11) GS1-128 symbol with a four-column CC-A", "0000000000000000000001101001000110100001000001101101011110111110010010001101010000010010000011101110100010000111011001010000000000000000000000000" "0000000000000000000001101011000110101111001100001111010001101100010010000101111000011001101011100101100001000110011001010000000000000000000000000" "0000000000000000000001101011100100011001100111101011000101110000010110000101001100110011110011011110011001110110111001010000000000000000000000000" @@ -332,7 +333,7 @@ static void test_examples(int index, int generate, int debug) { "0010110001100001010001001100100110110110011100100011011000100100010100010011101111010011001001000010110011011100010100001000100010010011100010100" "1101001110011110101110110011011001001001100011011100100111011011101011101100010000101100110110111101001100100011101011110111011101101100011101011" }, - /* 16*/ { BARCODE_DBAR_EXPSTK_CC, -1, 1, "[01]00012345678905[10]ABCDEF", "[21]12345678", 0, 13, 102, "24723:2010 Figure 10 — A GS1 DataBar Expanded Stacked Composite symbol (with CC-A) **NOT SAME** bottom 1st and top 2nd linear row separators different; zint same as BWIPP and hard to see how figure in standard could be correct", + /* 16*/ { BARCODE_DBAR_EXPSTK_CC, -1, 1, "[01]00012345678905[10]ABCDEF", "[21]12345678", 0, 13, 102, 1, "24723:2010 Figure 10 — A GS1 DataBar Expanded Stacked Composite symbol (with CC-A) **NOT SAME** bottom 1st and top 2nd linear row separators different; zint same as BWIPP and hard to see how figure in standard could be correct", "001101101110110100001000001101001100111011000010011101001000110011100110010100111011100000110110001010" "001101101100101111110100011001111101101000001010011001001011111011011110011010111000100000110010001010" "001101101000100101001111000001000111011101111010011001101011110110110000011010001011111000111010001010" @@ -347,7 +348,7 @@ static void test_examples(int index, int generate, int debug) { "000000111001111101010100001010100101011111000010100000000000000000000000000000000000000000000000000000" "010111000110000010100011110000001010100000111101000100000000000000000000000000000000000000000000000000" }, - /* 17*/ { BARCODE_GS1_128_CC, -1, 3, "[00]030123456789012340", "[02]13012345678909[37]24[10]1234567ABCDEFG", 0, 7, 174, "24723:2010 Figure 12 — A GS1-128 Composite symbol (with CC-C)", + /* 17*/ { BARCODE_GS1_128_CC, -1, 3, "[00]030123456789012340", "[02]13012345678909[37]24[10]1234567ABCDEFG", 0, 7, 174, 1, "24723:2010 Figure 12 — A GS1-128 Composite symbol (with CC-C)", "111111110101010001111010101111000011010111011110000111011111011101001000001000010001011110101100111110111010010001110001000100011000011011111010100111110111111101000101001000" "111111110101010001111110101000111010000100111101000110011110101111101111010001010000011111000110010100111001011100011001001001111101100011111101010111000111111101000101001000" "111111110101010001010100011110000011001111100001010110100010111110001110111101011100011000001101011110101111001000000101100001011111101011101010001111110111111101000101001000" @@ -356,7 +357,7 @@ static void test_examples(int index, int generate, int debug) { "000000000101100011000010100010010011001101101100111001100100110001001000101000100111011110100110010010000100110010011000100100010011101011101000010001000100001010011100010100" "000000011010011100111101011101101100110010010011000110011011001110110111010111011000100001011001101101111011001101100111011011101100010100010111101110111011110101100011101011" }, - /* 18*/ { BARCODE_DBAR_STK_CC, -1, 1, "12345678901231", "[91]12345678901234567890", 0, 10, 56, "Example with CC-A 2 cols, 6 rows", + /* 18*/ { BARCODE_DBAR_STK_CC, -1, 1, "12345678901231", "[91]12345678901234567890", 0, 10, 56, 1, "Example with CC-A 2 cols, 6 rows", "01100100010111100110100111001011101110001000011100101101" "01110100010110001011101000001000111010111110011000101101" "01110110010110101100111111001000111100001001011000101001" @@ -368,7 +369,7 @@ static void test_examples(int index, int generate, int debug) { "00000110001101011010101010101010101101010000100000000000" "10101001111010000101100000000111000010100111011101000000" }, - /* 19*/ { BARCODE_DBAR_OMNSTK_CC, -1, 1, "12345678901231", "[91]1234567890123456789012", 0, 13, 56, "Example with CC-A 2 cols, 7 rows", + /* 19*/ { BARCODE_DBAR_OMNSTK_CC, -1, 1, "12345678901231", "[91]1234567890123456789012", 0, 13, 56, 1, "Example with CC-A 2 cols, 7 rows", "01110110110100100011111001101110001011100110011100010101" "01110010110111000110101111101001111100110010011000010101" "01100010110111010110011110001110001110110011011000110101" @@ -383,7 +384,7 @@ static void test_examples(int index, int generate, int debug) { "00000110000101111010010101010000111101011000100000000000" "10101001111010000101100000000111000010100111011101000000" }, - /* 20*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[91]1234567890123456789012345678", 0, 12, 55, "Example with CC-A 3 cols, 8 rows", + /* 20*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[91]1234567890123456789012345678", 0, 12, 55, 1, "Example with CC-A 3 cols, 8 rows", "1110111010100100011111001101110001011100110011011011101" "1110011010111000110101111101001111100110010011011011001" "1111011010111010110011110001110001110110011011011010001" @@ -397,7 +398,7 @@ static void test_examples(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /* 21*/ { BARCODE_DBAR_STK_CC, -1, 1, "12345678901231", "[91]1234567890123456789012345678901", 0, 13, 56, "Example with CC-A 2 cols, 9 rows", + /* 21*/ { BARCODE_DBAR_STK_CC, -1, 1, "12345678901231", "[91]1234567890123456789012345678901", 0, 13, 56, 1, "Example with CC-A 2 cols, 9 rows", "01100011010100100011111001101110001011100110011010111101" "01100010010111000110101111101001111100110010011010011101" "01110010010111010110011110001110001110110011011010011001" @@ -412,7 +413,7 @@ static void test_examples(int index, int generate, int debug) { "00000110001101011010101010101010101101010000100000000000" "10101001111010000101100000000111000010100111011101000000" }, - /* 22*/ { BARCODE_DBAR_OMNSTK_CC, -1, 1, "12345678901231", "[91]1234567890123456789012345678901234567", 0, 16, 56, "Example with CC-A 2 cols, 10 rows", + /* 22*/ { BARCODE_DBAR_OMNSTK_CC, -1, 1, "12345678901231", "[91]1234567890123456789012345678901234567", 0, 16, 56, 1, "Example with CC-A 2 cols, 10 rows", "01101001000111100110100111001011101110001000011101001101" "01101011000110001011101000001000111010111110011101011101" "01101011100110101100111111001000111100001001011101011001" @@ -430,7 +431,7 @@ static void test_examples(int index, int generate, int debug) { "00000110000101111010010101010000111101011000100000000000" "10101001111010000101100000000111000010100111011101000000" }, - /* 23*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[91]123456789012345678901234567890123456789012334", 0, 16, 55, "Example with CC-A 2 cols, 12 rows", + /* 23*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[91]123456789012345678901234567890123456789012334", 0, 16, 55, 1, "Example with CC-A 2 cols, 12 rows", "1110010100100100011111001101110001011100110011011000101" "1110110100111000110101111101001111100110010011001000101" "1110100100111010110011110001110001110110011011101000101" @@ -448,7 +449,7 @@ static void test_examples(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /* 24*/ { BARCODE_DBAR_LTD_CC, -1, 1, "12345678901231", "[91]1234567890123456789012345", 0, 7, 79, "Example with CC-A 3 cols, 5 rows", + /* 24*/ { BARCODE_DBAR_LTD_CC, -1, 1, "12345678901231", "[91]1234567890123456789012345", 0, 7, 79, 1, "Example with CC-A 3 cols, 5 rows", "0111100110100111001001101000101110111000100001011101110010000011000010101000000" "0100011101011111001011101000111010110010000001100111101011111011000110101000000" "0101100111011111001011001000110110000010111101110001011111001011000100101000000" @@ -457,7 +458,7 @@ static void test_examples(int index, int generate, int debug) { "0000101110100000101011100000101010100011011010110101011010111110001110000000000" "0101010001011111010100011111010101011100100101001010100101000001110001110100000" }, - /* 25*/ { BARCODE_EANX_CC, -1, 1, "1234567", "[91]1234567890123456789012345678901", 0, 10, 72, "Example with CC-A 3 cols, 6 rows", + /* 25*/ { BARCODE_EANX_CC, -1, 1, "1234567", "[91]1234567890123456789012345678901", 0, 10, 72, 1, "Example with CC-A 3 cols, 6 rows", "100100011111001101011000100111000101110011001100010111010000011110100101" "100111110011001001011000110110101100111111001000111100001001011110101101" "111100100010111101010000110111011000001011001000010100001000011110101001" @@ -469,7 +470,7 @@ static void test_examples(int index, int generate, int debug) { "000010000000000000000000000000000000000000000000000000000000000000000010" "000010100110010010011011110101000110101010011101010000100010011100101010" }, - /* 26*/ { BARCODE_DBAR_LTD_CC, -1, 1, "12345678901231", "[91]1234567890123456789012345678901234567", 0, 9, 79, "Example with CC-A 3 cols, 7 rows", + /* 26*/ { BARCODE_DBAR_LTD_CC, -1, 1, "12345678901231", "[91]1234567890123456789012345678901234567", 0, 9, 79, 1, "Example with CC-A 3 cols, 7 rows", "0100010001101111101011010000110001101000111101110001101011111011001010001000000" "0110000010011011101001010000111010110011110001110001110110011011001011001000000" "0110010111101100001001011000100100001111000101110001011101100011001011101000000" @@ -480,7 +481,19 @@ static void test_examples(int index, int generate, int debug) { "0000101110100000101011100000101010100011011010110101011010111110001110000000000" "0101010001011111010100011111010101011100100101001010100101000001110001110100000" }, - /* 27*/ { BARCODE_UPCA_CC, -1, 1, "12345678901", "[91]12345678901234567890", 0, 7, 99, "Example with CC-A 4 cols, 3 rows", + /* 27*/ { BARCODE_DBAR_LTD_CC, -1, 1, "12345678901231", "[91]123456789012345678901234567890123456789012345", 0, 10, 79, 1, "Example with CC-A 3 cols, 8 rows", + "0100010001101111101011001110110001101000111101110001101011111011100101101000000" + "0110000010011011101001001110111010110011110001110001110110011011000101101000000" + "0110010111101100001001101110100100001111000101110001011101100011000101001000000" + "0110001010011111001000101110101111100001100101000111100010100011001101001000000" + "0101000001101100001000100110111001110001010001111011101100111011011101001000000" + "0110000010111000101000110110111110001010001101100000101111011011011001001000000" + "0110001101001111001000010110100000011010011101101011001111110011011001101000000" + "0111011000001001101000010010110111101110100001001100111000011011011011101000000" + "0000101110100000101011100000101010100011011010110101011010111110001110000000000" + "0101010001011111010100011111010101011100100101001010100101000001110001110100000" + }, + /* 28*/ { BARCODE_UPCA_CC, -1, 1, "12345678901", "[91]12345678901234567890", 0, 7, 99, 1, "Example with CC-A 4 cols, 3 rows", "110110111011110011010011100101110111000100001001110100101110111001000001100000100110111011011000101" "110110110011101011001000000110011110101111101001100100110010111101100001110010111011000011001000101" "110110100010011101000001100100111111011101001001100110111111001011010001000001100010111011101000101" @@ -489,7 +502,7 @@ static void test_examples(int index, int generate, int debug) { "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" "000101001100100100110111101010001101100010101111010101000100100100011101001110010110011011011001010" }, - /* 28*/ { BARCODE_DBAR_OMN_CC, -1, 1, "12345678901231", "[91]1234567890123456789012345678", 0, 6, 100, "Example with CC-A 4 cols, 4 rows", + /* 29*/ { BARCODE_DBAR_OMN_CC, -1, 1, "12345678901231", "[91]1234567890123456789012345678", 0, 6, 100, 1, "Example with CC-A 4 cols, 4 rows", "1101001000111100110100111001011101110001000010010001101011101110010000011000001001101110111011001010" "1101011000111010110010000001100111101011111010010000101100101111011000011011011110000100110011001010" "1101011100100011111011001001000000100101111010110000101100011111010010011000110101111000110111001010" @@ -497,7 +510,7 @@ static void test_examples(int index, int generate, int debug) { "0000000001100011000110101000000001001011011100001001010110000101111010010101010000111101011000100000" "0000010010011100111001000111111110010100100011110110101001111010000101100000000111000010100111011101" }, - /* 29*/ { BARCODE_DBAR_EXP_CC, -1, 1, "[01]12345678901231", "[91]1234567890123456789012345678901234567", 0, 7, 134, "Example with CC-A 4 cols, 5 rows", + /* 30*/ { BARCODE_DBAR_EXP_CC, -1, 1, "[01]12345678901231", "[91]1234567890123456789012345678901234567", 0, 7, 134, 1, "Example with CC-A 4 cols, 5 rows", "00110101111011110011010011100101110111000100001011100010101110111001000001100000100110111011011110101000000000000000000000000000000000" "00110100111011101011001000000110011110101111101011100110110010111101100001001000011110001011001110101000000000000000000000000000000000" "00110100110010001101001110000110001010011111001011100100101111100001100101000111100010100011101110101000000000000000000000000000000000" @@ -506,7 +519,7 @@ static void test_examples(int index, int generate, int debug) { "00001011100111110001000000001010010011000000101001100011100100111011010000101010000111000011110101001101011110000010010100000010100000" "01010100011000001110111111110000101100111111010110011100011011000100101111000000111000111100001010110010100001111101100011111100001010" }, - /* 30*/ { BARCODE_DBAR_EXPSTK_CC, -1, 1, "[01]12345678901231", "[91]123456789012345678901234567890123456789012345", 0, 12, 102, "Example with CC-A 4 cols, 6 rows", + /* 31*/ { BARCODE_DBAR_EXPSTK_CC, -1, 1, "[01]12345678901231", "[91]123456789012345678901234567890123456789012345", 0, 12, 102, 1, "Example with CC-A 4 cols, 6 rows", "001100010110111100110100111001011101110001000010011100101011101110010000011000001001101110110101111010" "001100010100111010110010000001100111101011111010011110101100101111011000010010000111100010110100111010" "001100110100100011010011100001100010100111110010111110101011111000011001010001111000101000110100110010" @@ -520,7 +533,7 @@ static void test_examples(int index, int generate, int debug) { "000000101111000001001010000001010010111100111110110000000000000000000000000000000000000000000000000000" "001001010000111110110001111110000101000011000001001010000000000000000000000000000000000000000000000000" }, - /* 31*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[91]123456789012345678901234567890123456789012345678901234", 0, 11, 99, "Example with CC-A 4 cols, 7 rows", + /* 32*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[91]123456789012345678901234567890123456789012345678901234", 0, 11, 99, 1, "Example with CC-A 4 cols, 7 rows", "110010111010010001111100110111000101110011001000011010110001011101000001000111010111110011011011001" "110010011011010110011111100100011110000100101000111010101100111011111001011100010011000011011010001" "110011011011011101110011000101100011010000001000110010111101111001001001100001101100011011010010001" @@ -533,7 +546,7 @@ static void test_examples(int index, int generate, int debug) { "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" "000101001001101111010011101011000100001010010001010101001000111010011100101100110110110010010001010" }, - /* 32*/ { BARCODE_UPCE_CC, -1, 2, "1234567", "[91]1234567890123", 0, 12, 55, "Example with CC-B 2 cols, 8 rows", + /* 33*/ { BARCODE_UPCE_CC, -1, 2, "1234567", "[91]1234567890123", 0, 12, 55, 1, "Example with CC-B 2 cols, 8 rows", "1100100010111011111011101001000001000010001011001000101" "1110100010110100001111011001100101110000100011101000101" "1110110010101100100111000001011111011000001011101100101" @@ -547,7 +560,7 @@ static void test_examples(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /* 33*/ { BARCODE_DBAR_STK_CC, -1, 2, "12345678901231", "[91]123456789012345678901234567", 0, 15, 56, "Example with CC-B 2 cols, 11 rows", + /* 34*/ { BARCODE_DBAR_STK_CC, -1, 2, "12345678901231", "[91]123456789012345678901234567", 0, 15, 56, 1, "Example with CC-B 2 cols, 11 rows", "01100100010111011111011101001000001000010001011100110101" "01110100010110100001111011001100101110000100011110110101" "01110110010101100100111000001011111011000001011110010101" @@ -564,7 +577,7 @@ static void test_examples(int index, int generate, int debug) { "00000110001101011010101010101010101101010000100000000000" "10101001111010000101100000000111000010100111011101000000" }, - /* 34*/ { BARCODE_DBAR_OMNSTK_CC, -1, 2, "12345678901231", "[91]1234567890123456789012345678901234567890123", 0, 20, 56, "Example with CC-B 2 cols, 14 rows", + /* 35*/ { BARCODE_DBAR_OMNSTK_CC, -1, 2, "12345678901231", "[91]1234567890123456789012345678901234567890123", 0, 20, 56, 1, "Example with CC-B 2 cols, 14 rows", "01110111010100011111010011101101111110101110011101110101" "01110011010100100101111000001001000100001111011100110101" "01111011010101101111001110001111011110101000011110110101" @@ -586,7 +599,7 @@ static void test_examples(int index, int generate, int debug) { "00000110000101111010010101010000111101011000100000000000" "10101001111010000101100000000111000010100111011101000000" }, - /* 35*/ { BARCODE_UPCE_CC, -1, 2, "1234567", "[91]123456789012345678901234567890123456789012345678901234567", 0, 21, 55, "Example with CC-B 2 cols, 17 rows", + /* 36*/ { BARCODE_UPCE_CC, -1, 2, "1234567", "[91]123456789012345678901234567890123456789012345678901234567", 0, 21, 55, 1, "Example with CC-B 2 cols, 17 rows", "1100110100100000011100101101100111111011001011001101001" "1101110100111110110100111101110110010000110011011101001" "1101100100111001011001000001110001101110100011011001001" @@ -609,7 +622,7 @@ static void test_examples(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /* 36*/ { BARCODE_DBAR_STK_CC, -1, 2, "12345678901231", "[91]1234567890123456789012345678901234567890123456789012345678901234567890", 0, 24, 56, "Example with CC-B 2 cols, 20 rows", + /* 37*/ { BARCODE_DBAR_STK_CC, -1, 2, "12345678901231", "[91]1234567890123456789012345678901234567890123456789012345678901234567890", 0, 24, 56, 1, "Example with CC-B 2 cols, 20 rows", "01111010100111011111011101001000001000010001011110101001" "01110010100110100001111011001100101110000100011100101001" "01110110100101100100111000001011111011000001011101101001" @@ -635,7 +648,7 @@ static void test_examples(int index, int generate, int debug) { "00000110001101011010101010101010101101010000100000000000" "10101001111010000101100000000111000010100111011101000000" }, - /* 37*/ { BARCODE_DBAR_OMNSTK_CC, -1, 2, "12345678901231", "[91]1234567890123456789012345678901234567890123456789012345678901234567890123456789012", 0, 29, 56, "Example with CC-B 2 cols, 23 rows", + /* 38*/ { BARCODE_DBAR_OMNSTK_CC, -1, 2, "12345678901231", "[91]1234567890123456789012345678901234567890123456789012345678901234567890123456789012", 0, 29, 56, 1, "Example with CC-B 2 cols, 23 rows", "01110011010100000011100101101100111111011001011110100101" "01111011010111110110100111101110110010000110011110101101" "01111001010111001011001000001110001101110100011110101001" @@ -666,7 +679,7 @@ static void test_examples(int index, int generate, int debug) { "00000110000101111010010101010000111101011000100000000000" "10101001111010000101100000000111000010100111011101000000" }, - /* 38*/ { BARCODE_UPCE_CC, -1, 2, "1234567", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, 30, 55, "Example with CC-B 2 cols, 26 rows", + /* 39*/ { BARCODE_UPCE_CC, -1, 2, "1234567", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, 30, 55, 1, "Example with CC-B 2 cols, 26 rows", "1100101000100000011100101101000001111001010011000101001" "1100101100111110110100111101110110010000110011001101001" "1100101110111001011001000001110001101110100011011101001" @@ -698,7 +711,7 @@ static void test_examples(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /* 39*/ { BARCODE_DBAR_LTD_CC, -1, 2, "12345678901231", "[91]123456", 0, 8, 88, "Example with CC-B 3 cols, 6 rows", + /* 40*/ { BARCODE_DBAR_LTD_CC, -1, 2, "12345678901231", "[91]123456", 0, 8, 88, 1, "Example with CC-B 3 cols, 6 rows", "1100100010111011111011101001011001110100000100001000101110100001000111011001000101000000" "1110100010111010111101110001001001110101000011110010001101011100000010011101000101000000" "1110110010110011010000111101001101110110111110100010001011001001110000011101100101000000" @@ -708,7 +721,7 @@ static void test_examples(int index, int generate, int debug) { "0000000000000101110100000101011100000101010100011011010110101011010111110001110000000000" "0000000000101010001011111010100011111010101011100100101001010100101000001110001110100000" }, - /* 40*/ { BARCODE_EANX_CC, -1, 2, "1234567", "[91]123456789012345678", 0, 12, 82, "Example with CC-B 3 cols, 8 rows", + /* 41*/ { BARCODE_EANX_CC, -1, 2, "1234567", "[91]123456789012345678", 0, 12, 82, 1, "Example with CC-B 3 cols, 8 rows", "1100111010111011111011101001000010110100000100001000101111101101001111011001110101" "1110111010110010111000010001000010010111001011001000001110001101110100011101110101" "1110011010110111111001101001000011010101000101111000001100100110111111011100110101" @@ -722,7 +735,7 @@ static void test_examples(int index, int generate, int debug) { "0000000000000010000000000000000000000000000000000000000000000000000000000000000010" "0000000000000010100110010010011011110101000110101010011101010000100010011100101010" }, - /* 41*/ { BARCODE_DBAR_LTD_CC, -1, 2, "12345678901231", "[91]12345678901234567890123456789", 0, 12, 88, "Example with CC-B 3 cols, 10 rows", + /* 42*/ { BARCODE_DBAR_LTD_CC, -1, 2, "12345678901231", "[91]12345678901234567890123456789", 0, 12, 88, 1, "Example with CC-B 3 cols, 10 rows", "1100010010100000011100101101001111010110011111101100101001001011110000011000100101000000" "1110010010111011001000011001011111010101101111001110001111011110101000011100100101000000" "1111010010110001110111110101011110010111010001110001101110110011110011011110100101000000" @@ -736,7 +749,7 @@ static void test_examples(int index, int generate, int debug) { "0000000000000101110100000101011100000101010100011011010110101011010111110001110000000000" "0000000000101010001011111010100011111010101011100100101001010100101000001110001110100000" }, - /* 42*/ { BARCODE_EANX_CC, -1, 2, "1234567", "[91]12345678901234567890123456789012345678901", 0, 16, 82, "Example with CC-B 3 cols, 12 rows", + /* 43*/ { BARCODE_EANX_CC, -1, 2, "1234567", "[91]12345678901234567890123456789012345678901", 0, 16, 82, 1, "Example with CC-B 3 cols, 12 rows", "1110101100111011111011101001011000010100000100001000101111101101001111011101011001" "1110101000110010111000010001011100010111001011001000001110001101110100011101010001" "1100101000110111111001101001011100110110010110011111101100110010001111011001010001" @@ -754,7 +767,7 @@ static void test_examples(int index, int generate, int debug) { "0000000000000010000000000000000000000000000000000000000000000000000000000000000010" "0000000000000010100110010010011011110101000110101010011101010000100010011100101010" }, - /* 43*/ { BARCODE_DBAR_LTD_CC, -1, 2, "12345678901231", "[91]123456789012345678901234567890123456789012345678901234567", 0, 17, 88, "Example with CC-B 3 cols, 15 rows", + /* 44*/ { BARCODE_DBAR_LTD_CC, -1, 2, "12345678901231", "[91]123456789012345678901234567890123456789012345678901234567", 0, 17, 88, 1, "Example with CC-B 3 cols, 15 rows", "1101110100111011111011101001011000100100000100001000101111101101001111011011101001000000" "1101100100110010111000010001011000110111001011001000001110001101110100011011001001000000" "1101100110110111111001101001010000110110010110011111101100110010001111011011001101000000" @@ -773,7 +786,7 @@ static void test_examples(int index, int generate, int debug) { "0000000000000101110100000101011100000101010100011011010110101011010111110001110000000000" "0000000000101010001011111010100011111010101011100100101001010100101000001110001110100000" }, - /* 44*/ { BARCODE_EANX_CC, -1, 2, "1234567", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]12345678901234567890123", 0, 30, 82, "Example with CC-B 3 cols, 26 rows", + /* 45*/ { BARCODE_EANX_CC, -1, 2, "1234567", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]12345678901234567890123", 0, 30, 82, 1, "Example with CC-B 3 cols, 26 rows", "1100100010111011111011101001000011010100000100001000101111101101001111011110100101" "1110100010110010111000010001000111010111001011001000001110001101110100011110101101" "1110110010110111111001101001000110010110010110011111101100110010001111011110101001" @@ -805,7 +818,85 @@ static void test_examples(int index, int generate, int debug) { "0000000000000010000000000000000000000000000000000000000000000000000000000000000010" "0000000000000010100110010010011011110101000110101010011101010000100010011100101010" }, - /* 45*/ { BARCODE_DBAR_LTD_CC, -1, 2, "12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]1234567890123456789012345678901", 0, 46, 88, "Example with CC-B 3 cols, 44 rows", + /* 46*/ { BARCODE_DBAR_LTD_CC, -1, 2, "12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234", 0, 34, 88, 1, "Example with CC-B 3 cols, 32 rows", + "1110110100100000011100101101011101100110011111101100101001001011110000011011101001000000" + "1110100100111011001000011001001101100101101111001110001111011110101000011011001001000000" + "1110100110110001110111110101000101100111010001110001101110110011110011011011001101000000" + "1110101110100101000011110001000101000101100010111000001111101001110100011011011101000000" + "1110101100101100011000010001001101000110011011011000001111101111001011011011011001000000" + "1110101000100101111101100001011101000111010000110010001110110111000100011011010001000000" + "1100101000101110110000111001011001000101111011001100001000011101000110011010010001000000" + "1100101100100001001000010001011001100111110110100111101011100111001000011010110001000000" + "1100101110110101110000001001011000100111100100110001101001000011110100011010111001000000" + "1100100110101101110111110001011000110111010100011111101000110000101110011010111101000000" + "1100110110111101111001000101010000110111001100010001101101000101100000011010011101000000" + "1110110110111001101110010001010001110100110011111000101010111100001000011010011001000000" + "1110010110110111010001110001010001100101100011001111001000110010001110011010001001000000" + "1100010110111101111001010001010011100110111001101000001000011011101100011010001101000000" + "1100010100111010000111011001010011000100111010011111001100011011110100011010000101000000" + "1100110100100011110110001101010111000110011111010000101100100111111001011011000101000000" + "1101110100100010111101111001010110000101000011100011101000110000110100011001000101000000" + "1101100100111110001100101001010010000110101111101110001110010011110111011101000101000000" + "1101100110101111101100000101011010000100000011001011101000011011011110011101100101000000" + "1101101110110101000011000001001010000111011110011001001101110110010000011001100101000000" + "1101101100111110110100010001001011000111000100110100001011110010111100011011100101000000" + "1101101000100111111001110101001011100111011100100111101000101000001111011011110101000000" + "1101001000110000101110111101011011100111000111011011001101001001100000011001110101000000" + "1101011000100101111010000001011011110100000010111101001100110111100001011101110101000000" + "1101011100110011000100111101011001110111110100111001001011111011000010011100110101000000" + "1101011110110000110000101001001001110100000101110111001100010011101111011110110101000000" + "1101001110111111011100010101001101110110001101111010001010011111000110011110010101000000" + "1101001100100100010000111101000101110101111101100100001001101101111000011100010101000000" + "1101000100111011010011000001000100110110010010011000001001000110000110011000010101000000" + "1101000110111110011101101001000110110110000010011100101010011110100000011000110101000000" + "1101000010110010001011111001000010110101111000100100001100111101000110011000100101000000" + "1101100010111110010101111101000010010100111001110100001110010011001111011100100101000000" + "0000000000000101110100000101011100000101010100011011010110101011010111110001110000000000" + "0000000000101010001011111010100011111010101011100100101001010100101000001110001110100000" + }, + /* 47*/ { BARCODE_DBAR_LTD_CC, -1, 2, "12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]1234567890123456789012345678901234567890123456789012345678", 0, 40, 88, 1, "Example with CC-B 3 cols, 38 rows", + "1100010010100000011100101101000101100110011111101100101001001011110000011010011101000000" + "1110010010111011001000011001000101000101101111001110001111011110101000011010011001000000" + "1111010010110001110111110101001101000111010001110001101110110011110011011010001001000000" + "1111010110100101000011110001011101000101100010111000001111101001110100011010001101000000" + "1111010100101100011000010001011001000110011011011000001111101111001011011010000101000000" + "1110010100100101111101100001011001100111010000110010001110110111000100011011000101000000" + "1110110100101110110000111001011000100101111011001100001000011101000110011001000101000000" + "1110100100100001001000010001011000110111110110100111101011100111001000011101000101000000" + "1110100110110101110000001001010000110111100100110001101001000011110100011101100101000000" + "1110101110101101110111110001010001110111010100011111101000110000101110011001100101000000" + "1110101100111101111001000101010001100111001100010001101101000101100000011011100101000000" + "1110101000111001101110010001010011100100110011111000101010111100001000011011110101000000" + "1100101000110111010001110001010011000101100011001111001000110010001110011001110101000000" + "1100101100111101111001010001010111000110111001101000001000011011101100011101110101000000" + "1100101110111010000111011001010110000100111010011111001100011011110100011100110101000000" + "1100100110100011110100010001010010000101111110011100101101001000011111011110110101000000" + "1100110110110111011000100001011010000111000111001010001001000111011100011110010101000000" + "1110110110100000100011110101001010000110101110000010001011110001011110011100010101000000" + "1110010110110001110100111001001011000110001100010111101111011101011111011000010101000000" + "1100010110111011001000110001001011100111101011011111001110001010001110011000110101000000" + "1100010100111010011010000001011011100110000101110001001111001010000001011000100101000000" + "1100110100100010001001111001011011110110100000101111101110001111010111011100100101000000" + "1101110100110111101110001001011001110101011111011111001101010000110000011110100101000000" + "1101100100111101001010000001001001110111000100001101001100000100111001011110101101000000" + "1101100110100110110111100001001101110110111110001000101100111000100111011110101001000000" + "1101101110110100001001100001000101110101000001000100001000001010100000011100101001000000" + "1101101100111101000100000101000100110100111011111100101110101111101111011101101001000000" + "1101101000110111010000011101000110110100000010101111001000111001101110011101001001000000" + "1101001000111110110010111101000010110101101100010000001100101100111000011101001101000000" + "1101011000111000010011010001000010010110001100111101001100000101110001011101011101000000" + "1101011100100111100000100101000011010101110011001110001001111100110100011101011001000000" + "1101011110111000101011100001000111010110000101011000001110010100111000011101010001000000" + "1101001110100100011111001101000110010110110011110001001110110011100100011001010001000000" + "1101001100110111100001001101000100010110010010111110001111110010110010011001011001000000" + "1101000100100000100001000101001100010110100100000110001101110110010000011001011101000000" + "1101000110111100001001000101001110010110110111110011001000101111010000011001001101000000" + "1101000010100000101000111101001111010100110011011110001011111001110011011001101101000000" + "1101100010100110000110100001011111010110010000001011001100100011001110011101101101000000" + "0000000000000101110100000101011100000101010100011011010110101011010111110001110000000000" + "0000000000101010001011111010100011111010101011100100101001010100101000001110001110100000" + }, + /* 48*/ { BARCODE_DBAR_LTD_CC, -1, 2, "12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]1234567890123456789012345678901", 0, 46, 88, 1, "Example with CC-B 3 cols, 44 rows", "1100100010111011111011101001011000010110001110001101001111101101001111011010001001000000" "1110100010110010111000010001011100010111001011001000001110001101110100011010001101000000" "1110110010110111111001101001011100110110010110011111101100110010001111011010000101000000" @@ -853,7 +944,7 @@ static void test_examples(int index, int generate, int debug) { "0000000000000101110100000101011100000101010100011011010110101011010111110001110000000000" "0000000000101010001011111010100011111010101011100100101001010100101000001110001110100000" }, - /* 46*/ { BARCODE_UPCA_CC, -1, 2, "12345678901", "[91]1234567890123", 0, 8, 99, "Example with CC-B 4 cols, 4 rows", + /* 49*/ { BARCODE_UPCA_CC, -1, 2, "12345678901", "[91]1234567890123", 0, 8, 99, 1, "Example with CC-B 4 cols, 4 rows", "110100111010001111101001110110111111010111001001110110110100001111011001100101110000100011010010001" "110100110010110010011100000101111101100000101001110100110111111001101001110100111110010011010110001" "110100010011100110100001100110010000010110001001100100100111101111010001110001110100010011010111001" @@ -863,7 +954,7 @@ static void test_examples(int index, int generate, int debug) { "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" "000101001100100100110111101010001101100010101111010101000100100100011101001110010110011011011001010" }, - /* 47*/ { BARCODE_EANX_CC, -1, 2, "123456789012", "[91]1234567890123456789012345", 0, 10, 99, "Example with CC-B 4 cols, 6 rows", + /* 50*/ { BARCODE_EANX_CC, -1, 2, "123456789012", "[91]1234567890123456789012345", 0, 10, 99, 1, "Example with CC-B 4 cols, 6 rows", "110010001011101111101110100110001110001101001011001110111110110100111101110110010000110011001000101" "111010001011100101100100000111000110111010001001001110110001110111110101110100011100011011101000101" "111011001011001100100011110100101000011110001001101110101100010111000001010011000111110011101100101" @@ -875,7 +966,7 @@ static void test_examples(int index, int generate, int debug) { "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" "000101001001101111010011101011000100001010010001010101001000111010011100101100110110110010010001010" }, - /* 48*/ { BARCODE_GS1_128_CC, -1, 2, "[01]12345678901231", "[91]12345678901234567890123456789012345678901", 0, 10, 145, "Example with CC-B 4 cols, 8 rows", + /* 51*/ { BARCODE_GS1_128_CC, -1, 2, "[01]12345678901231", "[91]12345678901234567890123456789012345678901", 0, 10, 145, 1, "Example with CC-B 4 cols, 8 rows", "0000000000000000000001100111010111011111011101001000001000010001010000101101111101101001111011101100100001100110011101010000000000000000000000000" "0000000000000000000001110111010111001011001000001110001101110100010000100101100011101111101011101000111000110111011101010000000000000000000000000" "0000000000000000000001110011010110011001000111101001010000111100010000110101011000101110000011111010011101000111001101010000000000000000000000000" @@ -887,7 +978,7 @@ static void test_examples(int index, int generate, int debug) { "0010110001100001010001001100100110100110001101110100111000111010010011110101100100001001010011000110010011100100010100001000101001110011100010100" "1101001110011110101110110011011001011001110010001011000111000101101100001010011011110110101100111001101100011011101011110111010110001100011101011" }, - /* 49*/ { BARCODE_DBAR_OMN_CC, -1, 2, "12345678901231", "[91]123456789012345678901234567890123456789012345678901234567", 0, 12, 100, "Example with CC-B 4 cols, 10 rows", + /* 52*/ { BARCODE_DBAR_OMN_CC, -1, 2, "12345678901231", "[91]123456789012345678901234567890123456789012345678901234567", 0, 12, 100, 1, "Example with CC-B 4 cols, 10 rows", "1100010010100000011100101101100111111011001010011110101001001011110000010010001000011110110001001010" "1110010010101101111001110001111011110101000010111110101100001100101000011111001010111110111001001010" "1111010010111011001111001101110100011000010010111100101001011111011000011111101001011100111101001010" @@ -901,7 +992,7 @@ static void test_examples(int index, int generate, int debug) { "0000000001100011000110101000000001001011011100001001010110000101111010010101010000111101011000100000" "0000010010011100111001000111111110010100100011110110101001111010000101100000000111000010100111011101" }, - /* 50*/ { BARCODE_DBAR_EXP_CC, -1, 2, "[01]12345678901231", "[91]1234567890123456789012345678901234567890123456789012345678901234567890123", 0, 14, 134, "Example with CC-B 4 cols, 12 rows", + /* 53*/ { BARCODE_DBAR_EXP_CC, -1, 2, "[01]12345678901231", "[91]1234567890123456789012345678901234567890123456789012345678901234567890123", 0, 14, 134, 1, "Example with CC-B 4 cols, 12 rows", "00111010110011101111101110100100000100001000101011000010111110110100111101110110010000110011101011001000000000000000000000000000000000" "00111010100011100101100100000111000110111010001011100010110001110111110101110100011100011011101010001000000000000000000000000000000000" "00110010100011001100100011110100101000011110001011100110101100010111000001111101001110100011001010001000000000000000000000000000000000" @@ -917,7 +1008,28 @@ static void test_examples(int index, int generate, int debug) { "00001011100111110001000000001010010011000000101001100011100100111011010000101010000111000011110101001101011110000010010100000010100000" "01010100011000001110111111110000101100111111010110011100011011000100101111000000111000111100001010110010100001111101100011111100001010" }, - /* 51*/ { BARCODE_DBAR_EXPSTK_CC, -1, 2, "[01]12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]1234567890123456789012345678901234567890123456", 0, 26, 102, "Example with CC-B 4 cols, 20 rows", + /* 54*/ { BARCODE_UPCA_CC, -1, 2, "123456789012", "[91]12345678901234567890123456789012345678901234567890123456789012345678901234", 0, 19, 99, 1, "Example with CC-B 4 cols, 15 rows", + "110111010011101111101110100100000100001000101011000100111110110100111101110110010000110011011101001" + "110110010011100101100100000111000110111010001011000110110001110111110101110100011100011011011001001" + "110110011011001100100011110100101000011110001010000110101100010111000001111101001110100011011001101" + "110110111010110001100001000110011011011000001010001110111110111100101101100100010000110011011011101" + "110110110011101000011001000111011011100010001010001100110110011110000101001101111101000011011011001" + "110110100010000111010001100110001110101110001010011100100100101111000001100111001011100011011010001" + "110100100011110100100111100100100001001000001010011000111001101110111101011011000100000011010010001" + "110101100011111101010001110111100010001101101010111000111011000111000101111000001001010011010110001" + "110101110011001001111110010100010001001111001010110000110100000101111101110001111010111011010111001" + "110101111011011110111000100101011111011111001010010000110101000011000001011000111011000011010111101" + "110100111011001000011110110110100000011100101011010000110000011011110101000100011110100011010011101" + "110100110011110100011110010110111111011001001001010000111110101111001101100110100011110011010011001" + "110100010011011100011000010111011101110011101001011000100110111011000001001110111101100011010001001" + "110100011011101100001110100100001111010111101001011100111101010000010001111100011010100011010001101" + "110100001011010011001111110111001011111101101011011100101001100111110001011100110001110011010000101" + "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" + "001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001" + "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" + "000101001100100100110111101010001101100010101111010101000100100100011101001110010110011011011001010" + }, + /* 55*/ { BARCODE_DBAR_EXPSTK_CC, -1, 2, "[01]12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]1234567890123456789012345678901234567890123456", 0, 26, 102, 1, "Example with CC-B 4 cols, 20 rows", "001100100010111011111011101001000001000010001010111100101111101101001111011101100100001100111001011010" "001110100010111001011001000001110001101110100010111101101100011101111101011101000111000110110001011010" "001110110010110011001000111101001010000111100010011101101011000101110000011111010011101000110001010010" @@ -945,7 +1057,121 @@ static void test_examples(int index, int generate, int debug) { "000000101111000001001010000001010010111100111110110000000000000000000000000000000000000000000000000000" "001001010000111110110001111110000101000011000001001010000000000000000000000000000000000000000000000000" }, - /* 52*/ { BARCODE_UPCA_CC, -1, 2, "12345678901", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567", 0, 48, 99, "Example with CC-B 4 cols, 44 rows", + /* 56*/ { BARCODE_UPCA_CC, -1, 2, "12345678901", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]12345678901234567890123456789012345678901234567", 0, 30, 99, 1, "Example with CC-B 4 cols, 26 rows", + "110010001011101111101110100110001110001101001000011010111110110100111101110110010000110011110100101" + "111010001011100101100100000111000110111010001000111010110001110111110101110100011100011011110101101" + "111011001011001100100011110100101000011110001000110010101100010111000001111101001110100011110101001" + "110011001010110001100001000110011011011000001000100010111110111100101101100100010000110011100101001" + "110111001011101000011001000111011011100010001001100010110110011110000101001101111101000011101101001" + "110111101010000111010001100110001110101110001001110010100100101111000001100111001011100011101001001" + "110011101011110100100111100100100001001000001001111010111001101110111101011011000100000011101001101" + "111011101011111101010001110111001100111010001011111010101111010111100001111000100110110011101011101" + "111001101011111010011100100101111010010000001011110010110111100001011001110100101111110011101011001" + "111101101011000101001100000110010001100011101011110110111011100100000101111011110010100011101010001" + "111100101011111001101100110100011101001111101001110110111010000111011001001110100111110011001010001" + "111000101010001110001000110100011110100010001001110100101111110011100101101001000011111011001011001" + "110000101011011101100010000111000111001010001001100100100100011101110001100011101101000011001011101" + "110001101011010111000001000101111001101111101001100110111000101101000001111010001010000011001001101" + "110001001010111011001110000101000010111100001001000110100011101000110001000110011011110011001101101" + "111001001010000010011000110100010100000100001001000010101011100011100001000010110000011011101101101" + "111101001011111001000100110111000000100110101011000010110010011100000101111001010000001011100101101" + "111101011010001000100111100110100000101111101011100010111000111101011101101111100110011011000101101" + "111101010010110001111011100110001100101000001011100110101000011100011101100001001000011011000101001" + "111001010011010001111000110110101111100011101011100100111010001100000101000000101111001011001101001" + "111011010010011100010110000101111110011101001011101100110111110000101001100011110100110011011101001" + "111010010010000100110000110110100000100110001001101100100010111001110001000001001110111011011001001" + "111010011011100001001101000100001111010111101000101100101111110011011101100111101011111011011001101" + "111010111010011100011011100101101000000111001000101000100010110001111101100111110010010011011011101" + "111010110011000011011101110100010100001000001001101000101110011110110001010001100011000011011011001" + "111010100011100001001100100100101111001000001011101000111001100111001001101000011110110011011010001" + "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" + "001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001" + "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" + "000101001100100100110111101010001101100010101111010101000100100100011101001110010110011011011001010" + }, + /* 57*/ { BARCODE_DBAR_EXP_CC, -1, 2, "[01]12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]1234", 0, 34, 134, 1, "Example with CC-B 4 cols, 32 rows", + "00111011010010000001110010110110011111101100101011101100100100101111000001001000100001111011011101001000000000000000000000000000000000" + "00111010010010110111100111000111101111010100001001101100110000110010100001111100101011111011011001001000000000000000000000000000000000" + "00111010011011101100111100110111010001100001001000101100100101111101100001111110100101110011011001101000000000000000000000000000000000" + "00111010111010001011000111110101110010000110001000101000100111100000100101011000101110000011011011101000000000000000000000000000000000" + "00111010110010010111000111000110010000100110001001101000100010110000011001000100001000001011011011001000000000000000000000000000000000" + "00111010100011111000110001010110111001111101001011101000110100001111011001100110111100010011011010001000000000000000000000000000000000" + "00110010100011110101111100110100010100011110001011001000100110001100111101011011101111100011010010001000000000000000000000000000000000" + "00110010110011101010001110000101110001111011001011001100111101111001000101110011000100011011010110001000000000000000000000000000000000" + "00110010111011111101001001110111001101110010001011000100100110011111000101010111100001000011010111001000000000000000000000000000000000" + "00110010011011011101000111000101100011001111001011000110100011001000111001011111000011010011010111101000000000000000000000000000000000" + "00110011011011011100110100000100001101110110001010000110100101111101111101110111101110011011010011101000000000000000000000000000000000" + "00111011011011000110111101000110000100001110101010001110100011100101111101010111110011000011010011001000000000000000000000000000000000" + "00111001011010111000001101110100001111011011001010001100101100011101111101100111110001001011010001001000000000000000000000000000000000" + "00110001011011010010011000000110011100001101001010011100110001101100001101011100111100110011010001101000000000000000000000000000000000" + "00110001010011111011001100110111001011100110001010011000111000001001100101101000011100010011010000101000000000000000000000000000000000" + "00110011010010001000001011110100011010000011101010111000111111010011001001111101001110001011011000101000000000000000000000000000000000" + "00110111010010001001110111000101100000110010001010110000111011010000011001101101101100000011001000101000000000000000000000000000000000" + "00110110010011101000011010000111001001101000001010010000110011100111110101111001000110011011101000101000000000000000000000000000000000" + "00110110011011100100111110100111100100111101001011010000111011100101111001100101111110001011101100101000000000000000000000000000000000" + "00110110111011011110111001000111010110111100001001010000100011000111001101110110101100000011001100101000000000000000000000000000000000" + "00110110110011011000011110010100010001111101101001011000101001111000010001001100011111010011011100101000000000000000000000000000000000" + "00110110100010001100110111100101111110111000101001011100100110010111000001101011001111110011011110101000000000000000000000000000000000" + "00110100100010100000100001000101011111011111001011011100111011100010100001100100110011100011001110101000000000000000000000000000000000" + "00110101100011111000011010010100100111100000101011011110111001001100000101011000111110010011101110101000000000000000000000000000000000" + "00110101110010000111100001010100011000100011101011001110111101011111011001011110001000010011100110101000000000000000000000000000000000" + "00110101111011110110100011100101001111011110001001001110100100001000010001100100111001111011110110101000000000000000000000000000000000" + "00110100111011111010010001100111000101101000001001101110110011000111101001111100011010001011110010101000000000000000000000000000000000" + "00110100110011110100011110100101011101111110001000101110100111011101111001011110010100000011100010101000000000000000000000000000000000" + "00110100010011101101011000000100001100011010001000100110111110111010111001100001100010001011000010101000000000000000000000000000000000" + "00110100011011100010011001000111000010011000101000110110101110110011111101011001001111110011000110101000000000000000000000000000000000" + "00110100001011011101000111000100001110100110001000010110100011000010111001000010110011111011000100101000000000000000000000000000000000" + "00110110001010001110111101100111000110101100001000010010111001010011100001110101011100000011100100101000000000000000000000000000000000" + "00001011100111110001000000001010010011000000101001100011100100111011010000101010000111000011110101001101011110000010010100000010100000" + "01010100011000001110111111110000101100111111010110011100011011000100101111000000111000111100001010110010100001111101100011111100001010" + }, + /* 58*/ { BARCODE_DBAR_EXPSTK_CC, -1, 2, "[01]12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]1234567890123456789012345678901234567890123456789012", 0, 44, 102, 1, "Example with CC-B 4 cols, 38 rows", + "001100010010100000011100101101100111111011001010001011001001001011110000010010001000011110110100111010" + "001110010010101101111001110001111011110101000010001010001100001100101000011111001010111110110100110010" + "001111010010111011001111001101110100011000010010011010001001011111011000011111101001011100110100010010" + "001111010110100010110001111101011100100001100010111010001001111000001001010110001011100000110100011010" + "001111010100100101110001110001100100001001100010110010001000101100000110010001000010000010110100001010" + "001110010100111110001100010101101110011111010010110011001101000011110110011001101111000100110110001010" + "001110110100111101011111001101000101000111100010110001001001100011001111010110111011111000110010001010" + "001110100100111010100011100001011100011110110010110001101111011110010001011100110001000110111010001010" + "001110100110111111010010011101110011011100100010100001101001100111110001010101111000010000111011001010" + "001110101110110111010001110001011000110011110010100011101000110010001110010111110000110100110011001010" + "001110101100110111001101000001000011011101100010100011001001011111011111011101111011100110110111001010" + "001110101000110001101111010001100001000011101010100111001000111001011111010101111100110000110111101010" + "001100101000101110000011011101000011110110110010100110001011000111011111011001111100010010110011101010" + "001100101100110100100110000001100111000011010010101110001100011011000011010111001111001100111011101010" + "001100101110111110110011001101110010111001100010101100001110000010011001011010000111000100111001101010" + "001100100110100010000010111101000110100000111010100100001111110100110010011111010011100010111101101010" + "001100110110100010011101110001011000001100100010110100001110110100000110011011011011000000111100101010" + "001110110110111010000110100001110010011010000010010100001100111001111101011110010001100110111000101010" + "001110010110100110110111100001100010010111110010010110001110110111111010010011110001101100110000101010" + "001100010110110001100100000101101101100110000010010111001101001000011000011000010001101110110001101010" + "001100010100111100001000100101110010000001101010110111001111011011000010011101000001101000110001001010" + "001100110100100001000010111101101100110011111010110111101010110111110000010010111001111110111001001010" + "001101110100100001001100001101000011011010000010110011101001100111001100010010001101100000111101001010" + "001101100100111010111011000001111110111001010010010011101111100100010011011100000010011010111101011010" + "001101100110110001011111100101100100111111001010011011101000100010011110011010000010111110111101010010" + "001101101110100011000011010001101111011100010010001011101010011000110000010110001111011100111001010010" + "001101101100111000110111010001101111100101111010001001101110111001111001011110101000010000111011010010" + "001101101000100011010111000001000010010111100010001101101101101100111110011100101001111110111010010010" + "001101001000100001100011001001000100001000010010000101101110100100111000010001000011000110111010011010" + "001101011000111010000110001001010000011110100010000100101111100111011001011111101111011010111010111010" + "001101011100100101100001111101000000110101110010000110101000001010111100011111100101100100111010110010" + "001101011110110111011000100001101001110001111010001110101100101001100000011100110000100110111010100010" + "001101001110111100100011001101110010110010000010001100101101001111100111011110001010100000110010100010" + "001101001100100111001110111101101111110011001010001000101011110010000100010010010011110000110010110010" + "001101000100100100000100001001101110110010000010011000101111011001000111011100010001001110110010111010" + "001101000110111100001101100101000100000111101010011100101111001010010000011110011000110100110010011010" + "001101000010101011011111000001000010100011110010011110101100111110100001010001101000111000110011011010" + "001101100010111000100100011101001110011110110010111110101100011000010010011011100110000100111011011010" + "000001101110011110010000000010100100001100110001001000111001001110110100001010100001110000111101010000" + "010110010001100001101111111100001011110011001110110111000110110001001011110000001110001111000010101101" + "000001101110011110010000000010100100001100110001001000111001001110110100001010100001110000111101010000" + "000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000" + "000000101111000001001010000001010010111100111110110000000000000000000000000000000000000000000000000000" + "001001010000111110110001111110000101000011000001001010000000000000000000000000000000000000000000000000" + }, + /* 59*/ { BARCODE_UPCA_CC, -1, 2, "12345678901", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567", 0, 48, 99, 1, "Example with CC-B 4 cols, 44 rows", "110010001011101111101110100100000100001000101011000010111110110100111101110110010000110011010001001" "111010001011100101100100000111000110111010001011100010110001110111110101110100011100011011010001101" "111011001011001100100011110100101000011110001011100110101100010111000001111101001110100011010000101" @@ -995,7 +1221,7 @@ static void test_examples(int index, int generate, int debug) { "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" "000101001100100100110111101010001101100010101111010101000100100100011101001110010110011011011001010" }, - /* 53*/ { BARCODE_GS1_128_CC, -1, 3, "[01]12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]12345678901234567890123456789012345678901234567890123456789012345678901234567", 0, 32, 154, "Example with CC-C 5 cols, 30 rows", + /* 60*/ { BARCODE_GS1_128_CC, -1, 3, "[01]12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]12345678901234567890123456789012345678901234567890123456789012345678901234567", 0, 32, 154, 1, "Example with CC-C 5 cols, 30 rows", "1111111101010100010101000001000000101000001000001001110111110111010010000010000100010111110110100111101110110010000110011110101001111000111111101000101001" "1111111101010100011111010100000110111001011001000001110001101110100011000111011111010111010001110001101110110011110011011111010100001100111111101000101001" "1111111101010100011101010011111100100101000011110001011000101110000011111010011101000100010110001111101011100100001100011111101011010000111111101000101001" @@ -1029,7 +1255,7 @@ static void test_examples(int index, int generate, int debug) { "0000000001011000110000101000100110010011010011000110111010011100011101001001111010110010000100101001100011001001110010100001000101110010001001110001010000" "0000000110100111001111010111011001101100101100111001000101100011100010110110000101001101111011010110011100110110001101011110111010001101110110001110101100" }, - /* 54*/ { BARCODE_GS1_128_CC, -1, 3, "[01]12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]12345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, 28, 171, "Example with CC-C 6 cols, 25 rows", + /* 61*/ { BARCODE_GS1_128_CC, -1, 3, "[01]12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]12345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, 28, 171, 1, "Example with CC-C 6 cols, 25 rows", "111111110101010001101010000110000011010000001001100111011111011101001000001000010001011111011010011110111011001000011001011011110011100011111010100111110111111101000101001" "111111110101010001111010100000100011100011011101000110001110111110101110100011100011011101100111100110111010001100001001001011111011000011110101000010000111111101000101001" "111111110101010001010100011110000011111010011101000100010110001111101011100100001100010011110000010010101100010111000001011010011100000010101000001111000111111101000101001" @@ -1059,7 +1285,7 @@ static void test_examples(int index, int generate, int debug) { "000000000101100011000010100010011001001101001100011011101001110001110100100111101011001000010010100110001100100111001010000100010111001000100111000101000000000000000000000" "000000011010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110101111011101000110111011000111010110000000000000000000" }, - /* 55*/ { BARCODE_GS1_128_CC, -1, 3, "[01]12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[98]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[99]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[98]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[99]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]1234567890123456789012345678901234567890", 0, 32, 528, "Example with CC-C 27 cols, 30 rows", + /* 62*/ { BARCODE_GS1_128_CC, -1, 3, "[01]12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[98]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[99]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[98]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[99]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]1234567890123456789012345678901234567890", 0, 32, 528, 1, "Example with CC-C 27 cols, 30 rows", "111111110101010001010100000100000010000100001000010111011111011101001000001000010001011111011010011110111011001000011001011011110011100011110111101010000110000110010100001111100101011111010001011000110000101000001100011001100100010000110011010011110111110101100011000010001100110110110000011111011110010110110010001000011001001011100011100011001000010011000100010110000011001000100001000001011011110011101000100001001000010001111101101001111010111001110010000111101001001111001001000010010000011101011100111110111111101000101001" "111111110101010001111010110011000010010000111101000101000001111010001111110101000111011100110011101000101111010111100001111000100110110011111101001001110111001101110010001001100111110001010101111000010000111100100011011001011010011111100011110011011010000100111011111101001111100110110011010001110100111110111010000111011001001110100111110011000110111101000110000100001110101000111001011111010101111100110000111110001010110001110000001011001011111011010000100100000100011110101101011100000100011111010100001100111111101000101001" "111111110101010001111110101110011010001111011101110110001110100111001100011000101111011110111010111110110010001001111101110011111001011010110100000111000100010000010111101000110100000111011111101001100100111110100111000101011100010001100011101110101111000110010010001111101001001000001111011101101011111000101100000110111101000111101000010011011101000011100100110110111100001100010010111110011101101111110100100111100011011001000111001000011011001001101111110111010111111011001110011110010111011111101011000100111111101000101001" @@ -1093,7 +1319,7 @@ static void test_examples(int index, int generate, int debug) { "000000000101100011000010100010011001001101001100011011101001110001110100100111101011001000010010100110001100100111001010000100010111001000100111000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" "000000011010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110101111011101000110111011000111010110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, - /* 56*/ { BARCODE_GS1_128_CC, -1, 3, "[01]12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[98]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[99]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[98]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[99]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567890123" "456789012345678901234567890[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[98]123456789012345678901234567890123456789012345", 0, 32, 579, "Example with CC-C 30 cols, 30 rows (max)", + /* 63*/ { BARCODE_GS1_128_CC, -1, 3, "[01]12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[98]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[99]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[98]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[99]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567890123" "456789012345678901234567890[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[98]123456789012345678901234567890123456789012345", 0, 32, 579, 1, "Example with CC-C 30 cols, 30 rows (max)", "111111110101010001010100000100000010001110111000100111011111011101001100011100011010011111011010011110111011001000011001011011110011100011110111101010000110000110010100001111100101011111010001011000110000101000001100011001100100010000110011010011110111110101100011000010001100110110110000011111011110010110110010001000011001001011100011100011001000010011000100010110000011001000100001000001011011110011101000100001001000010001111101101001111010111001110010000111101001001111001001000010010000011100110111011110101101100010000001110101000111000010101111011110000111111101000101001" "111111110101010001111101011011100011100110011101000101111010111100001111000100110110011111101001001110111001101110010001001100111110001010101111000010000111100100011011001011010011111100011110011011010000100111011111101001111100110110011010001110100111110111010000111011001001110100111110011000110111101000110000100001110101000111001011111010101111100110000111110001010110001110000001011001011111011010000100100000100011110101101011100000100010111100010111100100010000111101001001101111110110011111011001100110111001011100110001110000010011001011111010100001100111111101000101001" "111111110101010001010111000111111010110100000111000100010000010111101000110100000111011111101001100100111110100111000101011100010001100011101110101111000110010010001111101001001000001111011101101011111000101100000110111101000111101000010011011101000011100100110110111100001100010010111110011101101111110100100111100011011001000111001000011011001001101111110111010111111011001110011110010111010011110001100110101110000010110001011000001001110010110110000111100100001000010111101101100110011111010101101111100000100101110011111101000011001000111011111101011001000111111101000101001" @@ -1127,7 +1353,7 @@ static void test_examples(int index, int generate, int debug) { "000000000101100011000010100010011001001101001100011011101001110001110100100111101011001000010010100110001100100111001010000100010111001000100111000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" "000000011010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110101111011101000110111011000111010110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, - /* 57*/ { BARCODE_GS1_128_CC, -1, 3, "[01]12345678901231", "[91]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[92]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[94]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[95]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[96]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[97]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[98]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[99]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[91]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[92]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[94]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[95]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[96]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF", 0, 32, 579, "Example with CC-C 30 cols, 30 rows (max)", + /* 64*/ { BARCODE_GS1_128_CC, -1, 3, "[01]12345678901231", "[91]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[92]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[94]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[95]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[96]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[97]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[98]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[99]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[91]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[92]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[94]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[95]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[96]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF", 0, 32, 579, 1, "Example with CC-C 30 cols, 30 rows (max)", "111111110101010001010100000100000010001110111000100111011111011101001100011100011010011111011010011110110100100110000001001100110100000011001100100100000100011000001101001011001100001000010001100001100010100001011000001101110111101101000010000010100001000100100001100110001011000111000011010011000001100010111011001000011001110110100000110010001010000001000100011000110000101100110000100001011110110101110000111011001000110001100100010110000011101100101100000100101110111000001100001011001110011000010000100110110010000100110001110011101000010010101111011110000111111101000101001" "111111110101010001111101011011100011010001110000100111010001100010001010011111101110011111011001100110111010000011010001111010001000100011111101110110110111100110110010001111001011000011011110001000100010101110011011111101111110011010011011110000101000010111100100100001001110100111101110010001000111100100111101011101110001110101111000111011111101100101100100010011110100001110001000110010011111100010101110101101111100001001111001010000100011110101100110000111010000111011001111101100010100011000100011110110111111011010001101111101100000101011111010100001100111111101000101001" "111111110101010001010111000111111010010111011111100100001101000011101111110110011101011101011111000100110110001001111001001110011001110010011000011011110111001111100101101110110001011111010010010111100000110001101011110001101110101110000010010110001111100101001011110000001101000100111110011100110100111110111010111110000101101110011001111011100100011111010110111111001100101010010011110000011101011111010000110011000101111001001001100011111010001110110001110111001110101111001110111111010010010000011010011100110111000101110001100111000101110011111101011001000111111101000101001" @@ -1161,7 +1387,42 @@ static void test_examples(int index, int generate, int debug) { "000000000101100011000010100010011001001101001100011011101001110001110100100111101011001000010010100110001100100111001010000100010111001000100111000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" "000000011010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110101111011101000110111011000111010110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, - /* 58*/ { BARCODE_EANX_CC, -1, 1, "123456789012+12", "[91]123456789012345678901", 0, 8, 126, "Example of EAN-13 with 2-digit addon, CC-A 4 cols, 4 rows", + /* 65*/ { BARCODE_GS1_128_CC, -1, 3, "[01]12345678901231[90]123", "[20]12", 0, 5, 205, 1, "Example with min CC-C input and smallest linear input to bump rows (2 to 3), CC-C 8 cols, 3 rows", + "1111111101010100011101010111000000111010110011110001110111110111010010000010000100010111010011011110001001100111101110010000110111001100111000101101111001000101110111000011101010001110000111111101000101001" + "1111111101010100011110101000010000111010111011000001111110111001010011111001000100110111000000100110101100100111000001011111010001101110110101110001000001111010100001000011111010101100000111111101000101001" + "1111111101010100011101010001111110100010100011110001111101011100001011000011001011110100101001111000001011111011010000011101111110010100110111100010001101011001001110000010101000011110000111111101000101001" + "0000000001011000110000101000100110010011010011000110111010011100011101001001111010110010000100101001100011001001110010010000100101001100011010000100010011010001100010100001001000100010011100010100000000000" + "0000000110100111001111010111011001101100101100111001000101100011100010110110000101001101111011010110011100110110001101101111011010110011100101111011101100101110011101011110110111011101100011101011000000000" + }, + /* 66*/ { BARCODE_GS1_128_CC, -1, 3, "[01]12345678901231[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890123456789012345678901234", "[20]12", 0, 5, 702, 1, "Example with max linear input and min CC-C input, CC-C 30 cols, 3 rows (bumped up from 1)", + "111111110101010001110101011100000010100010000010000111011111011101001000001000010001011101001101111000100110011110111001000011011100110011100010110111100100010111011100001010111000111000010000101100000110100100000010010001100001100010100011011000111001110110010011101111001000101111011110010100001110001110100011000011010001101111011100010010100110001100000101100011110111001111011110101000010000010001101100100011011001000001110101101111000010001100011100110111011010110000001110111010000100011000010110001110110100001000011001000010010000001010101111011110000111111101000101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "111111110101010001111010100001000011110011011000100111100000100010101110010001100001011101011101100000111111011100101001111100100010011011100000010011010110010011100000101111001010000001010110011111001000111111010001011101110001100011101011111000110010100110101111101110001110010011110111011100011011101000110111110010111101110111001111001011110101101100000110011101111100101101000011100100011011000011110010100010001111101101010011110000100010011000111110100111100110110001001111000001000101011100100011000010111010111011000001111110111001010011111010101100000111111101000101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "111111110101010001010111000111111011011101011100000110001111101000101100010111111001011001001111110010100010001001111001101000001011111011100011110101110110111110011001101101001000111110010011010011100000101111101100000101000000110010111010000110110111100110101101111110001011111000111011010110100001110000101110000100110001101111000010011010100110001111100110101100111111001001010011110000011110101111001000110101000111110001000110001001110010100011001111100100000111001001101000110011011110010011010000111000110111111001101001110101111101000010101000011110000111111101000101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "000000000101100011000010100010011001001101001100011011101001110001110100100111101011001000010010100110001100100111001001000010010100110001101110100111000111010010011110101100100001001010011000110111010011100011101001001111010110010000100101001100011011101001110001110100100111101011001000010010000101000100001001001010011000110111010011100011101001001111010110010000100101001100011011101001110001110100100111101011001000010010100110001101110100111000111010010011110101100100001001010011000110111010011100011101001001111010110010000100101001100011011101001110001110100100111101011001000010010100110001101110100111000111010010011110101100100001001010011000110111010011101000010001001100110010011100010100" + "000000011010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110110111101101011001110010001011000111000101101100001010011011110110101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010100110111101101111010111011110110110101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010100110111101101011001110010001011000111000101101100001010011011110110101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010100110111101101011001110010001011000111000101101100001010011011110110101100111001000101100010111101110110011001101100011101011" + }, + /* 67*/ { BARCODE_GS1_128_CC, -1, 3, "[01]12345678901231[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890123456789012345678901234", "[20]01[90]123456789012345678901234567890[91]123456789012", 0, 5, 702, 1, "Example with max linear input and medium CC-C input, CC-C 30 cols, 3 rows (bumped up from 1 (before last digit) than 2)", + "111111110101010001110101011100000010100010000010000111011111011101001000001000010001011101001101111000111000101000111001100100011101111010001011000001100101100000110000101101101100110000011010010000110000110000100011011101001110011101000011110111011011100111101100010011101111001001011110011101110001000010111000101001110001011000001100010011010010011000000110011100001101001100011011000011011101110001010000110100001000001101010011000110000010110001111011100111101111010100001000001000110110010001101100100000111010110111100001000110001110011010101111011110000111111101000101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "111111110101010001111010100001000011010000111001000110110000111100101000100011111011010100111100001000100110001111101001111001101100010011110000010001010111001000110000101110101110110000011111101110010100111110010001001101110000001001101011001001110000010111100101000000101011001111100100011111101000101110111000110001110101111100011001010011010111110111000111001001111011101110001101110100011011111001011110111011100111100101111010110110000011001110111110010110100001110010001101100001111001010001000111110110101001111000010001001100011111010011111010101100000111111101000101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "111111110101010001010111000111111010001100110111100101111110111000101001100101110000010101110011111100101111000010000101101110101110000011000111110100010110001011111100101100100111111001010001000100111100110100000101111101110001111010111011011111001100110110100100011111001001101001110000010111110110000010100000011001011101000011011011110010101000011110000101001100011111001101011001111110010010100111100000111111010011010001000110101110000011101111100100110110100011011111101100111110100001011001111100001010100001010011110001101011111100010010101000011110000111111101000101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "000000000101100011000010100010011001001101001100011011101001110001110100100111101011001000010010100110001100100111001001000010010100110001101110100111000111010010011110101100100001001010011000110111010011100011101001001111010110010000100101001100011011101001110001110100100111101011001000010010000101000100001001001010011000110111010011100011101001001111010110010000100101001100011011101001110001110100100111101011001000010010100110001101110100111000111010010011110101100100001001010011000110111010011100011101001001111010110010000100101001100011011101001110001110100100111101011001000010010100110001101110100111000111010010011110101100100001001010011000110111010011101000010001001100110010011100010100" + "000000011010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110110111101101011001110010001011000111000101101100001010011011110110101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010100110111101101111010111011110110110101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010100110111101101011001110010001011000111000101101100001010011011110110101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010100110111101101011001110010001011000111000101101100001010011011110110101100111001000101100010111101110110011001101100011101011" + }, + /* 68*/ { BARCODE_GS1_128_CC, -1, 3, "[01]12345678901231[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890123456789012345678901234", "[20]01[90]123456789012345678901234567890[91]1234567890123", 0, 5, 702, 1, "Example with max linear input and medium CC-C input, CC-C 30 cols, 3 rows (bumped up from 2)", + "111111110101010001110101011100000010100010000010000111011111011101001000001000010001011101001101111000111000101000111001100100011101111010001011000001100101100000110000101101101100110000011010010000110000110000100011011101001110011101000011110111011011100111101100010011101111001001011110011101110001000010111000101001110001011000001100010011010010011000000110011100001101001100011011000011010111001111001100110100000100110001010011000110000010110001111011100111101111010100001000001000110110010001101100100000111010110111100001000110001110011010101111011110000111111101000101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "111111110101010001111010100001000011010000111001000110110000111100101000100011111011010100111100001000100110001111101001111001101100010011110000010001010111001000110000101110101110110000011111101110010100111110010001001101110000001001101011001001110000010111100101000000101011001111100100011111101000101110111000110001110101111100011001010011010111110111000111001001111011101110001101110100011011111001011110111011100111100101111010110110000011001110111110010110100001110010001101100001111001010001000111110110101001111000010001001100011111010011111010101100000111111101000101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "111111110101010001010111000111111010001100110111100101111110111000101001100101110000010101110011111100101111000010000101101110101110000011000111110100010110001011111100101100100111111001010001000100111100110100000101111101110001111010111011011111001100110110100100011111001001101001110000010111110110000010100000011001011101000011011011110010101000011110000101001100011111001101011001111110010010100111100000111011110001011101101111000001011010111100000100010110100100011111001011101000011000010001101011100000101111110001110101011110110011000010101000011110000111111101000101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "000000000101100011000010100010011001001101001100011011101001110001110100100111101011001000010010100110001100100111001001000010010100110001101110100111000111010010011110101100100001001010011000110111010011100011101001001111010110010000100101001100011011101001110001110100100111101011001000010010000101000100001001001010011000110111010011100011101001001111010110010000100101001100011011101001110001110100100111101011001000010010100110001101110100111000111010010011110101100100001001010011000110111010011100011101001001111010110010000100101001100011011101001110001110100100111101011001000010010100110001101110100111000111010010011110101100100001001010011000110111010011101000010001001100110010011100010100" + "000000011010011100111101011101100110110010110011100100010110001110001011011000010100110111101101011001110011011000110110111101101011001110010001011000111000101101100001010011011110110101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010100110111101101111010111011110110110101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010100110111101101011001110010001011000111000101101100001010011011110110101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010100110111101101011001110010001011000111000101101100001010011011110110101100111001000101100010111101110110011001101100011101011" + }, + /* 69*/ { BARCODE_GS1_128_CC, -1, 3, "[90]1234567890123456789012345678", "[20]01", 0, 5, 239, 1, "Example with linear input length triggering difference between new (BWIPP) 52 and old 53 adjustment", + "11111111010101000111010101110000001101011101111000011101111101110100100000100001000101110100110111100010110000011001000110001000110111001010000100001000010010111100111100101011100011100001000010110000011010101000001000000111111101000101001" + "11111111010101000111101010000100001111100100010011011100000010011010110010011100000101111001010000001010110011111001000111111010001011101110001100011101011111000110010100110101110001000001111010100001000011111010101100000111111101000101001" + "11111111010101000110101000011111001010011000111110011010110011111100110111110010001001100001111010110010111111011110110110110001011110001110010111110010011110101111100110101110011000011101100110100001111010101000011110000111111101000101001" + "00000000010110001100001010001001000010010100110001101110100111000111010010011110101100100001001010011000110111010011100011101001001111010110010000100101001100011011101001110001110100100111101011010000100010010000100100111000101000000000000" + "00000001101001110011110101110110111101101011001110010001011000111000101101100001010011011110110101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010100101111011101101111011011000111010110000000000" + }, + /* 70*/ { BARCODE_EANX_CC, -1, 1, "123456789012+12", "[91]123456789012345678901", 0, 8, 126, 1, "Example of EAN-13 with 2-digit addon, CC-A 4 cols, 4 rows", "110100100011110011010011100101110111000100001001000110101110111001000001100000100110111011101100101000000000000000000000000000" "110101100011101011001000000110011110101111101001000010110010111101100001100100111000001011001100101000000000000000000000000000" "110101110011101011111010000111111001101110101011000010111110101111001101001101001110000011011100101000000000000000000000000000" @@ -1171,7 +1432,7 @@ static void test_examples(int index, int generate, int debug) { "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000" "000101001001101111010011101011000100001010010001010101001000111010011100101100110110110010010001010000000101100110010100100110" }, - /* 59*/ { BARCODE_EANX_CC, -1, 1, "123456789012+54321", "[91]1234567890", 0, 7, 153, "Example of EAN-13 with 5-digit addon, CC-B 4 cols, 3 rows", + /* 71*/ { BARCODE_EANX_CC, -1, 1, "123456789012+54321", "[91]1234567890", 0, 7, 153, 1, "Example of EAN-13 with 5-digit addon, CC-B 4 cols, 3 rows", "110110111011110011010011100101110111000100001001110100101110111001000001100000100110111011011000101000000000000000000000000000000000000000000000000000000" "110110110011111101010011100111110001001001101001100100110100011100010001001011111100111011001000101000000000000000000000000000000000000000000000000000000" "110110100010100000101111000111001111001011101001100110110011111010010001001111101101000011101000101000000000000000000000000000000000000000000000000000000" @@ -1180,7 +1441,7 @@ static void test_examples(int index, int generate, int debug) { "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000" "000101001001101111010011101011000100001010010001010101001000111010011100101100110110110010010001010000000101101110010101000110101000010100100110100110010" }, - /* 60*/ { BARCODE_UPCA_CC, -1, 1, "12345678901+12", "[91]123456789", 0, 7, 128, "Example of UPC-A with 2-digit addon, CC-A 4 cols, 3 rows", + /* 72*/ { BARCODE_UPCA_CC, -1, 1, "12345678901+12", "[91]123456789", 0, 7, 128, 1, "Example of UPC-A with 2-digit addon, CC-A 4 cols, 3 rows", "11011011101111001101001110010111011100010000100111010010111011100100000110000010011011101101100010100000000000000000000000000000" "11011011001110011100111101011000010001110010100110010011101011001000000100101111110011101100100010100000000000000000000000000000" "11011010001000011110010001010111101000000100100110011010001110000101100110111000100011101110100010100000000000000000000000000000" @@ -1189,7 +1450,7 @@ static void test_examples(int index, int generate, int debug) { "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000" "00010100110010010011011110101000110110001010111101010100010010010001110100111001011001101101100101000000000101100110010100100110" }, - /* 61*/ { BARCODE_UPCA_CC, -1, 2, "12345678901+12121", "[91]1234567890123", 0, 8, 155, "Example of UPC-A with 5-digit addon, CC-B 4 cols, 4 rows", + /* 73*/ { BARCODE_UPCA_CC, -1, 2, "12345678901+12121", "[91]1234567890123", 0, 8, 155, 1, "Example of UPC-A with 5-digit addon, CC-B 4 cols, 4 rows", "11010011101000111110100111011011111101011100100111011011010000111101100110010111000010001101001000100000000000000000000000000000000000000000000000000000000" "11010011001011001001110000010111110110000010100111010011011111100110100111010011111001001101011000100000000000000000000000000000000000000000000000000000000" "11010001001110011010000110011001000001011000100110010010011110111101000111000111010001001101011100100000000000000000000000000000000000000000000000000000000" @@ -1199,7 +1460,7 @@ static void test_examples(int index, int generate, int debug) { "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000" "00010100110010010011011110101000110110001010111101010100010010010001110100111001011001101101100101000000000101100110010100100110101100110100110110100110010" }, - /* 62*/ { BARCODE_UPCE_CC, -1, 1, "0654321+89", "[91]1", 0, 9, 82, "Example of UPC-E with 2-digit addon, CC-A 2 cols, 5 rows", + /* 74*/ { BARCODE_UPCE_CC, -1, 1, "0654321+89", "[91]1", 0, 9, 82, 1, "Example of UPC-E with 2-digit addon, CC-A 2 cols, 5 rows", "1101100110111101110101111101010001000111100011110101001000000000000000000000000000" "1101101110111011000010001101110010101110000011100101001000000000000000000000000000" "1101101100110001011111011101111010000100100011101101001000000000000000000000000000" @@ -1210,7 +1471,7 @@ static void test_examples(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010000000000000000000000000000" "0001010000101011000100111010111101001101100110010101010000000101101101110100101110" }, - /* 63*/ { BARCODE_UPCE_CC, -1, 2, "1876543+56789", "[91]12345", 0, 12, 109, "Example of UPC-E with 5-digit addon, CC-B 2 cols, 8 rows", + /* 75*/ { BARCODE_UPCE_CC, -1, 2, "1876543+56789", "[91]12345", 0, 12, 109, 1, "Example of UPC-E with 5-digit addon, CC-B 2 cols, 8 rows", "1100100010111011111011101001000001000010001011001000101000000000000000000000000000000000000000000000000000000" "1110100010110100001111011001100101110000100011101000101000000000000000000000000000000000000000000000000000000" "1110110010111011001001111101000111100100001011101100101000000000000000000000000000000000000000000000000000000" @@ -1224,7 +1485,7 @@ static void test_examples(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000" "0001010110111001000100001010110001010001101000010101010000000101101100010101011110100100010101101110100101110" }, - /* 64*/ { BARCODE_EANX_CC, -1, 1, "9876543+65", "[91]1234567", 0, 8, 99, "Example of EAN-8 with 2-digit addon, CC-A 3 cols, 4 rows", + /* 76*/ { BARCODE_EANX_CC, -1, 1, "9876543+65", "[91]1234567", 0, 8, 99, 1, "Example of EAN-8 with 2-digit addon, CC-A 3 cols, 4 rows", "100100011111001101010011000111000101110011001100010111010000011101001101000000000000000000000000000" "110111111001101001010111000110111100101100001111000100111101011101011101000000000000000000000000000" "100001011000001101010110000101011111011111001110100100001110011101011001000000000000000000000000000" @@ -1234,7 +1495,7 @@ static void test_examples(int index, int generate, int debug) { "000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000" "000010100010110110111011101101011110101010011101011100100001011100101010000000101101011110101110010" }, - /* 65*/ { BARCODE_EANX_CC, -1, 2, "9876543+74083", "[91]123456789012345678", 0, 12, 136, "Example of EAN-8 with 5-digit addon, CC-B 3 cols, 8 rows", + /* 77*/ { BARCODE_EANX_CC, -1, 2, "9876543+74083", "[91]123456789012345678", 0, 12, 136, 1, "Example of EAN-8 with 5-digit addon, CC-B 3 cols, 8 rows", "1100111010111011111011101001000010110100000100001000101111101101001111011001110101000000000000000000000000000000000000000000000000000000" "1110111010110010111000010001000010010111001011001000001110001101110100011101110101000000000000000000000000000000000000000000000000000000" "1110011010110111111001101001000011010101000101111000001100100110111111011100110101000000000000000000000000000000000000000000000000000000" @@ -1248,7 +1509,7 @@ static void test_examples(int index, int generate, int debug) { "0000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000" "0000000000000010100010110110111011101101011110101010011101011100100001011100101010000000101101110110100111010100011010101101110101000010" }, - /* 66*/ { BARCODE_EANX_CC, -1, 1, "1234567890128+65", "[91]1234567", 0, 7, 126, "Example of EAN-13 + CHK with 2-digit addon, CC-A 3 cols, 4 rows", + /* 78*/ { BARCODE_EANX_CC, -1, 1, "1234567890128+65", "[91]1234567", 0, 7, 126, 1, "Example of EAN-13 + CHK with 2-digit addon, CC-A 3 cols, 4 rows", "110110111011110011010011100101110111000100001001110100101110111001000001100001100101000011011000101000000000000000000000000000" "110110110010011001011111100111110110010000101001100100111111011100101001101011100010000011001000101000000000000000000000000000" "110110100011010111111001000110111010000111001001100110100010010011110001010000110111110011101000101000000000000000000000000000" @@ -1290,10 +1551,10 @@ static void test_examples(int index, int generate, int debug) { assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); if (generate) { - printf(" /*%3d*/ { %s, %s, %d, \"%s\", \"%s\", %s, %d, %d, \"%s\",\n", + printf(" /*%3d*/ { %s, %s, %d, \"%s\", \"%s\", %s, %d, %d, %d, \"%s\",\n", i, testUtilBarcodeName(symbol->symbology), testUtilInputModeName(data[i].input_mode), data[i].option_1, testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), testUtilEscape(data[i].composite, composite_length, esc_composite, sizeof(esc_composite)), - testUtilErrorName(ret), symbol->rows, symbol->width, data[i].comment); + testUtilErrorName(ret), symbol->rows, symbol->width, data[i].bwipp_cmp, data[i].comment); testUtilModulesPrint(symbol, " ", "\n"); printf(" },\n"); } else { @@ -1306,12 +1567,16 @@ static void test_examples(int index, int generate, int debug) { 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, data[i].option_1, -1, -1, debug)) { - ret = testUtilBwipp(i, symbol, data[i].option_1, -1, -1, data[i].composite, composite_length, symbol->primary, bwipp_buf, sizeof(bwipp_buf)); - assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); + if (!data[i].bwipp_cmp) { + if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); + } else { + ret = testUtilBwipp(i, symbol, data[i].option_1, -1, -1, data[i].composite, composite_length, symbol->primary, bwipp_buf, sizeof(bwipp_buf)); + 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); + 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); + } } } @@ -2356,7 +2621,18 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /* 4*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]A1234", 0, 9, 55, "Mode '11', even-numbered numeric [90]", + /* 4*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]30B", 0, 9, 55, "Mode '11', 2 digit <= 30 table3 letter prefix only", + "1101100110110111110000100101011100100110000011110101001" + "1101101110101111011111001101000011000111011011100101001" + "1101101100110100111000000101110000100011010011101101001" + "1101101000111101011111001101110001111110101011101001001" + "1101001000111100110010011101000100000010100011101001101" + "0001000000000000000000000000000000000000000000000000010" + "0010000000000000000000000000000000000000000000000000001" + "0001000000000000000000000000000000000000000000000000010" + "0001010010011011110101000110111001000010100100010101010" + }, + /* 5*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]A1234", 0, 9, 55, "Mode '11', even-numbered numeric [90]", "1101100110100111100000101001110110010011111011110101001" "1101101110110001000100110001101000100110000011100101001" "1101101100111100010111011101100011011110100011101101001" @@ -2367,7 +2643,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /* 5*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]A12345", 0, 9, 55, "Mode '11', odd-numbered numeric [90]", + /* 6*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]A12345", 0, 9, 55, "Mode '11', odd-numbered numeric [90]", "1101100110100111100000101001110110010011111011110101001" "1101101110110001000100110001110100010011100011100101001" "1101101100101000011110010001110100011010000011101101001" @@ -2378,7 +2654,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /* 6*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1ABC4", 0, 9, 55, "Mode '11', alpha [90]", + /* 7*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1ABC4", 0, 9, 55, "Mode '11', alpha [90]", "1101100110100111110110010001001110011000111011110101001" "1101101110110110011000011001010011000011000011100101001" "1101101100101000111100000101110000100110010011101101001" @@ -2389,7 +2665,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /* 7*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1AB34", 0, 9, 55, "Mode '11', alphanumeric [90] (letters <= numbers)", + /* 8*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1AB34", 0, 9, 55, "Mode '11', alphanumeric [90] (letters <= numbers)", "1101100110100011100110111001011111101110010011110101001" "1101101110110000110100010001100101100011100011100101001" "1101101100110010000011100101101100011110001011101101001" @@ -2400,7 +2676,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /* 8*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1AB.D", 0, 9, 55, "Mode '11', alphanumeric [90]", + /* 9*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1AB.D", 0, 9, 55, "Mode '11', alphanumeric [90]", "1101100110100011100110111001011111101110010011110101001" "1101101110110000110100010001000010100000100011100101001" "1101101100101110100001111101110111000111101011101101001" @@ -2411,7 +2687,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /* 9*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1AB+D", 0, 9, 55, "Mode '11', ISO-646 [90]", + /*10*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1AB+D", 0, 9, 55, "Mode '11', ISO-646 [90]", "1101100110100011100110111001011111101110010011110101001" "1101101110110000110100010001101000111001111011100101001" "1101101100111110110100001001100101111101110011101101001" @@ -2422,7 +2698,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*10*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1A+BD", 0, 9, 55, "Mode '11', immediate ISO-646 [90]", + /*11*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1A+BD", 0, 9, 55, "Mode '11', immediate ISO-646 [90]", "1101100110100011100110111001011111101110010011110101001" "1101101110101111000111100101111011101011000011100101001" "1101101100101000011110010001001111001011110011101101001" @@ -2433,8 +2709,9 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*11*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1AB#D", ZINT_ERROR_INVALID_DATA, 0, 0, "Mode '11', invalid char [90]", "" }, - /*12*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]A12345[21]AB", 0, 10, 55, "Mode '11', numeric [90], with [21]", + /*12*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1AB#D", ZINT_ERROR_INVALID_DATA, 0, 0, "Mode '11', invalid char [90]", "" }, + /*13*/ { BARCODE_UPCE_CC, 2, "1234567", "[90]1AB#D", ZINT_ERROR_INVALID_DATA, 0, 0, "Mode '11', invalid char [90]", "" }, + /*14*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]A12345[21]AB", 0, 10, 55, "Mode '11', numeric [90], with [21]", "1100100010111000111011011001001100011000010011100101101" "1110100010101000001111001001111100110100010011000101101" "1110110010101110010000110001100111000100111011000101001" @@ -2446,7 +2723,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*13*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1ABC4[21]AB12", 0, 10, 55, "Mode '11', alpha [90], with [21]", + /*15*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1ABC4[21]AB12", 0, 10, 55, "Mode '11', alpha [90], with [21]", "1100100010100011100111101101011000111000110011100101101" "1110100010111010000110001001110100011000001011000101101" "1110110010100001100100011101110111111010100011000101001" @@ -2458,7 +2735,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*14*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1AB.D[21]AB", 0, 10, 55, "Mode '11', alphanumeric [90], with [21]", + /*16*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1AB.D[21]AB", 0, 10, 55, "Mode '11', alphanumeric [90], with [21]", "1100100010110011100011000101110001110110011011100101101" "1110100010111101101100100001110010011100011011000101101" "1110110010110000110101111001011100110001110011000101001" @@ -2470,7 +2747,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*15*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1AB+D[21]A.", 0, 10, 55, "Mode '11', ISO-646 [90], with [21]; **NOT SAME** as tec-it.com, which probably includes '21' in 5 alphanumeric count", + /*17*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1AB+D[21]A.", 0, 10, 55, "Mode '11', ISO-646 [90], with [21]; **NOT SAME** as tec-it.com, which probably includes '21' in 5 alphanumeric count", "1100100010110011100011000101110001110110011011100101101" "1110100010111101101100100001110101110001100011000101101" "1110110010100000111000101101110010111110001011000101001" @@ -2482,7 +2759,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*16*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1A+BD[21]A12", 0, 11, 55, "Mode '11', immediate ISO-646 [90], with [21]; tec-it.com same, probably since have 5 alphanumerics with or without '21'", + /*18*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1A+BD[21]A12", 0, 11, 55, "Mode '11', immediate ISO-646 [90], with [21]; tec-it.com same, probably since have 5 alphanumerics with or without '21'", "1110110110111100011000110101100111101011111011100010101" "1110010110100100001101111101000100010111100011000010101" "1100010110100010100000100001110011101000001011000110101" @@ -2495,7 +2772,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*17*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]A12[8004]12", 0, 9, 55, "Mode '11', numeric [90], with [8004]", + /*19*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]A12[8004]12", 0, 9, 55, "Mode '11', numeric [90], with [8004]", "1101100110110001111010011001000001101101111011110101001" "1101101110110100100000110001011100111101100011100101001" "1101101100110100000111010001100100001110001011101101001" @@ -2506,7 +2783,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*18*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]AB[8004]12", 0, 9, 55, "Mode '11', alpha [90], with [8004]", + /*20*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]AB[8004]12", 0, 9, 55, "Mode '11', alpha [90], with [8004]", "1101100110100111110011001001100101111110010011110101001" "1101101110101000100000100001011000111001100011100101001" "1101101100100111110100011101111000100001001011101101001" @@ -2517,7 +2794,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*19*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]A.[8004]12", 0, 9, 55, "Mode '11', alphanumeric [90], with [8004]", + /*21*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]A.[8004]12", 0, 9, 55, "Mode '11', alphanumeric [90], with [8004]", "1101100110110111110011001101111110100110001011110101001" "1101101110100010001001000001100101100011100011100101001" "1101101100100001011110001001100001100111101011101101001" @@ -2528,7 +2805,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*20*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]A+[8004]12", 0, 9, 55, "Mode '11', ISO-646 [90], with [8004]", + /*22*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]A+[8004]12", 0, 9, 55, "Mode '11', ISO-646 [90], with [8004]", "1101100110110111110011001101111110100110001011110101001" "1101101110111100110010111001001110001110100011100101001" "1101101100111001011100011001101001110000010011101101001" @@ -2539,7 +2816,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*21*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]12A1[10]12", 0, 9, 55, "Mode '11', numeric [90], other data", + /*23*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]12A1[10]12", 0, 9, 55, "Mode '11', numeric [90], other data", "1101100110100111100000101001011001101111000011110101001" "1101101110111000101101111001110110100001100011100101001" "1101101100111100001010001001110000100110010011101101001" @@ -2550,7 +2827,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*22*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]123AB[10]12", 0, 9, 55, "Mode '11', alpha [90], other data", + /*24*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]123AB[10]12", 0, 9, 55, "Mode '11', alpha [90], other data", "1101100110100111110110010001100011101000111011110101001" "1101101110111001110100000101100110001100110011100101001" "1101101100110110011111001101111010100001000011101101001" @@ -2561,7 +2838,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*23*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]123AB.D[10]12", 0, 10, 55, "Mode '11', alphanumeric [90], other data", + /*25*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]123AB.D[10]12", 0, 10, 55, "Mode '11', alphanumeric [90], other data", "1100100010100011000110000101110110000100110011100101101" "1110100010101101111100100001011111001001110011000101101" "1110110010101111100110001001101111001000110011000101001" @@ -2573,7 +2850,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*24*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]123AB+D[10]12", 0, 10, 55, "Mode '11', ISO-646 [90], other data", + /*26*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]123AB+D[10]12", 0, 10, 55, "Mode '11', ISO-646 [90], other data", "1100100010100011000110000101110110000100110011100101101" "1110100010101101111100100001100100111000001011000101101" "1110110010100010110011111001000110100111000011000101001" @@ -2585,7 +2862,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*25*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]A123[21]AB[91]A123", 0, 12, 55, "Mode '11', numeric [90], with [21], other data", + /*27*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]A123[21]AB[91]A123", 0, 12, 55, "Mode '11', numeric [90], with [21], other data", "1110111010100001100111110101100010011110110011011011101" "1110011010111111011011100101001110110011100011011011001" "1111011010101000111011100001001011110011110011011010001" @@ -2599,7 +2876,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*26*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]AB[8004]12[10]12", 0, 10, 55, "Mode '11', alpha [90], with [8004], other data", + /*28*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]AB[8004]12[10]12", 0, 10, 55, "Mode '11', alpha [90], with [8004], other data", "1100100010110000110000101001101111011101000011100101101" "1110100010110100011110001101001110001011111011000101101" "1110110010100011100110111001011101101110000011000101001" @@ -2611,7 +2888,7 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, - /*27*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]12A1234B", 0, 9, 55, "Mode '11', alphanumeric [90], with first 4 digits (choosing NUMERIC would be better, not implemented)", + /*29*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]12A1234B", 0, 9, 55, "Mode '11', alphanumeric [90], with first 4 digits (choosing NUMERIC would be better, not implemented)", "1101100110100011100110111001001111100011001011110101001" "1101101110100101100000110001111010110011111011100101001" "1101101100111100000101001001111110111101101011101101001" @@ -2622,6 +2899,28 @@ static void test_encodation_11(int index, int generate, int debug) { "0001000000000000000000000000000000000000000000000000010" "0001010010011011110101000110111001000010100100010101010" }, + /*30*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]1.A", 0, 9, 55, "Fails Mode '11' test2, starting with digits then uppercase", + "1101100110111001101111110101111010000111101011110101001" + "1101101110110010001100111001000001000010001011100101001" + "1101101100100010111100100001110011011101000011101101001" + "1101101000111001010111111001011100000100011011101001001" + "1101001000111010001011100001101100001001000011101001101" + "0001000000000000000000000000000000000000000000000000010" + "0010000000000000000000000000000000000000000000000000001" + "0001000000000000000000000000000000000000000000000000010" + "0001010010011011110101000110111001000010100100010101010" + }, + /*31*/ { BARCODE_UPCE_CC, 1, "1234567", "[90]01A", 0, 9, 55, "Fails Mode '11' test3, no leading zeroes", + "1101100110111001101111110101000101011110000011110101001" + "1101101110101101111011100001000100111011100011100101001" + "1101101100111110111011101101111000001010010011101101001" + "1101101000101111001101100001111011001111101011101001001" + "1101001000111011111011100101110001010111000011101001101" + "0001000000000000000000000000000000000000000000000000010" + "0010000000000000000000000000000000000000000000000000001" + "0001000000000000000000000000000000000000000000000000010" + "0001010010011011110101000110111001000010100100010101010" + }, }; int data_size = ARRAY_SIZE(data); int i, length, composite_length, ret; @@ -2637,6 +2936,7 @@ static void test_encodation_11(int index, int generate, int debug) { for (i = 0; i < data_size; i++) { if (index != -1 && i != index) continue; + if ((debug & ZINT_DEBUG_TEST_PRINT) && !(debug & ZINT_DEBUG_TEST_LESS_NOISY)) printf("i:%d\n", i); symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); @@ -2982,11 +3282,13 @@ static void test_hrt(int index, int debug) { testFinish(); } +// See also `test_gs1nocheck_mode()` in "test.gs1.c" for GS1_128-based and DBAR_EXP-based symbologies static void test_input(int index, int debug) { struct item { int symbology; int input_mode; + int option_1; char *data; char *composite; @@ -2995,99 +3297,109 @@ static void test_input(int index, int debug) { }; // s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<")) struct item data[] = { - /* 0*/ { BARCODE_EANX_CC, -1, "1234567", "[20]12", 0, "" }, // EAN-8 - /* 1*/ { BARCODE_EANX_CC, -1, "123456A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, // EAN-8 - /* 2*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, "123456A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, // Linear component still checked - /* 3*/ { BARCODE_EANX_CC, -1, "1234567", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, - /* 4*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, "1234567", "[20]1A", 0, "" }, - /* 5*/ { BARCODE_EANX_CC, -1, "1234567", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, - /* 6*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, "1234567", "[02]12345678901234", 0, "" }, - /* 7*/ { BARCODE_EANX_CC, -1, "12345671", "[20]12", 0, "" }, // EAN-13 for EANX_CC as length 8 only EAN-8 for EANX_CHK - /* 8*/ { BARCODE_EANX_CC, -1, "123456789012", "[20]12", 0, "" }, // EAN-13 - /* 9*/ { BARCODE_EANX_CC, -1, "1234567890128", "[20]12", 0, "" }, // EAN-13 - /* 10*/ { BARCODE_EANX_CC, -1, "1234567890123", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 275: Invalid check digit '3', expecting '8' in linear component" }, - /* 11*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, "1234567890123", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 275: Invalid check digit '3', expecting '8' in linear component" }, // Linear component still checked - /* 12*/ { BARCODE_EANX_CC, -1, "12345678901234", "[20]12", ZINT_ERROR_TOO_LONG, "Error 448: Input too long (13 character maximum) in linear component" }, - /* 13*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, "12345678901234", "[20]12", ZINT_ERROR_TOO_LONG, "Error 448: Input too long (13 character maximum) in linear component" }, - /* 14*/ { BARCODE_EANX_CC, -1, "123456789012A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, - /* 15*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, "123456789012A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, - /* 16*/ { BARCODE_EANX_CC, -1, "1234567890128", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, // AI (20) should be 2 nos. - /* 17*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, "1234567890128", "[20]1A", 0, "" }, - /* 18*/ { BARCODE_EANX_CC, -1, "1234567890128", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, - /* 19*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, "1234567890128", "[02]12345678901234", 0, "" }, - /* 20*/ { BARCODE_DBAR_OMN_CC, -1, "1234567890123", "[20]12", 0, "" }, - /* 21*/ { BARCODE_DBAR_OMN_CC, -1, "12345678901231", "[20]12", 0, "" }, - /* 22*/ { BARCODE_DBAR_OMN_CC, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 388: Invalid check digit '2', expecting '1' in linear component" }, - /* 23*/ { BARCODE_DBAR_OMN_CC, GS1NOCHECK_MODE, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 388: Invalid check digit '2', expecting '1' in linear component" }, // Linear component still checked - /* 24*/ { BARCODE_DBAR_OMN_CC, -1, "123456789012312", "[20]12", ZINT_ERROR_TOO_LONG, "Error 380: Input too long (14 character maximum) in linear component" }, - /* 25*/ { BARCODE_DBAR_OMN_CC, GS1NOCHECK_MODE, "123456789012312", "[20]12", ZINT_ERROR_TOO_LONG, "Error 380: Input too long (14 character maximum) in linear component" }, - /* 26*/ { BARCODE_DBAR_OMN_CC, -1, "1234567890123A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 381: Invalid character in data (digits only) in linear component" }, - /* 27*/ { BARCODE_DBAR_OMN_CC, GS1NOCHECK_MODE, "1234567890123A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 381: Invalid character in data (digits only) in linear component" }, - /* 28*/ { BARCODE_DBAR_OMN_CC, -1, "12345678901231", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, // AI (20) should be 2 nos. - /* 29*/ { BARCODE_DBAR_OMN_CC, GS1NOCHECK_MODE, "12345678901231", "[20]1A", 0, "" }, - /* 30*/ { BARCODE_DBAR_OMN_CC, -1, "12345678901231", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, - /* 31*/ { BARCODE_DBAR_OMN_CC, GS1NOCHECK_MODE, "12345678901231", "[02]12345678901234", 0, "" }, - /* 32*/ { BARCODE_DBAR_LTD_CC, -1, "1234567890123", "[20]12", 0, "" }, - /* 33*/ { BARCODE_DBAR_LTD_CC, -1, "12345678901231", "[20]12", 0, "" }, - /* 34*/ { BARCODE_DBAR_LTD_CC, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 389: Invalid check digit '2', expecting '1' in linear component" }, - /* 35*/ { BARCODE_DBAR_LTD_CC, GS1NOCHECK_MODE, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 389: Invalid check digit '2', expecting '1' in linear component" }, // Linear component still checked - /* 36*/ { BARCODE_DBAR_LTD_CC, -1, "123456789012345", "[20]12", ZINT_ERROR_TOO_LONG, "Error 382: Input too long (14 character maximum) in linear component" }, - /* 37*/ { BARCODE_DBAR_LTD_CC, GS1NOCHECK_MODE, "123456789012345", "[20]12", ZINT_ERROR_TOO_LONG, "Error 382: Input too long (14 character maximum) in linear component" }, - /* 38*/ { BARCODE_DBAR_LTD_CC, -1, "A1234567890123", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 383: Invalid character in data (digits only) in linear component" }, - /* 39*/ { BARCODE_DBAR_LTD_CC, GS1NOCHECK_MODE, "A1234567890123", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 383: Invalid character in data (digits only) in linear component" }, - /* 40*/ { BARCODE_DBAR_LTD_CC, -1, "12345678901231", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, // AI (20) should be 2 nos. - /* 41*/ { BARCODE_DBAR_LTD_CC, GS1NOCHECK_MODE, "12345678901231", "[20]1A", 0, "" }, - /* 42*/ { BARCODE_DBAR_LTD_CC, -1, "12345678901231", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, - /* 43*/ { BARCODE_DBAR_LTD_CC, GS1NOCHECK_MODE, "12345678901231", "[02]12345678901234", 0, "" }, - /* 44*/ { BARCODE_UPCA_CC, -1, "12345678901", "[20]12", 0, "" }, - /* 45*/ { BARCODE_UPCA_CC, -1, "123456789012", "[20]12", 0, "" }, - /* 46*/ { BARCODE_UPCA_CC, -1, "123456789013", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 270: Invalid check digit '3', expecting '2' in linear component" }, - /* 47*/ { BARCODE_UPCA_CC, GS1NOCHECK_MODE, "123456789013", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 270: Invalid check digit '3', expecting '2' in linear component" }, // Linear component still checked - /* 48*/ { BARCODE_UPCA_CC, -1, "1234567890123", "[20]12", ZINT_ERROR_TOO_LONG, "Error 289: Input wrong length (12 character maximum) in linear component" }, - /* 49*/ { BARCODE_UPCA_CC, GS1NOCHECK_MODE, "1234567890123", "[20]12", ZINT_ERROR_TOO_LONG, "Error 289: Input wrong length (12 character maximum) in linear component" }, - /* 50*/ { BARCODE_UPCA_CC, -1, "12345678901A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, - /* 51*/ { BARCODE_UPCA_CC, GS1NOCHECK_MODE, "12345678901A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, - /* 52*/ { BARCODE_UPCA_CC, -1, "123456789012", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, // AI (20) should be 2 nos. - /* 53*/ { BARCODE_UPCA_CC, GS1NOCHECK_MODE, "123456789012", "[20]1A", 0, "" }, - /* 54*/ { BARCODE_UPCA_CC, -1, "123456789012", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, - /* 55*/ { BARCODE_UPCA_CC, GS1NOCHECK_MODE, "123456789012", "[02]12345678901234", 0, "" }, - /* 56*/ { BARCODE_UPCE_CC, -1, "123456", "[20]12", 0, "" }, - /* 57*/ { BARCODE_UPCE_CC, -1, "1234567", "[20]12", 0, "" }, - /* 58*/ { BARCODE_UPCE_CC, -1, "12345670", "[20]12", 0, "" }, // Check digit can now be given for UPCE_CC, like UPCA_CC - /* 59*/ { BARCODE_UPCE_CC, -1, "12345671", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 274: Invalid check digit '1', expecting '0' in linear component" }, - /* 60*/ { BARCODE_UPCE_CC, GS1NOCHECK_MODE, "12345671", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 274: Invalid check digit '1', expecting '0' in linear component" }, // Linear component still checked - /* 61*/ { BARCODE_UPCE_CC, -1, "123456712", "[20]12", ZINT_ERROR_TOO_LONG, "Error 291: Input wrong length (8 character maximum) in linear component" }, - /* 62*/ { BARCODE_UPCE_CC, GS1NOCHECK_MODE, "123456712", "[20]12", ZINT_ERROR_TOO_LONG, "Error 291: Input wrong length (8 character maximum) in linear component" }, - /* 63*/ { BARCODE_UPCE_CC, -1, "1234567A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, - /* 64*/ { BARCODE_UPCE_CC, GS1NOCHECK_MODE, "1234567A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, - /* 65*/ { BARCODE_UPCE_CC, -1, "1234567", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, // AI (20) should be 2 nos. - /* 66*/ { BARCODE_UPCE_CC, GS1NOCHECK_MODE, "1234567", "[20]1A", 0, "" }, - /* 67*/ { BARCODE_UPCE_CC, -1, "1234567", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, - /* 68*/ { BARCODE_UPCE_CC, GS1NOCHECK_MODE, "1234567", "[02]12345678901234", 0, "" }, - /* 69*/ { BARCODE_DBAR_STK_CC, -1, "1234567890123", "[20]12", 0, "" }, - /* 70*/ { BARCODE_DBAR_STK_CC, -1, "12345678901231", "[20]12", 0, "" }, - /* 71*/ { BARCODE_DBAR_STK_CC, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 388: Invalid check digit '2', expecting '1' in linear component" }, - /* 72*/ { BARCODE_DBAR_STK_CC, GS1NOCHECK_MODE, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 388: Invalid check digit '2', expecting '1' in linear component" }, // Linear component still checked - /* 73*/ { BARCODE_DBAR_STK_CC, -1, "123456789012323", "[20]12", ZINT_ERROR_TOO_LONG, "Error 380: Input too long (14 character maximum) in linear component" }, - /* 74*/ { BARCODE_DBAR_STK_CC, GS1NOCHECK_MODE, "123456789012323", "[20]12", ZINT_ERROR_TOO_LONG, "Error 380: Input too long (14 character maximum) in linear component" }, - /* 75*/ { BARCODE_DBAR_STK_CC, -1, "1234567890123A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 381: Invalid character in data (digits only) in linear component" }, - /* 76*/ { BARCODE_DBAR_STK_CC, GS1NOCHECK_MODE, "1234567890123A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 381: Invalid character in data (digits only) in linear component" }, - /* 77*/ { BARCODE_DBAR_STK_CC, -1, "12345678901231", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, // AI (20) should be 2 nos. - /* 78*/ { BARCODE_DBAR_STK_CC, GS1NOCHECK_MODE, "12345678901231", "[20]1A", 0, "" }, - /* 79*/ { BARCODE_DBAR_STK_CC, -1, "12345678901231", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, - /* 80*/ { BARCODE_DBAR_STK_CC, GS1NOCHECK_MODE, "12345678901231", "[02]12345678901234", 0, "" }, - /* 81*/ { BARCODE_DBAR_OMNSTK_CC, -1, "1234567890123", "[20]12", 0, "" }, - /* 82*/ { BARCODE_DBAR_OMNSTK_CC, -1, "12345678901231", "[20]12", 0, "" }, - /* 83*/ { BARCODE_DBAR_OMNSTK_CC, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 388: Invalid check digit '2', expecting '1' in linear component" }, - /* 84*/ { BARCODE_DBAR_OMNSTK_CC, GS1NOCHECK_MODE, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 388: Invalid check digit '2', expecting '1' in linear component" }, // Linear component still checked - /* 85*/ { BARCODE_DBAR_OMNSTK_CC, -1, "123456789012312", "[20]12", ZINT_ERROR_TOO_LONG, "Error 380: Input too long (14 character maximum) in linear component" }, - /* 86*/ { BARCODE_DBAR_OMNSTK_CC, GS1NOCHECK_MODE, "123456789012312", "[20]12", ZINT_ERROR_TOO_LONG, "Error 380: Input too long (14 character maximum) in linear component" }, - /* 87*/ { BARCODE_DBAR_OMNSTK_CC, -1, "1234567890123A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 381: Invalid character in data (digits only) in linear component" }, - /* 88*/ { BARCODE_DBAR_OMNSTK_CC, GS1NOCHECK_MODE, "1234567890123A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 381: Invalid character in data (digits only) in linear component" }, - /* 89*/ { BARCODE_DBAR_OMNSTK_CC, -1, "12345678901231", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, // AI (20) should be 2 nos. - /* 90*/ { BARCODE_DBAR_OMNSTK_CC, GS1NOCHECK_MODE, "12345678901231", "[20]1A", 0, "" }, - /* 91*/ { BARCODE_DBAR_OMNSTK_CC, -1, "12345678901231", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, - /* 92*/ { BARCODE_DBAR_OMNSTK_CC, GS1NOCHECK_MODE, "12345678901231", "[02]12345678901234", 0, "" }, + /* 0*/ { BARCODE_EANX_CC, -1, -1, "1234567", "[20]12", 0, "" }, // EAN-8 + /* 1*/ { BARCODE_EANX_CC, -1, -1, "123456A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, // EAN-8 + /* 2*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, -1, "123456A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, // Linear component still checked + /* 3*/ { BARCODE_EANX_CC, -1, -1, "1234567", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, + /* 4*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, -1, "1234567", "[20]1A", 0, "" }, + /* 5*/ { BARCODE_EANX_CC, -1, -1, "1234567", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, + /* 6*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, -1, "1234567", "[02]12345678901234", 0, "" }, + /* 7*/ { BARCODE_EANX_CC, -1, -1, "12345671", "[20]12", 0, "" }, // EAN-13 for EANX_CC as length 8 only EAN-8 for EANX_CHK + /* 8*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]12", 0, "" }, // EAN-13 + /* 9*/ { BARCODE_EANX_CC, -1, -1, "1234567890128", "[20]12", 0, "" }, // EAN-13 + /* 10*/ { BARCODE_EANX_CC, -1, -1, "1234567890123", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 275: Invalid check digit '3', expecting '8' in linear component" }, + /* 11*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, -1, "1234567890123", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 275: Invalid check digit '3', expecting '8' in linear component" }, // Linear component still checked + /* 12*/ { BARCODE_EANX_CC, -1, -1, "12345678901234", "[20]12", ZINT_ERROR_TOO_LONG, "Error 448: Input too long (13 character maximum) in linear component" }, + /* 13*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, -1, "12345678901234", "[20]12", ZINT_ERROR_TOO_LONG, "Error 448: Input too long (13 character maximum) in linear component" }, + /* 14*/ { BARCODE_EANX_CC, -1, -1, "123456789012A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, + /* 15*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, -1, "123456789012A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, + /* 16*/ { BARCODE_EANX_CC, -1, -1, "1234567890128", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, // AI (20) should be 2 nos. + /* 17*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, -1, "1234567890128", "[20]1A", 0, "" }, + /* 18*/ { BARCODE_EANX_CC, -1, -1, "1234567890128", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, + /* 19*/ { BARCODE_EANX_CC, GS1NOCHECK_MODE, -1, "1234567890128", "[02]12345678901234", 0, "" }, + /* 20*/ { BARCODE_EANX_CC, -1, -1, "1234567890128", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567", 0, "" }, // Max CC-B for EAN-13 + /* 21*/ { BARCODE_EANX_CC, -1, -1, "1234567890128", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]1234567890123456789012345678901234567890123456789012345678", ZINT_ERROR_TOO_LONG, "Error 444: Input too long for selected 2D component" }, + /* 22*/ { BARCODE_EANX_CC, -1, 3, "1234567890128", "[20]12", ZINT_ERROR_INVALID_OPTION, "Error 447: Invalid mode (CC-C only valid with GS1-128 linear component)" }, + /* 23*/ { BARCODE_EANX_CC, -1, -1, "123456789012345678901", "[20]12", ZINT_ERROR_TOO_LONG, "Error 449: Input wrong length in linear component" }, + /* 24*/ { BARCODE_DBAR_OMN_CC, -1, -1, "1234567890123", "[20]12", 0, "" }, + /* 25*/ { BARCODE_DBAR_OMN_CC, -1, -1, "12345678901231", "[20]12", 0, "" }, + /* 26*/ { BARCODE_DBAR_OMN_CC, -1, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 388: Invalid check digit '2', expecting '1' in linear component" }, + /* 27*/ { BARCODE_DBAR_OMN_CC, GS1NOCHECK_MODE, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 388: Invalid check digit '2', expecting '1' in linear component" }, // Linear component still checked + /* 28*/ { BARCODE_DBAR_OMN_CC, -1, -1, "123456789012312", "[20]12", ZINT_ERROR_TOO_LONG, "Error 380: Input too long (14 character maximum) in linear component" }, + /* 29*/ { BARCODE_DBAR_OMN_CC, GS1NOCHECK_MODE, -1, "123456789012312", "[20]12", ZINT_ERROR_TOO_LONG, "Error 380: Input too long (14 character maximum) in linear component" }, + /* 30*/ { BARCODE_DBAR_OMN_CC, -1, -1, "1234567890123A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 381: Invalid character in data (digits only) in linear component" }, + /* 31*/ { BARCODE_DBAR_OMN_CC, GS1NOCHECK_MODE, -1, "1234567890123A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 381: Invalid character in data (digits only) in linear component" }, + /* 32*/ { BARCODE_DBAR_OMN_CC, -1, -1, "12345678901231", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, // AI (20) should be 2 nos. + /* 33*/ { BARCODE_DBAR_OMN_CC, GS1NOCHECK_MODE, -1, "12345678901231", "[20]1A", 0, "" }, + /* 34*/ { BARCODE_DBAR_OMN_CC, -1, -1, "12345678901231", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, + /* 35*/ { BARCODE_DBAR_OMN_CC, GS1NOCHECK_MODE, -1, "12345678901231", "[02]12345678901234", 0, "" }, + /* 36*/ { BARCODE_DBAR_LTD_CC, -1, -1, "1234567890123", "[20]12", 0, "" }, + /* 37*/ { BARCODE_DBAR_LTD_CC, -1, -1, "12345678901231", "[20]12", 0, "" }, + /* 38*/ { BARCODE_DBAR_LTD_CC, -1, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 389: Invalid check digit '2', expecting '1' in linear component" }, + /* 39*/ { BARCODE_DBAR_LTD_CC, GS1NOCHECK_MODE, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 389: Invalid check digit '2', expecting '1' in linear component" }, // Linear component still checked + /* 40*/ { BARCODE_DBAR_LTD_CC, -1, -1, "123456789012345", "[20]12", ZINT_ERROR_TOO_LONG, "Error 382: Input too long (14 character maximum) in linear component" }, + /* 41*/ { BARCODE_DBAR_LTD_CC, GS1NOCHECK_MODE, -1, "123456789012345", "[20]12", ZINT_ERROR_TOO_LONG, "Error 382: Input too long (14 character maximum) in linear component" }, + /* 42*/ { BARCODE_DBAR_LTD_CC, -1, -1, "A1234567890123", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 383: Invalid character in data (digits only) in linear component" }, + /* 43*/ { BARCODE_DBAR_LTD_CC, GS1NOCHECK_MODE, -1, "A1234567890123", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 383: Invalid character in data (digits only) in linear component" }, + /* 44*/ { BARCODE_DBAR_LTD_CC, -1, -1, "12345678901231", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, // AI (20) should be 2 nos. + /* 45*/ { BARCODE_DBAR_LTD_CC, GS1NOCHECK_MODE, -1, "12345678901231", "[20]1A", 0, "" }, + /* 46*/ { BARCODE_DBAR_LTD_CC, -1, -1, "12345678901231", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, + /* 47*/ { BARCODE_DBAR_LTD_CC, GS1NOCHECK_MODE, -1, "12345678901231", "[02]12345678901234", 0, "" }, + /* 48*/ { BARCODE_UPCA_CC, -1, -1, "12345678901", "[20]12", 0, "" }, + /* 49*/ { BARCODE_UPCA_CC, -1, -1, "123456789012", "[20]12", 0, "" }, + /* 50*/ { BARCODE_UPCA_CC, -1, -1, "123456789013", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 270: Invalid check digit '3', expecting '2' in linear component" }, + /* 51*/ { BARCODE_UPCA_CC, GS1NOCHECK_MODE, -1, "123456789013", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 270: Invalid check digit '3', expecting '2' in linear component" }, // Linear component still checked + /* 52*/ { BARCODE_UPCA_CC, -1, -1, "1234567890123", "[20]12", ZINT_ERROR_TOO_LONG, "Error 289: Input wrong length (12 character maximum) in linear component" }, + /* 53*/ { BARCODE_UPCA_CC, GS1NOCHECK_MODE, -1, "1234567890123", "[20]12", ZINT_ERROR_TOO_LONG, "Error 289: Input wrong length (12 character maximum) in linear component" }, + /* 54*/ { BARCODE_UPCA_CC, -1, -1, "12345678901A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, + /* 55*/ { BARCODE_UPCA_CC, GS1NOCHECK_MODE, -1, "12345678901A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, + /* 56*/ { BARCODE_UPCA_CC, -1, -1, "123456789012", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, // AI (20) should be 2 nos. + /* 57*/ { BARCODE_UPCA_CC, GS1NOCHECK_MODE, -1, "123456789012", "[20]1A", 0, "" }, + /* 58*/ { BARCODE_UPCA_CC, -1, -1, "123456789012", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, + /* 59*/ { BARCODE_UPCA_CC, GS1NOCHECK_MODE, -1, "123456789012", "[02]12345678901234", 0, "" }, + /* 60*/ { BARCODE_UPCE_CC, -1, -1, "123456", "[20]12", 0, "" }, + /* 61*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]12", 0, "" }, + /* 62*/ { BARCODE_UPCE_CC, -1, -1, "12345670", "[20]12", 0, "" }, // Check digit can now be given for UPCE_CC, like UPCA_CC + /* 63*/ { BARCODE_UPCE_CC, -1, -1, "12345671", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 274: Invalid check digit '1', expecting '0' in linear component" }, + /* 64*/ { BARCODE_UPCE_CC, GS1NOCHECK_MODE, -1, "12345671", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 274: Invalid check digit '1', expecting '0' in linear component" }, // Linear component still checked + /* 65*/ { BARCODE_UPCE_CC, -1, -1, "123456712", "[20]12", ZINT_ERROR_TOO_LONG, "Error 291: Input wrong length (8 character maximum) in linear component" }, + /* 66*/ { BARCODE_UPCE_CC, GS1NOCHECK_MODE, -1, "123456712", "[20]12", ZINT_ERROR_TOO_LONG, "Error 291: Input wrong length (8 character maximum) in linear component" }, + /* 67*/ { BARCODE_UPCE_CC, -1, -1, "1234567A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, + /* 68*/ { BARCODE_UPCE_CC, GS1NOCHECK_MODE, -1, "1234567A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 284: Invalid character in data (digits and \"+\" only) in linear component" }, + /* 69*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, // AI (20) should be 2 nos. + /* 70*/ { BARCODE_UPCE_CC, GS1NOCHECK_MODE, -1, "1234567", "[20]1A", 0, "" }, + /* 71*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, + /* 72*/ { BARCODE_UPCE_CC, GS1NOCHECK_MODE, -1, "1234567", "[02]12345678901234", 0, "" }, + /* 73*/ { BARCODE_DBAR_STK_CC, -1, -1, "1234567890123", "[20]12", 0, "" }, + /* 74*/ { BARCODE_DBAR_STK_CC, -1, -1, "12345678901231", "[20]12", 0, "" }, + /* 75*/ { BARCODE_DBAR_STK_CC, -1, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 388: Invalid check digit '2', expecting '1' in linear component" }, + /* 76*/ { BARCODE_DBAR_STK_CC, GS1NOCHECK_MODE, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 388: Invalid check digit '2', expecting '1' in linear component" }, // Linear component still checked + /* 77*/ { BARCODE_DBAR_STK_CC, -1, -1, "123456789012323", "[20]12", ZINT_ERROR_TOO_LONG, "Error 380: Input too long (14 character maximum) in linear component" }, + /* 78*/ { BARCODE_DBAR_STK_CC, GS1NOCHECK_MODE, -1, "123456789012323", "[20]12", ZINT_ERROR_TOO_LONG, "Error 380: Input too long (14 character maximum) in linear component" }, + /* 79*/ { BARCODE_DBAR_STK_CC, -1, -1, "1234567890123A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 381: Invalid character in data (digits only) in linear component" }, + /* 80*/ { BARCODE_DBAR_STK_CC, GS1NOCHECK_MODE, -1, "1234567890123A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 381: Invalid character in data (digits only) in linear component" }, + /* 81*/ { BARCODE_DBAR_STK_CC, -1, -1, "12345678901231", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, // AI (20) should be 2 nos. + /* 82*/ { BARCODE_DBAR_STK_CC, GS1NOCHECK_MODE, -1, "12345678901231", "[20]1A", 0, "" }, + /* 83*/ { BARCODE_DBAR_STK_CC, -1, -1, "12345678901231", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, + /* 84*/ { BARCODE_DBAR_STK_CC, GS1NOCHECK_MODE, -1, "12345678901231", "[02]12345678901234", 0, "" }, + /* 85*/ { BARCODE_DBAR_OMNSTK_CC, -1, -1, "1234567890123", "[20]12", 0, "" }, + /* 86*/ { BARCODE_DBAR_OMNSTK_CC, -1, -1, "12345678901231", "[20]12", 0, "" }, + /* 87*/ { BARCODE_DBAR_OMNSTK_CC, -1, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 388: Invalid check digit '2', expecting '1' in linear component" }, + /* 88*/ { BARCODE_DBAR_OMNSTK_CC, GS1NOCHECK_MODE, -1, "12345678901232", "[20]12", ZINT_ERROR_INVALID_CHECK, "Error 388: Invalid check digit '2', expecting '1' in linear component" }, // Linear component still checked + /* 89*/ { BARCODE_DBAR_OMNSTK_CC, -1, -1, "123456789012312", "[20]12", ZINT_ERROR_TOO_LONG, "Error 380: Input too long (14 character maximum) in linear component" }, + /* 90*/ { BARCODE_DBAR_OMNSTK_CC, GS1NOCHECK_MODE, -1, "123456789012312", "[20]12", ZINT_ERROR_TOO_LONG, "Error 380: Input too long (14 character maximum) in linear component" }, + /* 91*/ { BARCODE_DBAR_OMNSTK_CC, -1, -1, "1234567890123A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 381: Invalid character in data (digits only) in linear component" }, + /* 92*/ { BARCODE_DBAR_OMNSTK_CC, GS1NOCHECK_MODE, -1, "1234567890123A", "[20]12", ZINT_ERROR_INVALID_DATA, "Error 381: Invalid character in data (digits only) in linear component" }, + /* 93*/ { BARCODE_DBAR_OMNSTK_CC, -1, -1, "12345678901231", "[20]1A", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (20) position 2: Non-numeric character 'A' in 2D component" }, // AI (20) should be 2 nos. + /* 94*/ { BARCODE_DBAR_OMNSTK_CC, GS1NOCHECK_MODE, -1, "12345678901231", "[20]1A", 0, "" }, + /* 95*/ { BARCODE_DBAR_OMNSTK_CC, -1, -1, "12345678901231", "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (02) position 14: Bad checksum '4', expected '1' in 2D component" }, + /* 96*/ { BARCODE_DBAR_OMNSTK_CC, GS1NOCHECK_MODE, -1, "12345678901231", "[02]12345678901234", 0, "" }, + /* 97*/ { BARCODE_GS1_128_CC, -1, -1, "", "[20]12", ZINT_ERROR_INVALID_OPTION, "Error 445: No primary (linear) message in 2D composite" }, + /* 98*/ { BARCODE_GS1_128_CC, -1, -1, "[01]12345678901231", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[98]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[99]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "" }, // Tries CC-A then CC-B then CC-C - ensure errtxt empty + /* 99*/ { BARCODE_GS1_128_CC, -1, -1, "[01]12345678901231[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890123456789012345678901234", "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[98]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[99]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[98]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[99]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[94]123456789012345678901234567890123456789012345678901234567890123", 0, "" }, // Max linear and CC-C input + /*100*/ { BARCODE_GS1_128_CC, -1, -1, "[01]12345678901231[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890123456789012345678901234", "[91]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[92]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[94]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[95]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[96]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[97]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[98]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[99]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[91]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[92]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[94]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[95]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[96]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL", ZINT_ERROR_TOO_LONG, "Error 442: Input too long for selected 2D component" }, // Max linear and oversized CC-C input + /*101*/ { BARCODE_GS1_128_CC, -1, -1, "[01]12345678901231", "[91]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[92]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[94]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[95]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[96]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[97]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[98]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[99]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[91]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[92]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[94]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[95]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[96]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[91]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[92]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[91]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[92]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI" "JKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL[93]ABCDEFGHIJKLM", ZINT_ERROR_TOO_LONG, "Error 446: 2D component input data too long" }, // Reduced length 2291 + /*102*/ { BARCODE_GS1_128_CC, -1, -1, "[01]12345678901231", "[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012" "345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[00]123456789012345675[11]121212[20]12", 0, "" }, // Reduced length 2372 digits (no FNC1s) with not recommended ECC 4 > 2361 digit limit given in ISO/IEC 24723:2010 4.1 (d)(2)(iii) }; int data_size = ARRAY_SIZE(data); int i, length, composite_length, ret; @@ -3102,7 +3414,7 @@ static void test_input(int index, int debug) { 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, -1, -1 /*output_options*/, data[i].data, -1, debug); + length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/, data[i].option_1, -1, -1, -1 /*output_options*/, data[i].data, -1, debug); assert_zero(length >= 128, "i:%d length %d >= 128\n", i, length); strcpy(symbol->primary, data[i].data); diff --git a/backend/tests/test_dmatrix.c b/backend/tests/test_dmatrix.c index 945c054b..abe89e9f 100644 --- a/backend/tests/test_dmatrix.c +++ b/backend/tests/test_dmatrix.c @@ -540,6 +540,7 @@ static void test_input(int index, int generate, int debug) { int eci; int option_2; int option_3; + int output_options; char *data; int ret; @@ -551,98 +552,105 @@ static void test_input(int index, int generate, int debug) { char *comment; }; struct item data[] = { - /* 0*/ { UNICODE_MODE, 0, -1, -1, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "#208" }, - /* 1*/ { UNICODE_MODE, 0, 5, -1, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "" }, - /* 2*/ { UNICODE_MODE, 0, -1, -1, "0466010592130100000k*AGUATY8", 0, 0, 18, 18, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 E6 19 5C 07 B7 82 5F D4 3D 65 B5 97 30 00 FC 2C 4C 30 52", "" }, - /* 3*/ { UNICODE_MODE, 0, -1, -1, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 FE 56 81 76 4F AB 22 B8 6F 0A", "" }, - /* 4*/ { UNICODE_MODE, 0, 5, -1, "0466010592130100000k*AGUATY80U", ZINT_ERROR_TOO_LONG, -1, 0, 0, 0, "Error 522: Input too long for selected symbol size", "" }, - /* 5*/ { UNICODE_MODE, 0, 6, -1, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 FE 56 81 76 4F AB 22 B8 6F 0A", "" }, - /* 6*/ { UNICODE_MODE, 0, -1, -1, "0466010592130100000k*AGUATY80UA", 0, 0, 20, 20, 0, "(40) 86 C4 83 87 DE 8F 83 82 82 E6 19 5C 07 B7 82 5F D4 3D 1E 5F FE 81 BB 90 01 2A 31 9F", "BWIPP different encodation" }, - /* 7*/ { UNICODE_MODE, 0, -1, -1, ">*\015>*\015>", 0, 0, 14, 14, 1, "EE 0C A9 0C A9 FE 3F 81 42 B2 11 A8 F9 0A EC C1 1E 41", "X12 symbols_left 3, process_p 1" }, - /* 8*/ { UNICODE_MODE, 0, -1, -1, ">*\015>*\015>*", 0, 0, 14, 14, 1, "EE 0C A9 0C A9 FE 3F 2B 3F 05 D2 10 1B 9A 55 2F 68 C5", "X12 symbols_left 3, process_p 2" }, - /* 9*/ { UNICODE_MODE, 0, -1, -1, ">*\015>*\015>*\015", 0, 0, 14, 14, 1, "EE 0C A9 0C A9 0C A9 FE 1F 30 3F EE 45 C1 1C D7 5F 7E", "X12 symbols_left 1, process_p 0" }, - /* 10*/ { UNICODE_MODE, 0, -1, -1, "ABCDEF", 0, 0, 12, 12, 1, "E6 59 E9 6D 24 3D 15 EF AA 21 F9 59", "C40 symbols_left 0, process_p 0" }, - /* 11*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFG", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 FE 48 81 8C 7E 09 5E 10 64 BC 5F 4C 91", "C40 symbols_left 3, process_p 1" }, - /* 12*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 FE 48 49 2E 31 00 73 3B 8F 4B 55 93 19", "C40 symbols_left 3, process_p 2" }, - /* 13*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHI", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 80 5F FE 01 DE 20 9F AA C2 FF 8F 08 97", "C40 symbols_left 1, process_p 0" }, - /* 14*/ { UNICODE_MODE, 0, -1, -1, "ABCDEF\001G", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 00 3D FE 5D 5A F5 0A 8A 4E 1D 63 07 B9", "C40 symbols_left 1, process_p 0" }, - /* 15*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFG\001", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 02 FE 14 A3 27 63 01 2F B1 94 FE FA", "C40 symbols_left 1, process_p 0" }, - /* 16*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFG\001H", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 02 49 C2 E6 DD 06 89 51 BA 8E 9D 1F", "C40 symbols_left 1, process_p 1" }, - /* 17*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH\001", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 02 81 BD 6D F3 94 FF 82 A6 BF BB F1 4F", "C40 symbols_left 1, process_p 1, backtracks" }, - /* 18*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGH\001", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 02 81 FB 93 AE 8B 1C 90 DF FE EB C5 A0 2A 6A 4F", "C40 symbols_left 1, process_p 1, backtracks" }, - /* 19*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH\001I", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 02 4A E1 0D DD BC 56 E4 66 52 E6 AE 02", "C40 symbols_left 3, process_p 2, backtracks" }, - /* 20*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGH\001I", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 02 4A 81 93 51 DF C0 0C D3 F9 72 13 17 52 5B 7E", "C40 symbols_left 5, process_p 2, backtracks" }, - /* 21*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHI\001", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 80 5F FE 02 81 47 6C 3E 49 D3 FA 46 47 53 6E E5", "Switches to ASC for last char" }, - /* 22*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGHI\001", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F FE 02 81 FB 93 33 E3 4F F7 2D 08 8A BF 64 C3 B0 26", "Switches to ASC for last char" }, - /* 23*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH\001I\001", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 02 4A 02 81 BD 5D C0 B9 09 25 87 3A 09 23 9D C0", "C40 symbols_left 1, process_p 1, backtracks 2" }, - /* 24*/ { UNICODE_MODE, 0, -1, -1, "ABCDEF+G", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 07 E5 FE 6B 35 71 7F 3D 57 59 46 F7 B9", "C40 symbols_left 1, process_p 0" }, - /* 25*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFG+", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 33 FE 33 F5 97 60 73 48 13 2E E5 74", "C40 symbols_left 1, process_p 0" }, - /* 26*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFG+H", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 33 49 E5 B0 6D 05 FB 36 18 34 86 91", "C40 symbols_left 1, process_p 1" }, - /* 27*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH+", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 2C 81 02 BD 40 CF 3B 06 C2 DF 36 E0 48", "C40 symbols_left 1, process_p 1, backtracks" }, - /* 28*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGH+", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 2C 81 FB 93 F6 78 B5 69 0B 83 C6 32 62 1A D2 FF", "C40 symbols_left 1, process_p 1, backtracks" }, - /* 29*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH+I", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 2C 4A 5E DD 6E E7 92 60 02 32 6B BF 05", "C40 symbols_left 3, process_p 2, backtracks" }, - /* 30*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGH+I", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 2C 4A 81 93 09 2C 69 F5 07 84 5F E4 D5 62 E3 CE", "C40 symbols_left 5, process_p 2, backtracks" }, - /* 31*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHI+", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 80 5F FE 2C 81 F8 BC 8D 12 17 7E 22 27 DE 7F E2", "C40 symbols_left 3, process_p 2, backtracks" }, - /* 32*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGHI+", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F FE 2C 81 FB 93 6B 10 E6 0E F9 75 A7 48 A6 F3 08 96", "Switches to ASC for last char" }, - /* 33*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFjG", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 0E 25 FE DA 14 D7 15 47 69 9D 4A 54 6D", "C40 symbols_left 1, process_p 0" }, - /* 34*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGj", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 5B FE B5 F3 24 0A 99 26 D6 CC A8 40", "C40 symbols_left 1, process_p 0" }, - /* 35*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGjH", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 5B 49 63 B6 DE 6F 11 58 DD D6 CB A5", "C40 symbols_left 1, process_p 1" }, - /* 36*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHj", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 6B 81 ED 78 CB 9F 52 EE 52 88 91 67 96", "C40 symbols_left 1, process_p 1, backtracks" }, - /* 37*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGHj", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 6B 81 FB 93 BF 72 03 35 09 37 98 FF 39 A7 E3 6D", "C40 symbols_left 1, process_p 1, backtracks" }, - /* 38*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHjI", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 6B 4A B1 18 E5 B7 FB 88 92 65 CC 38 DB", "C40 symbols_left 3, process_p 2, backtracks" }, - /* 39*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGHjI", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 6B 4A 81 93 40 26 DF A9 05 30 01 29 8E DF D2 5C", "C40 symbols_left 5, process_p 2, backtracks" }, - /* 40*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHIj", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 80 5F FE 6B 81 17 79 06 42 7E 96 B2 70 79 F8 3C", "Switches to ASC for last char" }, - /* 41*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHIJÊ", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F FE 4B EB 4B 81 DD D9 F9 C9 C5 38 F3 4B DB 80 92 A7", "Switches to ASC for last 2 chars" }, - /* 42*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHIJKÊ", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F FE 4B 4C EB 4B 15 17 46 06 70 F3 15 74 45 26 72 2D", "C40 symbols_left 3, process_p 2, backtracks" }, - /* 43*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHIJKª", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F 93 82 BB B2 FE 11 5C 60 32 A6 DE FC 7B 30 F1 03 56", "C40 symbols_left 1, process_p 0" }, - /* 44*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHIJKê", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F 93 82 BB DB FE 78 43 69 3C C2 FE F5 2E 1B 4F B6 04", "C40 symbols_left 1, process_p 0" }, - /* 45*/ { UNICODE_MODE, 0, -1, -1, "abcdef", 0, 0, 12, 12, 1, "EF 59 E9 6D 24 E2 CC D9 B4 55 E2 6A", "TEX symbols_left 0, process_p 0" }, - /* 46*/ { UNICODE_MODE, 0, -1, -1, "abcdefg", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 FE 68 81 A9 65 CD 3A A2 E9 E0 B7 E1 E5", "TEX symbols_left 3, process_p 1" }, - /* 47*/ { UNICODE_MODE, 0, -1, -1, "abcdefgh", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 FE 68 69 68 36 28 3C 85 5A E9 D4 49 9A", "TEX symbols_left 3, process_p 2" }, - /* 48*/ { UNICODE_MODE, 0, -1, -1, "abcdefghi", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 80 5F FE DA BF FA 16 71 15 22 4D E3 F3", "TEX symbols_left 1, process_p 0" }, - /* 49*/ { UNICODE_MODE, 0, -1, -1, "abcdef\001g", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 00 3D FE 86 3B 2F 83 51 99 C0 A1 EC DD", "TEX symbols_left 1, process_p 0" }, - /* 50*/ { UNICODE_MODE, 0, -1, -1, "abcdefg\001", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 7D 02 FE CF C2 FD EA DA F8 6C 56 15 9E", "TEX symbols_left 1, process_p 0" }, - /* 51*/ { UNICODE_MODE, 0, -1, -1, "abcdefg\001h", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 7D 02 69 7A 9B EB A4 5E DE 99 25 01 8C", "TEX symbols_left 1, process_p 1" }, - /* 52*/ { UNICODE_MODE, 0, -1, -1, "abcdefgh\001", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 FE 68 69 02 81 EB 84 25 32 6E 1B 5A FB 1D 25 4A", "TEX symbols_left 1, process_p 1, backtracks" }, - /* 53*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "abcdefgh\001", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 FE 68 69 02 81 FB 93 93 FD 1E 3B BA 1D 16 4D 59 41 EC B9", "TEX symbols_left 1, process_p 1, backtracks" }, - /* 54*/ { UNICODE_MODE, 0, -1, -1, "abcdefgh\001i", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 FE 68 69 02 6A 31 35 48 9B 93 6E 15 BB 02 9D F4", "TEX symbols_left 3, process_p 2, backtracks" }, - /* 55*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "abcdefgh\001i", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 FE 68 69 02 6A 81 93 DE D7 EC 9B 7D 72 9C 68 B8 6E CF 31", "TEX symbols_left 3, process_p 2, backtracks" }, - /* 56*/ { UNICODE_MODE, 0, -1, -1, "abcdefghi\001", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 80 5F FE 02 81 4D AB 30 86 CD D1 9D F3 15 F5 B1", "Switches to ASC for last char" }, - /* 57*/ { UNICODE_MODE, 0, -1, -1, "abcdefgh\001i\001", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 FE 68 69 02 6A 02 81 32 55 EC 2E A7 AE 69 41 A6 1F 09 8F", "TEX symbols_left 1, process_p 1, backtracks 2" }, - /* 58*/ { UNICODE_MODE, 0, -1, -1, "abcdefJg", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 0E 25 FE 01 75 0D 9C 9C BE 40 88 BF 09", "TEX symbols_left 1, process_p 0" }, - /* 59*/ { UNICODE_MODE, 0, -1, -1, "abcdefgJ", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 7D 5B FE 6E 92 FE 83 42 F1 0B 0E 43 24", "TEX symbols_left 1, process_p 0" }, - /* 60*/ { UNICODE_MODE, 0, -1, -1, "abcdefgJh", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 7D 5B 69 DB CB E8 CD C6 D7 FE 7D 57 36", "TEX symbols_left 1, process_p 1" }, - /* 61*/ { UNICODE_MODE, 0, -1, -1, "abcdefghJ", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 FE 68 69 4B 81 15 8A 35 57 7F 33 B3 48 01 E0 BD", "TEX symbols_left 1, process_p 1, backtracks" }, - /* 62*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "abcdefghJ", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 FE 68 69 4B 81 FB 93 5B D4 D2 8B EE 85 F2 3E 3F 8E E5 04", "TEX symbols_left 1, process_p 1, backtracks" }, - /* 63*/ { UNICODE_MODE, 0, -1, -1, "abcdefghJi", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 FE 68 69 4B 6A CF 3B 58 FE 82 46 FC 08 1E 58 03", "TEX symbols_left 3, process_p 2, backtracks" }, - /* 64*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "abcdefghJi", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 FE 68 69 4B 6A 81 93 16 FE 20 2B 29 EA 78 1B DE A1 C6 8C", "TEX symbols_left 3, process_p 2, backtracks" }, - /* 65*/ { UNICODE_MODE, 0, -1, -1, "abcdefghiJ", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 80 5F FE 4B 81 B3 A5 20 E3 DC F9 74 40 09 30 46", "Switches to ASC for last char" }, - /* 66*/ { UNICODE_MODE, 0, -1, -1, "abcdefghijkÊ", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 80 5F 93 82 BB DB FE 3E C8 EC 73 58 A7 42 46 10 49 25 99", "TEX symbols_left 1, process_p 0" }, - /* 67*/ { UNICODE_MODE, 0, -1, -1, "abcdefghijkª", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 80 5F 93 82 BB B2 FE 57 D7 E5 7D 3C 87 4B 13 3B F7 90 CB", "TEX symbols_left 1, process_p 0" }, - /* 68*/ { UNICODE_MODE, 0, -1, -1, "abcdefghijkê", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 80 5F FE 6B 6C EB 6B 59 43 1A B1 96 F4 FF C5 B5 08 AE 2F", "TEX symbols_left 3, process_p 2, backtracks" }, - /* 69*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>", 0, 0, 12, 12, 1, "EE 00 2B 00 2B 83 3B 0A CE 32 36 65", "X12 symbols_left 0, process_p 0" }, - /* 70*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015", 0, 0, 14, 14, 1, "EE 00 2B 00 2B FE 0E 81 C0 6C BF 37 F6 D6 48 71 E2 38", "Switches to ASC for last char" }, - /* 71*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015*", 0, 0, 14, 14, 1, "EE 00 2B 00 2B FE 0E 2B BD DB 7C 8F 14 46 F1 9F 94 BC", "Switches to ASC for last 2 chars" }, - /* 72*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015*>", 0, 0, 14, 14, 1, "EE 00 2B 00 2B 00 2B FE BF 81 70 74 1C 65 10 0C 06 38", "X12 symbols_left 1, process_p 0, ASC unlatch at end" }, - /* 73*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015*>\015", 0, 0, 14, 14, 1, "EE 00 2B 00 2B 00 2B 0E 1C DB D8 26 3E EC CF 9C C3 4A", "X12 symbols_left 1, process_p 1, ASC no latch at end" }, - /* 74*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015*>\015*", 0, 0, 8, 32, 1, "EE 00 2B 00 2B 00 2B FE 0E 2B 65 37 5F 2F F3 96 BE 9A 03 55 68", "X12 symbols_left 3, process_p 2, ASC last 2 chars" }, - /* 75*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015*>\015*>", 0, 0, 8, 32, 1, "EE 00 2B 00 2B 00 2B 00 2B FE 6E 95 3A 10 58 4E 96 06 79 09 94", "X12 symbols_left 1, process_p 0, ASC unlatch at end" }, - /* 76*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C", 0, 0, 14, 14, 1, "F0 00 1C 5E 0B 2F C3 81 2D 71 45 13 9B FF A1 B0 0B E2", "EDIFACT symbols_left 1, process_p 0" }, - /* 77*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3", 0, 0, 14, 14, 1, "F0 00 1C 5E 0B 2F C3 34 81 E8 6C 9E CE 12 CB F5 58 3F", "EDIFACT symbols_left 1, process_p 1" }, - /* 78*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3+", 0, 0, 8, 32, 1, "F0 00 1C 5E 0B 2F C3 CE B7 C0 33 C6 81 E1 63 6E 5E B4 27 30 C9", "EDIFACT symbols_left 3, process_p 2" }, - /* 79*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3+D", 0, 0, 8, 32, 1, "F0 00 1C 5E 0B 2F C3 CE B1 1F 4D E1 79 04 2B BC 05 6C 38 73 39", "EDIFACT symbols_left 3, process_p 3" }, - /* 80*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3+D4", 0, 0, 8, 32, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 F4 EC B3 DC 03 A3 1F B5 86 C3 F7", "EDIFACT symbols_left 0, process_p 0" }, - /* 81*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3+D4=", 0, 0, 16, 16, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 3E 81 42 96 43 6E 92 0D A9 B1 65 3C CF 9B", "EDIFACT symbols_left 2, process_p 1" }, - /* 82*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3+D4=E", 0, 0, 16, 16, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 3E 46 AD 8C F2 D8 5D AF F3 65 08 1F E3 A5", "EDIFACT symbols_left 2, process_p 2" }, - /* 83*/ { DATA_MODE, 0, -1, -1, "\377\376", 0, 0, 12, 12, 1, "EB 80 EB 7F 81 6F A8 0F 21 6F 5F 88", "FN4 A7F FN4 A7E, 1 pad" }, - /* 84*/ { DATA_MODE, 0, -1, -1, "\377\376\375", 0, 0, 12, 12, 1, "E7 2C C0 55 E9 67 45 8A D2 7E A9 23", "BAS BFF BFE BFD, no padding" }, - /* 85*/ { DATA_MODE, 3, -1, -1, "\101\102\103\104\300\105\310", 0, 3, 16, 16, 1, "F1 04 E7 5E 2D C4 5B F1 03 1D 36 81 64 0E C0 77 9A 18 52 B2 F9 F0 04 39", "ECI 4 BAS B41 B42 B43 B44 BC0 B45 BC8" }, - /* 86*/ { UNICODE_MODE, 26, -1, -1, "ABCDÀEÈ", 0, 26, 12, 26, 1, "F1 1B E7 60 2D C4 5B F1 06 58 B3 C7 21 81 57 ED 3D C0 12 2E 6C 80 58 CC 2C 05 0D 31 FC 2D", "ECI 27 BAS B41 B42 B43 B44 BC3 B80 B45 BC3 B88" }, - /* 87*/ { UNICODE_MODE, 0, -1, -1, "β", ZINT_WARN_USES_ECI, 9, 12, 12, 1, "Warning F1 0A EB 63 81 41 56 DA C0 3D 2D CC", "ECI 10 FN4 A62" }, - /* 88*/ { UNICODE_MODE, 127, -1, -1, "A", 0, 127, 12, 12, 1, "F1 80 01 42 81 14 A2 86 07 F5 27 30", "ECI 128 A41" }, - /* 89*/ { UNICODE_MODE, 16382, -1, -1, "A", 0, 16382, 12, 12, 1, "F1 BF FE 42 81 29 57 AA A0 92 B2 45", "ECI 16383 A41" }, - /* 90*/ { UNICODE_MODE, 810899, -1, -1, "A", 0, 810899, 12, 12, 1, "F1 CC 51 05 42 BB A5 A7 8A C6 6E 0F", "ECI 810900 A41" }, - /* 91*/ { UNICODE_MODE | ESCAPE_MODE, -1, -1, -1, "[)>\\R05\\GA\\R\\E", 0, 0, 10, 10, 1, "EC 42 81 5D 17 49 F6 B6", "Macro05 A41" }, + /* 0*/ { UNICODE_MODE, 0, -1, -1, -1, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "#208" }, + /* 1*/ { UNICODE_MODE, 0, 5, -1, -1, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "" }, + /* 2*/ { UNICODE_MODE, 0, -1, -1, -1, "0466010592130100000k*AGUATY8", 0, 0, 18, 18, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 E6 19 5C 07 B7 82 5F D4 3D 65 B5 97 30 00 FC 2C 4C 30 52", "" }, + /* 3*/ { UNICODE_MODE, 0, -1, -1, -1, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 FE 56 81 76 4F AB 22 B8 6F 0A", "" }, + /* 4*/ { UNICODE_MODE, 0, 5, -1, -1, "0466010592130100000k*AGUATY80U", ZINT_ERROR_TOO_LONG, -1, 0, 0, 0, "Error 522: Input too long for selected symbol size", "" }, + /* 5*/ { UNICODE_MODE, 0, 6, -1, -1, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 FE 56 81 76 4F AB 22 B8 6F 0A", "" }, + /* 6*/ { UNICODE_MODE, 0, -1, -1, -1, "0466010592130100000k*AGUATY80UA", 0, 0, 20, 20, 0, "(40) 86 C4 83 87 DE 8F 83 82 82 E6 19 5C 07 B7 82 5F D4 3D 1E 5F FE 81 BB 90 01 2A 31 9F", "BWIPP different encodation" }, + /* 7*/ { UNICODE_MODE, 0, -1, -1, -1, ">*\015>*\015>", 0, 0, 14, 14, 1, "EE 0C A9 0C A9 FE 3F 81 42 B2 11 A8 F9 0A EC C1 1E 41", "X12 symbols_left 3, process_p 1" }, + /* 8*/ { UNICODE_MODE, 0, -1, -1, -1, ">*\015>*\015>*", 0, 0, 14, 14, 1, "EE 0C A9 0C A9 FE 3F 2B 3F 05 D2 10 1B 9A 55 2F 68 C5", "X12 symbols_left 3, process_p 2" }, + /* 9*/ { UNICODE_MODE, 0, -1, -1, -1, ">*\015>*\015>*\015", 0, 0, 14, 14, 1, "EE 0C A9 0C A9 0C A9 FE 1F 30 3F EE 45 C1 1C D7 5F 7E", "X12 symbols_left 1, process_p 0" }, + /* 10*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEF", 0, 0, 12, 12, 1, "E6 59 E9 6D 24 3D 15 EF AA 21 F9 59", "C40 symbols_left 0, process_p 0" }, + /* 11*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFG", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 FE 48 81 8C 7E 09 5E 10 64 BC 5F 4C 91", "C40 symbols_left 3, process_p 1" }, + /* 12*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGH", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 FE 48 49 2E 31 00 73 3B 8F 4B 55 93 19", "C40 symbols_left 3, process_p 2" }, + /* 13*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGHI", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 80 5F FE 01 DE 20 9F AA C2 FF 8F 08 97", "C40 symbols_left 1, process_p 0" }, + /* 14*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGHIJ", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 80 5F 4B AD 47 09 12 FF 2F 95 CA 5B 4A", "C40 symbols_left 1, process_p 1" }, + /* 15*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGHIJK", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 80 5F FE 4B 4C D8 69 88 60 B9 33 B9 31 E6 BF CA", "C40 symbols_left 3, process_p 2" }, + /* 16*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEF\001G", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 00 3D FE 5D 5A F5 0A 8A 4E 1D 63 07 B9", "C40 symbols_left 1, process_p 0" }, + /* 17*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFG\001", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 02 FE 14 A3 27 63 01 2F B1 94 FE FA", "C40 symbols_left 1, process_p 0" }, + /* 18*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFG\001H", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 02 49 C2 E6 DD 06 89 51 BA 8E 9D 1F", "C40 symbols_left 1, process_p 1" }, + /* 19*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGH\001", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 02 81 BD 6D F3 94 FF 82 A6 BF BB F1 4F", "C40 symbols_left 1, process_p 1, backtracks" }, + /* 20*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, "ABCDEFGH\001", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 02 81 FB 93 AE 8B 1C 90 DF FE EB C5 A0 2A 6A 4F", "C40 symbols_left 1, process_p 1, backtracks" }, + /* 21*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGH\001I", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 02 4A E1 0D DD BC 56 E4 66 52 E6 AE 02", "C40 symbols_left 3, process_p 2, backtracks" }, + /* 22*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, "ABCDEFGH\001I", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 02 4A 81 93 51 DF C0 0C D3 F9 72 13 17 52 5B 7E", "C40 symbols_left 5, process_p 2, backtracks" }, + /* 23*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGHI\001", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 80 5F FE 02 81 47 6C 3E 49 D3 FA 46 47 53 6E E5", "Switches to ASC for last char" }, + /* 24*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, "ABCDEFGHI\001", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F FE 02 81 FB 93 33 E3 4F F7 2D 08 8A BF 64 C3 B0 26", "Switches to ASC for last char" }, + /* 25*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGH\001I\001", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 02 4A 02 81 BD 5D C0 B9 09 25 87 3A 09 23 9D C0", "C40 symbols_left 1, process_p 1, backtracks 2" }, + /* 26*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEF+G", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 07 E5 FE 6B 35 71 7F 3D 57 59 46 F7 B9", "C40 symbols_left 1, process_p 0" }, + /* 27*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFG+", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 33 FE 33 F5 97 60 73 48 13 2E E5 74", "C40 symbols_left 1, process_p 0" }, + /* 28*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFG+H", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 33 49 E5 B0 6D 05 FB 36 18 34 86 91", "C40 symbols_left 1, process_p 1" }, + /* 29*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGH+", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 2C 81 02 BD 40 CF 3B 06 C2 DF 36 E0 48", "C40 symbols_left 1, process_p 1, backtracks" }, + /* 30*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, "ABCDEFGH+", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 2C 81 FB 93 F6 78 B5 69 0B 83 C6 32 62 1A D2 FF", "C40 symbols_left 1, process_p 1, backtracks" }, + /* 31*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGH+I", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 2C 4A 5E DD 6E E7 92 60 02 32 6B BF 05", "C40 symbols_left 3, process_p 2, backtracks" }, + /* 32*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, "ABCDEFGH+I", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 2C 4A 81 93 09 2C 69 F5 07 84 5F E4 D5 62 E3 CE", "C40 symbols_left 5, process_p 2, backtracks" }, + /* 33*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGHI+", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 80 5F FE 2C 81 F8 BC 8D 12 17 7E 22 27 DE 7F E2", "C40 symbols_left 3, process_p 2, backtracks" }, + /* 34*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, "ABCDEFGHI+", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F FE 2C 81 FB 93 6B 10 E6 0E F9 75 A7 48 A6 F3 08 96", "Switches to ASC for last char" }, + /* 35*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFjG", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 0E 25 FE DA 14 D7 15 47 69 9D 4A 54 6D", "C40 symbols_left 1, process_p 0" }, + /* 36*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGj", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 5B FE B5 F3 24 0A 99 26 D6 CC A8 40", "C40 symbols_left 1, process_p 0" }, + /* 37*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGjH", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 5B 49 63 B6 DE 6F 11 58 DD D6 CB A5", "C40 symbols_left 1, process_p 1" }, + /* 38*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGHj", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 6B 81 ED 78 CB 9F 52 EE 52 88 91 67 96", "C40 symbols_left 1, process_p 1, backtracks" }, + /* 39*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, "ABCDEFGHj", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 6B 81 FB 93 BF 72 03 35 09 37 98 FF 39 A7 E3 6D", "C40 symbols_left 1, process_p 1, backtracks" }, + /* 40*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGHjI", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 6B 4A B1 18 E5 B7 FB 88 92 65 CC 38 DB", "C40 symbols_left 3, process_p 2, backtracks" }, + /* 41*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, "ABCDEFGHjI", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 6B 4A 81 93 40 26 DF A9 05 30 01 29 8E DF D2 5C", "C40 symbols_left 5, process_p 2, backtracks" }, + /* 42*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGHIj", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 80 5F FE 6B 81 17 79 06 42 7E 96 B2 70 79 F8 3C", "Switches to ASC for last char" }, + /* 43*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGHIJÊ", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F FE 4B EB 4B 81 DD D9 F9 C9 C5 38 F3 4B DB 80 92 A7", "Switches to ASC for last 2 chars" }, + /* 44*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGHIJKÊ", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F FE 4B 4C EB 4B 15 17 46 06 70 F3 15 74 45 26 72 2D", "C40 symbols_left 3, process_p 2, backtracks" }, + /* 45*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGHIJKª", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F 93 82 BB B2 FE 11 5C 60 32 A6 DE FC 7B 30 F1 03 56", "C40 symbols_left 1, process_p 0" }, + /* 46*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGHIJKê", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F 93 82 BB DB FE 78 43 69 3C C2 FE F5 2E 1B 4F B6 04", "C40 symbols_left 1, process_p 0" }, + /* 47*/ { GS1_MODE, 0, -1, -1, -1, "[10]ABCDEFGH[10]ABc", 0, 0, 12, 26, 1, "E8 8C E6 59 E9 6D 24 80 4A A9 8D FE 42 43 64 81 83 B4 8F 6B 95 F6 CE A6 3C 5C 77 86 08 50", "C40 symbols_left 3, process_p 1, backtracks" }, + /* 48*/ { GS1_MODE, 0, -1, -1, GS1_GS_SEPARATOR, "[10]ABCDEFGH[10]ABc", 0, 0, 12, 26, 1, "E8 8C E6 59 E9 6D 24 80 49 B6 0D FE 42 43 64 81 79 E4 20 33 76 5C C7 23 E6 C5 FA 4C FF 88", "C40 symbols_left 3, process_p 1, backtracks" }, + /* 49*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdef", 0, 0, 12, 12, 1, "EF 59 E9 6D 24 E2 CC D9 B4 55 E2 6A", "TEX symbols_left 0, process_p 0" }, + /* 50*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefg", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 FE 68 81 A9 65 CD 3A A2 E9 E0 B7 E1 E5", "TEX symbols_left 3, process_p 1" }, + /* 51*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefgh", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 FE 68 69 68 36 28 3C 85 5A E9 D4 49 9A", "TEX symbols_left 3, process_p 2" }, + /* 52*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefghi", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 80 5F FE DA BF FA 16 71 15 22 4D E3 F3", "TEX symbols_left 1, process_p 0" }, + /* 53*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdef\001g", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 00 3D FE 86 3B 2F 83 51 99 C0 A1 EC DD", "TEX symbols_left 1, process_p 0" }, + /* 54*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefg\001", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 7D 02 FE CF C2 FD EA DA F8 6C 56 15 9E", "TEX symbols_left 1, process_p 0" }, + /* 55*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefg\001h", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 7D 02 69 7A 9B EB A4 5E DE 99 25 01 8C", "TEX symbols_left 1, process_p 1" }, + /* 56*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefgh\001", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 FE 68 69 02 81 EB 84 25 32 6E 1B 5A FB 1D 25 4A", "TEX symbols_left 1, process_p 1, backtracks" }, + /* 57*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, "abcdefgh\001", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 FE 68 69 02 81 FB 93 93 FD 1E 3B BA 1D 16 4D 59 41 EC B9", "TEX symbols_left 1, process_p 1, backtracks" }, + /* 58*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefgh\001i", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 FE 68 69 02 6A 31 35 48 9B 93 6E 15 BB 02 9D F4", "TEX symbols_left 3, process_p 2, backtracks" }, + /* 59*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, "abcdefgh\001i", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 FE 68 69 02 6A 81 93 DE D7 EC 9B 7D 72 9C 68 B8 6E CF 31", "TEX symbols_left 3, process_p 2, backtracks" }, + /* 60*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefghi\001", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 80 5F FE 02 81 4D AB 30 86 CD D1 9D F3 15 F5 B1", "Switches to ASC for last char" }, + /* 61*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefgh\001i\001", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 FE 68 69 02 6A 02 81 32 55 EC 2E A7 AE 69 41 A6 1F 09 8F", "TEX symbols_left 1, process_p 1, backtracks 2" }, + /* 62*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefJg", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 0E 25 FE 01 75 0D 9C 9C BE 40 88 BF 09", "TEX symbols_left 1, process_p 0" }, + /* 63*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefgJ", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 7D 5B FE 6E 92 FE 83 42 F1 0B 0E 43 24", "TEX symbols_left 1, process_p 0" }, + /* 64*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefgJh", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 7D 5B 69 DB CB E8 CD C6 D7 FE 7D 57 36", "TEX symbols_left 1, process_p 1" }, + /* 65*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefghJ", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 FE 68 69 4B 81 15 8A 35 57 7F 33 B3 48 01 E0 BD", "TEX symbols_left 1, process_p 1, backtracks" }, + /* 66*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, "abcdefghJ", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 FE 68 69 4B 81 FB 93 5B D4 D2 8B EE 85 F2 3E 3F 8E E5 04", "TEX symbols_left 1, process_p 1, backtracks" }, + /* 67*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefghJi", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 FE 68 69 4B 6A CF 3B 58 FE 82 46 FC 08 1E 58 03", "TEX symbols_left 3, process_p 2, backtracks" }, + /* 68*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, "abcdefghJi", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 FE 68 69 4B 6A 81 93 16 FE 20 2B 29 EA 78 1B DE A1 C6 8C", "TEX symbols_left 3, process_p 2, backtracks" }, + /* 69*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefghiJ", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 80 5F FE 4B 81 B3 A5 20 E3 DC F9 74 40 09 30 46", "Switches to ASC for last char" }, + /* 70*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefghijkÊ", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 80 5F 93 82 BB DB FE 3E C8 EC 73 58 A7 42 46 10 49 25 99", "TEX symbols_left 1, process_p 0" }, + /* 71*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefghijkª", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 80 5F 93 82 BB B2 FE 57 D7 E5 7D 3C 87 4B 13 3B F7 90 CB", "TEX symbols_left 1, process_p 0" }, + /* 72*/ { UNICODE_MODE, 0, -1, -1, -1, "abcdefghijkê", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 80 5F FE 6B 6C EB 6B 59 43 1A B1 96 F4 FF C5 B5 08 AE 2F", "TEX symbols_left 3, process_p 2, backtracks" }, + /* 73*/ { GS1_MODE, 0, -1, -1, -1, "[10]abcdefgh[10]abC", 0, 0, 12, 26, 1, "E8 8C EF 59 E9 6D 24 80 4A A9 8D FE 62 63 44 81 88 DC 73 33 70 A1 83 EA 50 CB 4E 17 90 DB", "TEX symbols left 3, process_p 1, backtracks" }, + /* 74*/ { GS1_MODE, 0, -1, -1, GS1_GS_SEPARATOR, "[10]abcdefgh[10]abC", 0, 0, 12, 26, 1, "E8 8C EF 59 E9 6D 24 80 49 B6 0D FE 62 63 44 81 72 8C DC 6B 93 0B 8A 6F 8A 52 C3 DD 67 03", "TEX symbols left 3, process_p 1, backtracks" }, + /* 75*/ { UNICODE_MODE, 0, -1, -1, -1, "\015*>\015*>", 0, 0, 12, 12, 1, "EE 00 2B 00 2B 83 3B 0A CE 32 36 65", "X12 symbols_left 0, process_p 0" }, + /* 76*/ { UNICODE_MODE, 0, -1, -1, -1, "\015*>\015*>\015", 0, 0, 14, 14, 1, "EE 00 2B 00 2B FE 0E 81 C0 6C BF 37 F6 D6 48 71 E2 38", "Switches to ASC for last char" }, + /* 77*/ { UNICODE_MODE, 0, -1, -1, -1, "\015*>\015*>\015*", 0, 0, 14, 14, 1, "EE 00 2B 00 2B FE 0E 2B BD DB 7C 8F 14 46 F1 9F 94 BC", "Switches to ASC for last 2 chars" }, + /* 78*/ { UNICODE_MODE, 0, -1, -1, -1, "\015*>\015*>\015*>", 0, 0, 14, 14, 1, "EE 00 2B 00 2B 00 2B FE BF 81 70 74 1C 65 10 0C 06 38", "X12 symbols_left 1, process_p 0, ASC unlatch at end" }, + /* 79*/ { UNICODE_MODE, 0, -1, -1, -1, "\015*>\015*>\015*>\015", 0, 0, 14, 14, 1, "EE 00 2B 00 2B 00 2B 0E 1C DB D8 26 3E EC CF 9C C3 4A", "X12 symbols_left 1, process_p 1, ASC no latch at end" }, + /* 80*/ { UNICODE_MODE, 0, -1, -1, -1, "\015*>\015*>\015*>\015*", 0, 0, 8, 32, 1, "EE 00 2B 00 2B 00 2B FE 0E 2B 65 37 5F 2F F3 96 BE 9A 03 55 68", "X12 symbols_left 3, process_p 2, ASC last 2 chars" }, + /* 81*/ { UNICODE_MODE, 0, -1, -1, -1, "\015*>\015*>\015*>\015*>", 0, 0, 8, 32, 1, "EE 00 2B 00 2B 00 2B 00 2B FE 6E 95 3A 10 58 4E 96 06 79 09 94", "X12 symbols_left 1, process_p 0, ASC unlatch at end" }, + /* 82*/ { UNICODE_MODE, 0, -1, -1, -1, "@A1^B2?C", 0, 0, 14, 14, 1, "F0 00 1C 5E 0B 2F C3 81 2D 71 45 13 9B FF A1 B0 0B E2", "EDIFACT symbols_left 1, process_p 0" }, + /* 83*/ { UNICODE_MODE, 0, -1, -1, -1, "@A1^B2?C3", 0, 0, 14, 14, 1, "F0 00 1C 5E 0B 2F C3 34 81 E8 6C 9E CE 12 CB F5 58 3F", "EDIFACT symbols_left 1, process_p 1" }, + /* 84*/ { UNICODE_MODE, 0, -1, -1, -1, "@A1^B2?C3+", 0, 0, 8, 32, 1, "F0 00 1C 5E 0B 2F C3 CE B7 C0 33 C6 81 E1 63 6E 5E B4 27 30 C9", "EDIFACT symbols_left 3, process_p 2" }, + /* 85*/ { UNICODE_MODE, 0, -1, -1, -1, "@A1^B2?C3+D", 0, 0, 8, 32, 1, "F0 00 1C 5E 0B 2F C3 CE B1 1F 4D E1 79 04 2B BC 05 6C 38 73 39", "EDIFACT symbols_left 3, process_p 3" }, + /* 86*/ { UNICODE_MODE, 0, -1, -1, -1, "@A1^B2?C3+D4", 0, 0, 8, 32, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 F4 EC B3 DC 03 A3 1F B5 86 C3 F7", "EDIFACT symbols_left 0, process_p 0" }, + /* 87*/ { UNICODE_MODE, 0, -1, -1, -1, "@A1^B2?C3+D4=", 0, 0, 16, 16, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 3E 81 42 96 43 6E 92 0D A9 B1 65 3C CF 9B", "EDIFACT symbols_left 2, process_p 1" }, + /* 88*/ { UNICODE_MODE, 0, -1, -1, -1, "@A1^B2?C3+D4=E", 0, 0, 16, 16, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 3E 46 AD 8C F2 D8 5D AF F3 65 08 1F E3 A5", "EDIFACT symbols_left 2, process_p 2" }, + /* 89*/ { DATA_MODE, 0, -1, -1, -1, "\377\376", 0, 0, 12, 12, 1, "EB 80 EB 7F 81 6F A8 0F 21 6F 5F 88", "FN4 A7F FN4 A7E, 1 pad" }, + /* 90*/ { DATA_MODE, 0, -1, -1, -1, "\377\376\375", 0, 0, 12, 12, 1, "E7 2C C0 55 E9 67 45 8A D2 7E A9 23", "BAS BFF BFE BFD, no padding" }, + /* 91*/ { DATA_MODE, 3, -1, -1, -1, "\101\102\103\104\300\105\310", 0, 3, 16, 16, 1, "F1 04 E7 5E 2D C4 5B F1 03 1D 36 81 64 0E C0 77 9A 18 52 B2 F9 F0 04 39", "ECI 4 BAS B41 B42 B43 B44 BC0 B45 BC8" }, + /* 92*/ { UNICODE_MODE, 26, -1, -1, -1, "ABCDÀEÈ", 0, 26, 12, 26, 1, "F1 1B E7 60 2D C4 5B F1 06 58 B3 C7 21 81 57 ED 3D C0 12 2E 6C 80 58 CC 2C 05 0D 31 FC 2D", "ECI 27 BAS B41 B42 B43 B44 BC3 B80 B45 BC3 B88" }, + /* 93*/ { UNICODE_MODE, 0, -1, -1, -1, "β", ZINT_WARN_USES_ECI, 9, 12, 12, 1, "Warning F1 0A EB 63 81 41 56 DA C0 3D 2D CC", "ECI 10 FN4 A62" }, + /* 94*/ { UNICODE_MODE, 127, -1, -1, -1, "A", 0, 127, 12, 12, 1, "F1 80 01 42 81 14 A2 86 07 F5 27 30", "ECI 128 A41" }, + /* 95*/ { UNICODE_MODE, 16382, -1, -1, -1, "A", 0, 16382, 12, 12, 1, "F1 BF FE 42 81 29 57 AA A0 92 B2 45", "ECI 16383 A41" }, + /* 96*/ { UNICODE_MODE, 810899, -1, -1, -1, "A", 0, 810899, 12, 12, 1, "F1 CC 51 05 42 BB A5 A7 8A C6 6E 0F", "ECI 810900 A41" }, + /* 97*/ { UNICODE_MODE | ESCAPE_MODE, -1, -1, -1, -1, "[)>\\R05\\GA\\R\\E", 0, 0, 10, 10, 1, "EC 42 81 5D 17 49 F6 B6", "Macro05 A41" }, + /* 98*/ { UNICODE_MODE, 0, -1, -1, -1, "ABCDEFGHIJKLM*", 0, 0, 16, 16, 1, "EE 59 E9 6D 24 80 5F 93 9A FE 4E 2B 09 FF 50 A2 83 BE 32 E1 2F 17 1E F3", "C40 == X12, p_r_6_2_1 true" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -665,15 +673,15 @@ static void test_input(int index, int generate, int debug) { symbol->debug = ZINT_DEBUG_TEST; // Needed to get codeword dump in errtxt - length = testUtilSetSymbol(symbol, BARCODE_DATAMATRIX, data[i].input_mode, data[i].eci, -1 /*option_1*/, data[i].option_2, data[i].option_3, -1 /*output_options*/, data[i].data, -1, debug); + length = testUtilSetSymbol(symbol, BARCODE_DATAMATRIX, data[i].input_mode, data[i].eci, -1 /*option_1*/, data[i].option_2, data[i].option_3, data[i].output_options, data[i].data, -1, debug); ret = ZBarcode_Encode(symbol, (unsigned char *) 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 (generate) { - printf(" /*%3d*/ { %s, %d, %d, %s, \"%s\", %s, %d, %d, %d, %d, \"%s\", \"%s\" },\n", + printf(" /*%3d*/ { %s, %d, %d, %s, %s, \"%s\", %s, %d, %d, %d, %d, \"%s\", \"%s\" },\n", i, testUtilInputModeName(data[i].input_mode), data[i].eci, data[i].option_2, testUtilOption3Name(data[i].option_3), - testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), + testUtilOutputOptionsName(data[i].output_options), testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), testUtilErrorName(data[i].ret), ret < ZINT_ERROR ? symbol->eci : -1, symbol->rows, symbol->width, data[i].bwipp_cmp, symbol->errtxt, data[i].comment); } else { if (ret < ZINT_ERROR) { @@ -689,7 +697,7 @@ static void test_input(int index, int generate, int debug) { if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); } else { char modules_dump[8192]; - assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump != -1\n", i); + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); ret = testUtilBwipp(i, symbol, -1, data[i].option_2, data[i].option_3, data[i].data, length, NULL, bwipp_buf, sizeof(bwipp_buf)); assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); diff --git a/backend/tests/test_dotcode.c b/backend/tests/test_dotcode.c index a3fe3255..82b6072c 100644 --- a/backend/tests/test_dotcode.c +++ b/backend/tests/test_dotcode.c @@ -45,7 +45,8 @@ static void test_large(int index, int debug) { /* 1*/ { 200, '0', 2941, ZINT_ERROR_INVALID_OPTION }, /* 2*/ { 200, '9', 200, 0 }, // Changes a number of mask scores re pre-Rev. 4 version, but best score still the same (7) /* 3*/ { 201, '0', 2940, ZINT_ERROR_INVALID_OPTION }, - /* 4*/ { 30, '\001', 71, 0 }, // Codeword length 72, ECC length 39, for ND + 1 == 112 + /* 4*/ { 201, '0', 2974, ZINT_ERROR_INVALID_OPTION }, // Height > 200 also + /* 5*/ { 30, '\001', 71, 0 }, // Codeword length 72, ECC length 39, for ND + 1 == 112 }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -81,6 +82,7 @@ static void test_options(int index, int debug) { int input_mode; int output_options; int option_2; + int option_3; char *data; int ret; @@ -89,16 +91,17 @@ static void test_options(int index, int debug) { }; // s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<")) struct item data[] = { - /* 0*/ { -1, -1, -1, "1", 0, 9, 14 }, - /* 1*/ { -1, -1, -1, "1234567890", 0, 12, 19 }, - /* 2*/ { -1, -1, 19, "1234567890", 0, 12, 19 }, - /* 3*/ { -1, -1, 12, "1234567890", 0, 19, 12 }, - /* 4*/ { -1, -1, 5, "1234567890", 0, 44, 5 }, - /* 5*/ { -1, -1, 4, "1234567890", ZINT_ERROR_INVALID_OPTION, -1, -1 }, // Cols < 5 - /* 6*/ { -1, -1, 200, "1234567890", ZINT_ERROR_INVALID_OPTION, -1, -1 }, // Not enough data - height 3 too small - /* 7*/ { -1, -1, 200, "1234567890123456789012345678901234567890", 0, 5, 200 }, // Cols 200 max - /* 8*/ { -1, -1, 200, "12345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, 7, 200 }, - /* 9*/ { -1, -1, 201, "12345678901234567890123456789012345678901234567890123456789012345678901234567890", ZINT_ERROR_INVALID_OPTION, -1, -1 }, + /* 0*/ { -1, -1, -1, -1, "1", 0, 9, 14 }, + /* 1*/ { -1, -1, -1, -1, "1234567890", 0, 12, 19 }, + /* 2*/ { -1, -1, 19, -1, "1234567890", 0, 12, 19 }, + /* 3*/ { -1, -1, 12, -1, "1234567890", 0, 19, 12 }, + /* 4*/ { -1, -1, 5, -1, "1234567890", 0, 44, 5 }, + /* 5*/ { -1, -1, 4, -1, "1234567890", ZINT_ERROR_INVALID_OPTION, -1, -1 }, // Cols < 5 + /* 6*/ { -1, -1, 200, -1, "1234567890", ZINT_ERROR_INVALID_OPTION, -1, -1 }, // Not enough data - height 3 too small + /* 7*/ { -1, -1, 200, -1, "1234567890123456789012345678901234567890", 0, 5, 200 }, // Cols 200 max + /* 8*/ { -1, -1, 200, -1, "12345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, 7, 200 }, + /* 9*/ { -1, -1, 201, -1, "12345678901234567890123456789012345678901234567890123456789012345678901234567890", ZINT_ERROR_INVALID_OPTION, -1, -1 }, + /* 10*/ { -1, -1, -1, 10 << 8, "1", 0, 9, 14 }, // Mask > 8 + 1 ignored }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -113,7 +116,7 @@ static void test_options(int index, int debug) { symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - length = testUtilSetSymbol(symbol, BARCODE_DOTCODE, data[i].input_mode, -1 /*eci*/, -1 /*option_1*/, data[i].option_2, -1, data[i].output_options, data[i].data, -1, debug); + length = testUtilSetSymbol(symbol, BARCODE_DOTCODE, data[i].input_mode, -1 /*eci*/, -1 /*option_1*/, data[i].option_2, data[i].option_3, data[i].output_options, data[i].data, -1, debug); ret = ZBarcode_Encode(symbol, (unsigned char *) 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); @@ -148,36 +151,37 @@ static void test_input(int index, int generate, int debug) { /* 4*/ { UNICODE_MODE, 899, "A", -1, 0, "6C 28 07 44 66 21", "" }, /* 5*/ { UNICODE_MODE, 12769, "A", -1, 0, "6C 28 70 49 66 21", "" }, /* 6*/ { UNICODE_MODE, 811799, "A", -1, 0, "6C 67 40 50 66 21", "" }, - /* 7*/ { UNICODE_MODE, -1, "\000", 1, 0, "65 40", "LatchA (0x65) NUL" }, - /* 8*/ { UNICODE_MODE, -1, "\010", -1, 0, "65 48", "LatchA (0x65) BS" }, - /* 9*/ { UNICODE_MODE, -1, "\011", -1, 0, "65 49", "Lead special; LatchA (0x65) HT" }, - /* 10*/ { UNICODE_MODE, -1, "\034", -1, 0, "65 5C", "Lead special; LatchA (0x65) FS" }, - /* 11*/ { UNICODE_MODE, -1, "\035", -1, 0, "65 5D", "Lead special; LatchA (0x65) GS" }, - /* 12*/ { UNICODE_MODE, -1, "\036", -1, 0, "65 5E", "Lead special; LatchA (0x65) RS" }, - /* 13*/ { UNICODE_MODE, -1, "\037", -1, 0, "65 5F", "LatchA (0x65) US" }, - /* 14*/ { UNICODE_MODE, -1, "\177", -1, 0, "66 5F", "ShiftB (0x66) DEL" }, - /* 15*/ { UNICODE_MODE, -1, "[)>\03605\035A\036\004", -1, 0, "6A 61 21", "[)>RS 05 GS A RS EOT; LatchB (0x6A) Macro97 (0x61) A" }, - /* 16*/ { UNICODE_MODE, -1, "[)>\03606\035\011\034\035\036\036\004", -1, 0, "6A 62 61 62 63 64", "[)>RS 06 GS HT FS GS RS RS EOT; LatchB (0x6A) Macro98 (0x62) HT FS GS RS" }, - /* 17*/ { UNICODE_MODE, -1, "[)>\03612\03512345\036\004", -1, 0, "6A 63 11 67 17 2D", "[)>RS 12 GS A RS EOT; LatchB (0x6A) Macro99 (0x63) 1 2xShiftC (0x67) 23 45" }, - /* 18*/ { UNICODE_MODE, -1, "[)>\03601Blah\004", -1, 0, "6A 64 10 11 22 4C 41 48", "[)>RS 01 Blah EOT; LatchB (0x6A) Macro100 (0x64) 0 1 B l a h" }, - /* 19*/ { UNICODE_MODE, -1, "[)>\03605\035A\004", -1, 0, "6A 64 10 15 63 21", "[)>RS 05 GS A EOT; LatchB (0x6A) Macro100 (0x64) 0 5 HT A" }, - /* 20*/ { UNICODE_MODE, -1, "[)>\03606A\004", -1, 0, "6A 64 10 16 21", "[)>RS 06 A EOT; LatchB (0x6A) Macro100 (0x64) 0 6 A" }, - /* 21*/ { UNICODE_MODE, -1, "[)>\036991\036\004", -1, 0, "6A 64 19 19 11 64", "[)>RS 99 1 RS EOT; LatchB (0x6A) Macro100 (0x64) 9 9 1 RS" }, - /* 22*/ { UNICODE_MODE, -1, "1712345610", -1, 0, "6B 64 0C 22 38", "FNC1 (0x6B) 17..10 12 34 56" }, - /* 23*/ { GS1_MODE, -1, "[17]123456[10]123", -1, ZINT_WARN_NONCOMPLIANT, "64 0C 22 38 0C 66 13", "17..10 12 34 56 12 ShiftB (0x66) 3" }, - /* 24*/ { GS1_MODE, -1, "[90]ABC[90]abc[90]123", -1, 0, "5A 6A 21 22 23 6B 19 10 41 42 43 6B 19 67 01 17", "90 LatchB (0x6A) A B C FNC1 (0x6B) 9 0 a b c FNC1 (0x6B) 9 2xShitfC (0x67) 01 23" }, - /* 25*/ { GS1_MODE | GS1PARENS_MODE, -1, "(90)ABC(90)abc(90)123", -1, 0, "5A 6A 21 22 23 6B 19 10 41 42 43 6B 19 67 01 17", "90 LatchB (0x6A) A B C FNC1 (0x6B) 9 0 a b c FNC1 (0x6B) 9 2xShitfC (0x67) 01 23" }, - /* 26*/ { UNICODE_MODE, -1, "99aA[{00\000", 9, 0, "6B 63 6A 41 21 3B 5B 10 10 65 40", "FNC1 (0x6B) 99 LatchB (0x6A) a A [ { 0 0 ShiftA (0x65) NUL" }, - /* 27*/ { UNICODE_MODE, -1, "\015\012", -1, 0, "66 60", "ShiftB (0x66) CR/LF" }, - /* 28*/ { UNICODE_MODE, -1, "A\015\012", -1, 0, "67 21 60", "2xShiftB (0x67) A CR/LF" }, - /* 29*/ { UNICODE_MODE, -1, "\015\015\012", -1, 0, "65 4D 4D 4A", "LatchA (0x65) CR CR LF" }, - /* 30*/ { UNICODE_MODE, -1, "ABCDE12345678", -1, 0, "6A 21 22 23 24 25 69 0C 22 38 4E", "LatchB (0x6A) A B C D 4xShiftC 12 34 56 78" }, - /* 31*/ { UNICODE_MODE, -1, "\000ABCD1234567890", 15, 0, "65 40 21 22 23 24 6A 0C 22 38 4E 5A", "LatchA (0x65) NULL A B C D LatchC (0x6A) 12 34 56 78 90" }, - /* 32*/ { DATA_MODE, -1, "\141\142\143\144\145\200\201\202\203\204\377", -1, 0, "6A 41 42 43 44 45 70 31 5A 35 21 5A 5F 02 31", "LatchB (0x6A) a b c d e BinaryLatch (0x70) 0x80 0x81 0x82 0x83 0x84 0xFF" }, - /* 33*/ { DATA_MODE, -1, "\200\061\062\240\063\064\201\202\065\066", -1, 0, "6E 40 0C 6F 00 22 70 03 10 42 6E 15 16", "UpperShiftA (0x6E) NUL 12 UpperShiftB (0x6F) SP 34 BinaryLatch (0x70) 0x81 0x82 TermB (0x6E) 5 6" }, - /* 34*/ { DATA_MODE, -1, "\200\201\202\203\061\062\063\064", -1, 0, "70 13 56 0A 59 2C 67 0C 22", "BinaryLatch (0x70) 0x80 0x81 0x82 0x83 Intr2xShiftC (0x67) 12 3" }, - /* 35*/ { DATA_MODE, -1, "\001\200\201\202\203\204\200\201\202\203\204", -1, 0, "65 41 70 31 5A 35 21 5A 5F 31 5A 35 21 5A 5F", "LatchA (0x65) SOH BinaryLatch (0x70) 0x80 0x81 0x82 0x83 0x80 0x81 0x82 0x83" }, - /* 36*/ { UNICODE_MODE, -1, "\001abc\011\015\012\036", -1, 0, "65 41 65 41 42 43 61 60 64", "LatchA (0x65) SOH 6xShiftB (0x65) a b c HT CR/LF RS" }, + /* 7*/ { UNICODE_MODE, 811800, "A", -1, ZINT_ERROR_INVALID_OPTION, "", "" }, + /* 8*/ { UNICODE_MODE, -1, "\000", 1, 0, "65 40", "LatchA (0x65) NUL" }, + /* 9*/ { UNICODE_MODE, -1, "\010", -1, 0, "65 48", "LatchA (0x65) BS" }, + /* 10*/ { UNICODE_MODE, -1, "\011", -1, 0, "65 49", "Lead special; LatchA (0x65) HT" }, + /* 11*/ { UNICODE_MODE, -1, "\034", -1, 0, "65 5C", "Lead special; LatchA (0x65) FS" }, + /* 12*/ { UNICODE_MODE, -1, "\035", -1, 0, "65 5D", "Lead special; LatchA (0x65) GS" }, + /* 13*/ { UNICODE_MODE, -1, "\036", -1, 0, "65 5E", "Lead special; LatchA (0x65) RS" }, + /* 14*/ { UNICODE_MODE, -1, "\037", -1, 0, "65 5F", "LatchA (0x65) US" }, + /* 15*/ { UNICODE_MODE, -1, "\177", -1, 0, "66 5F", "ShiftB (0x66) DEL" }, + /* 16*/ { UNICODE_MODE, -1, "[)>\03605\035A\036\004", -1, 0, "6A 61 21", "[)>RS 05 GS A RS EOT; LatchB (0x6A) Macro97 (0x61) A" }, + /* 17*/ { UNICODE_MODE, -1, "[)>\03606\035\011\034\035\036\036\004", -1, 0, "6A 62 61 62 63 64", "[)>RS 06 GS HT FS GS RS RS EOT; LatchB (0x6A) Macro98 (0x62) HT FS GS RS" }, + /* 18*/ { UNICODE_MODE, -1, "[)>\03612\03512345\036\004", -1, 0, "6A 63 11 67 17 2D", "[)>RS 12 GS A RS EOT; LatchB (0x6A) Macro99 (0x63) 1 2xShiftC (0x67) 23 45" }, + /* 19*/ { UNICODE_MODE, -1, "[)>\03601Blah\004", -1, 0, "6A 64 10 11 22 4C 41 48", "[)>RS 01 Blah EOT; LatchB (0x6A) Macro100 (0x64) 0 1 B l a h" }, + /* 20*/ { UNICODE_MODE, -1, "[)>\03605\035A\004", -1, 0, "6A 64 10 15 63 21", "[)>RS 05 GS A EOT; LatchB (0x6A) Macro100 (0x64) 0 5 HT A" }, + /* 21*/ { UNICODE_MODE, -1, "[)>\03606A\004", -1, 0, "6A 64 10 16 21", "[)>RS 06 A EOT; LatchB (0x6A) Macro100 (0x64) 0 6 A" }, + /* 22*/ { UNICODE_MODE, -1, "[)>\036991\036\004", -1, 0, "6A 64 19 19 11 64", "[)>RS 99 1 RS EOT; LatchB (0x6A) Macro100 (0x64) 9 9 1 RS" }, + /* 23*/ { UNICODE_MODE, -1, "1712345610", -1, 0, "6B 64 0C 22 38", "FNC1 (0x6B) 17..10 12 34 56" }, + /* 24*/ { GS1_MODE, -1, "[17]123456[10]123", -1, ZINT_WARN_NONCOMPLIANT, "64 0C 22 38 0C 66 13", "17..10 12 34 56 12 ShiftB (0x66) 3" }, + /* 25*/ { GS1_MODE, -1, "[90]ABC[90]abc[90]123", -1, 0, "5A 6A 21 22 23 6B 19 10 41 42 43 6B 19 67 01 17", "90 LatchB (0x6A) A B C FNC1 (0x6B) 9 0 a b c FNC1 (0x6B) 9 2xShitfC (0x67) 01 23" }, + /* 26*/ { GS1_MODE | GS1PARENS_MODE, -1, "(90)ABC(90)abc(90)123", -1, 0, "5A 6A 21 22 23 6B 19 10 41 42 43 6B 19 67 01 17", "90 LatchB (0x6A) A B C FNC1 (0x6B) 9 0 a b c FNC1 (0x6B) 9 2xShitfC (0x67) 01 23" }, + /* 27*/ { UNICODE_MODE, -1, "99aA[{00\000", 9, 0, "6B 63 6A 41 21 3B 5B 10 10 65 40", "FNC1 (0x6B) 99 LatchB (0x6A) a A [ { 0 0 ShiftA (0x65) NUL" }, + /* 28*/ { UNICODE_MODE, -1, "\015\012", -1, 0, "66 60", "ShiftB (0x66) CR/LF" }, + /* 29*/ { UNICODE_MODE, -1, "A\015\012", -1, 0, "67 21 60", "2xShiftB (0x67) A CR/LF" }, + /* 30*/ { UNICODE_MODE, -1, "\015\015\012", -1, 0, "65 4D 4D 4A", "LatchA (0x65) CR CR LF" }, + /* 31*/ { UNICODE_MODE, -1, "ABCDE12345678", -1, 0, "6A 21 22 23 24 25 69 0C 22 38 4E", "LatchB (0x6A) A B C D 4xShiftC 12 34 56 78" }, + /* 32*/ { UNICODE_MODE, -1, "\000ABCD1234567890", 15, 0, "65 40 21 22 23 24 6A 0C 22 38 4E 5A", "LatchA (0x65) NULL A B C D LatchC (0x6A) 12 34 56 78 90" }, + /* 33*/ { DATA_MODE, -1, "\141\142\143\144\145\200\201\202\203\204\377", -1, 0, "6A 41 42 43 44 45 70 31 5A 35 21 5A 5F 02 31", "LatchB (0x6A) a b c d e BinaryLatch (0x70) 0x80 0x81 0x82 0x83 0x84 0xFF" }, + /* 34*/ { DATA_MODE, -1, "\200\061\062\240\063\064\201\202\065\066", -1, 0, "6E 40 0C 6F 00 22 70 03 10 42 6E 15 16", "UpperShiftA (0x6E) NUL 12 UpperShiftB (0x6F) SP 34 BinaryLatch (0x70) 0x81 0x82 TermB (0x6E) 5 6" }, + /* 35*/ { DATA_MODE, -1, "\200\201\202\203\061\062\063\064", -1, 0, "70 13 56 0A 59 2C 67 0C 22", "BinaryLatch (0x70) 0x80 0x81 0x82 0x83 Intr2xShiftC (0x67) 12 3" }, + /* 36*/ { DATA_MODE, -1, "\001\200\201\202\203\204\200\201\202\203\204", -1, 0, "65 41 70 31 5A 35 21 5A 5F 31 5A 35 21 5A 5F", "LatchA (0x65) SOH BinaryLatch (0x70) 0x80 0x81 0x82 0x83 0x80 0x81 0x82 0x83" }, + /* 37*/ { UNICODE_MODE, -1, "\001abc\011\015\012\036", -1, 0, "65 41 65 41 42 43 61 60 64", "LatchA (0x65) SOH 6xShiftB (0x65) a b c HT CR/LF RS" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -728,6 +732,178 @@ static void test_encode(int index, int generate, int debug) { "00010001010001010000000101000100010001010000010000010100010100000100010101010001000101000000010100010001010100010000010100000101000100010100000101010000000101000001010100010100010001000101000001010001" "10100010001010101000000010001000001010001010001000001010100010000000101010001010000010101010000000101000100010100010100000100010100010001010100000001010101000001010000000001000101000101010000010101010" }, + /* 34*/ { UNICODE_MODE, 19, -1, "4", -1, 0, 6, 19, 1, "Mask 1 selected", + "1010100000101000101" + "0100000000010001010" + "0010101010000000000" + "0000010100000100000" + "1000100010001010001" + "0001010101010101010" + }, + /* 35*/ { UNICODE_MODE, 19, 3 << 8, "4", -1, 0, 6, 19, 0, "Mask 2 specified, unlit right edge mask; BWIPP automatically primes mask", + "1010101010000000100" + "0000000101000100010" + "1010100000001010100" + "0000010101010000000" + "1000001010100010100" + "0101000100010001010" + }, + /* 36*/ { UNICODE_MODE, 19, 7 << 8, "4", -1, 0, 6, 19, 1, "Mask 2' specified", + "1010101010000000101" + "0000000101000100010" + "1010100000001010100" + "0000010101010000000" + "1000001010100010101" + "0101000100010001010" + }, + /* 37*/ { GS1_MODE, -1, -1, "[10]12[20]12", -1, 0, 12, 17, 1, "Code Set C with FNC1", + "10100000001000001" + "00010100010101010" + "10001000100000001" + "01010100000101000" + "10000010000010001" + "01010001010100010" + "00001010100000001" + "00000101010001010" + "10101000001010001" + "01010101000101010" + "10000010100000101" + "01000100010101010" + }, + /* 38*/ { UNICODE_MODE, -1, -1, "1234\011\034\035\036", -1, 0, 14, 21, 1, "Code Set B HT FS GS RS", + "100010001000001010101" + "010001000001000001000" + "100010100010101010001" + "010100000000010100010" + "101000100010001000000" + "010000010000000001000" + "100000101010100000000" + "000101010101010000000" + "001000001010101010101" + "000000000100010001010" + "101010000000000000101" + "000101010101000101010" + "001010101000101010001" + "010101010001000101000" + }, + /* 39*/ { UNICODE_MODE, 17, -1, "abcd\015\012", -1, 0, 14, 17, 1, "Code Set B CRLF", + "00001000001000101" + "01000101010001000" + "10100000100010101" + "01000001010000010" + "00100010101000101" + "01010000010101000" + "10101010000010001" + "01000001000100010" + "00001010101010101" + "00000100010100010" + "00101010000000000" + "00010100010000000" + "10100000001010000" + "01010001000101000" + }, + /* 40*/ { DATA_MODE, -1, -1, "\101\102\103\104\105\106\107\200\101\102\240\101", -1, 0, 18, 27, 1, "Code Set B Upper Shift A Upper Shift B", + "101010100000101000101000001" + "010100010101000100010101000" + "000010001010100000101010101" + "010100010100000001010101000" + "001010000010001010101000101" + "000001000001010101000000010" + "101000101010100000001000001" + "000101000001010101010100010" + "001010101000101010100010101" + "000101010001000100010001010" + "000000001000100000000000001" + "010000000000010100000100010" + "101010101010101010101010101" + "000101010001000100010101010" + "100000000000100000000010101" + "000000010100010000000100010" + "100010101000000010001000001" + "010001000100000101000001010" + }, + /* 41*/ { UNICODE_MODE, -1, -1, "ABCDEF\001G1234H", -1, 0, 16, 25, 1, "Code Set A 4x Shift C", + "0010101010100000100000101" + "0000000100010101000001000" + "1000100000101000100000101" + "0101000001010100000101010" + "0000000000101010001010000" + "0100000000010101010100000" + "0010101010000000101010101" + "0100010101000000010100000" + "1010001000100010001000101" + "0101010001010000000001010" + "0000001010100010001010101" + "0001000000000001010001000" + "0010100000101010100000000" + "0101010100000100010100010" + "1010101010001000101000000" + "0000010100010101000101010" + }, + /* 42*/ { UNICODE_MODE, -1, -1, "ABCDEF\001ab\011\034\035\036\001A", -1, 0, 19, 28, 1, "Code Set A 6x Shift B HT FS GS RS", + "1000001010100010101010101010" + "0101000000010100010101010001" + "0010001010100000101000001010" + "0001000101000001010001010000" + "1000001010100000101010001000" + "0100010101010001000000010001" + "0000001010100010100010000010" + "0000010100000001010100010101" + "0000001010001010101000001010" + "0100010101010101000001010000" + "0010000000101000101000000010" + "0101000101000101000101000001" + "1000100000001010101000001000" + "0101000001010000010001010100" + "1010000000100010001010100010" + "0101010100000001000100010001" + "1010000010100000100000101000" + "0001010000010100000100010101" + "1010100010000000101010101010" + }, + /* 43*/ { UNICODE_MODE, -1, -1, "ABCDEF\001abcdefgA", -1, 0, 19, 28, 1, "Code Set A Latch B", + "1010001010100010101010101010" + "0100010101010000000100010001" + "1010000010100000100010101000" + "0001010001000001010100000001" + "0010001010100000000010101010" + "0101000000010100010101000001" + "0000101010100000001000001010" + "0000010101010000000100010101" + "0000101010100000101000001010" + "0001010100010001010000000101" + "1010000010100010100000001010" + "0101000101000000010001010001" + "1000100000001010101000001000" + "0101000001010000010100010001" + "1010000000100010001010100010" + "0101010100000001000100010001" + "1010000010100000100000101000" + "0001010000010100000100010101" + "1010100010000000101010101010" + }, + /* 44*/ { DATA_MODE, -1, -1, "\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063\064\065\066\200", -1, 0, 20, 29, 1, "Binary Latch C", + "10101010000010100010101010001" + "01010001000101010001000000010" + "00001010101000101010001000001" + "00010100000001000101010100000" + "00100000101000100000000000101" + "00000001010101010100000101000" + "10101000001010000010101000100" + "01010100010000000101000000010" + "10101000101000001010100010100" + "00010101000101010001000101010" + "10000010101000100010101010001" + "01000001010100000001010001010" + "00001010101010101000000010001" + "00010100000000010000010101010" + "00101000100010001000101000001" + "00000100000101010101000000000" + "10000000000000001000000010101" + "01010001010001010000010101000" + "10000010100010000010001000101" + "01000100000100010001010101010" + }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; diff --git a/backend/tests/test_gs1.c b/backend/tests/test_gs1.c index 5e231fac..75a26065 100644 --- a/backend/tests/test_gs1.c +++ b/backend/tests/test_gs1.c @@ -361,977 +361,979 @@ static void test_gs1_verify(int index, int debug) { /* 3*/ { "[12345]12", ZINT_ERROR_INVALID_DATA, "" }, /* 4*/ { "[9999]1234", ZINT_ERROR_INVALID_DATA, "" }, /* 5*/ { "[[01]]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 6*/ { "[90]\n", ZINT_ERROR_INVALID_DATA, "" }, - /* 7*/ { "[90]\x7F", ZINT_ERROR_INVALID_DATA, "" }, - /* 8*/ { "[90]\x80", ZINT_ERROR_INVALID_DATA, "" }, - /* 9*/ { "[00]123456789012345678", ZINT_WARN_NONCOMPLIANT, "00123456789012345678" }, - /* 10*/ { "[00]123456789012345675", 0, "00123456789012345675" }, - /* 11*/ { "[00]12345678901234567", ZINT_ERROR_INVALID_DATA, "" }, - /* 12*/ { "[00]1234567890123456789", ZINT_ERROR_INVALID_DATA, "" }, - /* 13*/ { "[00]376104250021234569", 0, "00376104250021234569" }, - /* 14*/ { "[00]376104250021234568", ZINT_WARN_NONCOMPLIANT, "00376104250021234568" }, - /* 15*/ { "[01]12345678901234", ZINT_WARN_NONCOMPLIANT, "0112345678901234" }, - /* 16*/ { "[01]12345678901231", 0, "0112345678901231" }, - /* 17*/ { "[01]123456789012345", ZINT_ERROR_INVALID_DATA, "" }, - /* 18*/ { "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "0212345678901234" }, - /* 19*/ { "[02]12345678901231", 0, "0212345678901231" }, - /* 20*/ { "[02]1234567890123", ZINT_ERROR_INVALID_DATA, "" }, - /* 21*/ { "[03]12345678901234", ZINT_ERROR_INVALID_DATA, "" }, - /* 22*/ { "[04]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 23*/ { "[05]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 24*/ { "[06]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 25*/ { "[07]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 26*/ { "[08]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 27*/ { "[09]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 28*/ { "[10]ABCD123456", 0, "10ABCD123456" }, - /* 29*/ { "[10]123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /* 30*/ { "[100]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 31*/ { "[1000]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 32*/ { "[11]990102", 0, "11990102" }, - /* 33*/ { "[11]9901023", ZINT_ERROR_INVALID_DATA, "" }, - /* 34*/ { "[110]990102", ZINT_ERROR_INVALID_DATA, "" }, - /* 35*/ { "[1100]990102", ZINT_ERROR_INVALID_DATA, "" }, - /* 36*/ { "[12]000100", 0, "12000100" }, - /* 37*/ { "[12]00010", ZINT_ERROR_INVALID_DATA, "" }, - /* 38*/ { "[120]000100", ZINT_ERROR_INVALID_DATA, "" }, - /* 39*/ { "[1200]000100", ZINT_ERROR_INVALID_DATA, "" }, - /* 40*/ { "[13]991301", ZINT_WARN_NONCOMPLIANT, "13991301" }, - /* 41*/ { "[13]991201", 0, "13991201" }, - /* 42*/ { "[13]9913011", ZINT_ERROR_INVALID_DATA, "" }, - /* 43*/ { "[130]991301", ZINT_ERROR_INVALID_DATA, "" }, - /* 44*/ { "[1300]991301", ZINT_ERROR_INVALID_DATA, "" }, - /* 45*/ { "[14]991201", ZINT_ERROR_INVALID_DATA, "" }, - /* 46*/ { "[140]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 47*/ { "[1400]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 48*/ { "[15]021231", 0, "15021231" }, - /* 49*/ { "[15]02123", ZINT_ERROR_INVALID_DATA, "" }, - /* 50*/ { "[150]021231", ZINT_ERROR_INVALID_DATA, "" }, - /* 51*/ { "[1500]021231", ZINT_ERROR_INVALID_DATA, "" }, - /* 52*/ { "[16]000000", ZINT_WARN_NONCOMPLIANT, "16000000" }, - /* 53*/ { "[16]000100", 0, "16000100" }, - /* 54*/ { "[16]00000", ZINT_ERROR_INVALID_DATA, "" }, - /* 55*/ { "[160]000000", ZINT_ERROR_INVALID_DATA, "" }, - /* 56*/ { "[1600]000000", ZINT_ERROR_INVALID_DATA, "" }, - /* 57*/ { "[17]010200", 0, "17010200" }, - /* 58*/ { "[17]0102000", ZINT_ERROR_INVALID_DATA, "" }, - /* 59*/ { "[170]010200", ZINT_ERROR_INVALID_DATA, "" }, - /* 60*/ { "[1700]010200", ZINT_ERROR_INVALID_DATA, "" }, - /* 61*/ { "[18]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 62*/ { "[180]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 63*/ { "[1800]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 64*/ { "[19]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 65*/ { "[190]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 66*/ { "[1900]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 67*/ { "[20]12", 0, "2012" }, - /* 68*/ { "[20]1", ZINT_ERROR_INVALID_DATA, "" }, - /* 69*/ { "[200]12", ZINT_ERROR_INVALID_DATA, "" }, - /* 70*/ { "[2000]12", ZINT_ERROR_INVALID_DATA, "" }, - /* 71*/ { "[21]A12345678", 0, "21A12345678" }, - /* 72*/ { "[21]123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /* 73*/ { "[210]A12345678", ZINT_ERROR_INVALID_DATA, "" }, - /* 74*/ { "[2100]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 75*/ { "[22]abcdefghijklmnopqrst", 0, "22abcdefghijklmnopqrst" }, - /* 76*/ { "[22]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, - /* 77*/ { "[220]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 78*/ { "[2200]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 79*/ { "[23]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 80*/ { "[230]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 81*/ { "[2300]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 82*/ { "[235]1abcdefghijklmnopqrstuvwxyz0", 0, "2351abcdefghijklmnopqrstuvwxyz0" }, - /* 83*/ { "[235]1abcdefghijklmnopqrstuvwxyz01", ZINT_ERROR_INVALID_DATA, "" }, - /* 84*/ { "[24]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 85*/ { "[240]abcdefghijklmnopqrstuvwxyz1234", 0, "240abcdefghijklmnopqrstuvwxyz1234" }, - /* 86*/ { "[240]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, - /* 87*/ { "[2400]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 88*/ { "[241]abcdefghijklmnopqrstuvwxyz1234", 0, "241abcdefghijklmnopqrstuvwxyz1234" }, - /* 89*/ { "[241]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, - /* 90*/ { "[2410]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 91*/ { "[242]12345", 0, "24212345" }, - /* 92*/ { "[242]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /* 93*/ { "[2420]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 94*/ { "[243]abcdefghijklmnopqrst", 0, "243abcdefghijklmnopqrst" }, - /* 95*/ { "[243]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, - /* 96*/ { "[2430]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 97*/ { "[244]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 98*/ { "[2440]1234", ZINT_ERROR_INVALID_DATA, "" }, - /* 99*/ { "[249]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*100*/ { "[2490]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*101*/ { "[25]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*102*/ { "[250]abcdefghijklmnopqrstuvwxyz1234", 0, "250abcdefghijklmnopqrstuvwxyz1234" }, - /*103*/ { "[250]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, - /*104*/ { "[2500]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*105*/ { "[251]abcdefghijklmnopqrstuvwxyz1234", 0, "251abcdefghijklmnopqrstuvwxyz1234" }, - /*106*/ { "[251]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, - /*107*/ { "[2510]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*108*/ { "[252]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*109*/ { "[2520]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*110*/ { "[253]131313131313", ZINT_ERROR_INVALID_DATA, "" }, - /*111*/ { "[253]1313131313134", ZINT_WARN_NONCOMPLIANT, "2531313131313134" }, - /*112*/ { "[253]1313131313130", 0, "2531313131313130" }, - /*113*/ { "[253]131313131313412345678901234567", ZINT_WARN_NONCOMPLIANT, "253131313131313412345678901234567" }, - /*114*/ { "[253]131313131313012345678901234567", 0, "253131313131313012345678901234567" }, - /*115*/ { "[253]1313131313134123456789012345678", ZINT_ERROR_INVALID_DATA, "" }, - /*116*/ { "[2530]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*117*/ { "[254]abcdefghijklmnopqrst", 0, "254abcdefghijklmnopqrst" }, - /*118*/ { "[254]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, - /*119*/ { "[2540]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*120*/ { "[255]131313131313", ZINT_ERROR_INVALID_DATA, "" }, - /*121*/ { "[255]1313131313134", ZINT_WARN_NONCOMPLIANT, "2551313131313134" }, - /*122*/ { "[255]1313131313130", 0, "2551313131313130" }, - /*123*/ { "[255]1313131313134123456789012", ZINT_WARN_NONCOMPLIANT, "2551313131313134123456789012" }, - /*124*/ { "[255]1313131313130123456789012", 0, "2551313131313130123456789012" }, - /*125*/ { "[255]13131313131341234567890123", ZINT_ERROR_INVALID_DATA, "" }, - /*126*/ { "[2550]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*127*/ { "[256]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*128*/ { "[2560]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*129*/ { "[259]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*130*/ { "[2590]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*131*/ { "[26]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*132*/ { "[260]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*133*/ { "[2600]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*134*/ { "[27]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*135*/ { "[270]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*136*/ { "[2700]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*137*/ { "[28]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*138*/ { "[280]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*139*/ { "[2800]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*140*/ { "[29]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*141*/ { "[290]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*142*/ { "[2900]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*143*/ { "[30]12345678", 0, "3012345678" }, - /*144*/ { "[30]123456789", ZINT_ERROR_INVALID_DATA, "" }, - /*145*/ { "[300]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*146*/ { "[3000]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*147*/ { "[31]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*148*/ { "[310]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*149*/ { "[3100]123456", 0, "3100123456" }, - /*150*/ { "[3100]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*151*/ { "[3101]123456", 0, "3101123456" }, - /*152*/ { "[3101]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*153*/ { "[3105]123456", 0, "3105123456" }, - /*154*/ { "[3105]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*155*/ { "[3106]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*156*/ { "[3109]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*157*/ { "[3110]123456", 0, "3110123456" }, - /*158*/ { "[3110]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*159*/ { "[3115]123456", 0, "3115123456" }, - /*160*/ { "[3115]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*161*/ { "[3116]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*162*/ { "[3119]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*163*/ { "[3120]123456", 0, "3120123456" }, - /*164*/ { "[3120]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*165*/ { "[3125]123456", 0, "3125123456" }, - /*166*/ { "[3125]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*167*/ { "[3126]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*168*/ { "[3129]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*169*/ { "[3130]123456", 0, "3130123456" }, - /*170*/ { "[3130]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*171*/ { "[3135]123456", 0, "3135123456" }, - /*172*/ { "[3135]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*173*/ { "[3136]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*174*/ { "[3139]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*175*/ { "[3140]123456", 0, "3140123456" }, - /*176*/ { "[3140]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*177*/ { "[3145]123456", 0, "3145123456" }, - /*178*/ { "[3145]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*179*/ { "[3146]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*180*/ { "[3149]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*181*/ { "[3150]123456", 0, "3150123456" }, - /*182*/ { "[3150]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*183*/ { "[3155]123456", 0, "3155123456" }, - /*184*/ { "[3155]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*185*/ { "[3156]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*186*/ { "[3159]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*187*/ { "[3160]123456", 0, "3160123456" }, - /*188*/ { "[3160]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*189*/ { "[3165]123456", 0, "3165123456" }, - /*190*/ { "[3165]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*191*/ { "[3166]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*192*/ { "[3169]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*193*/ { "[3170]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*194*/ { "[3179]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*195*/ { "[3180]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*196*/ { "[3189]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*197*/ { "[3190]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*198*/ { "[3199]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*199*/ { "[32]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*200*/ { "[320]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*201*/ { "[3200]123456", 0, "3200123456" }, - /*202*/ { "[3200]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*203*/ { "[3205]123456", 0, "3205123456" }, - /*204*/ { "[3205]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*205*/ { "[3206]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*206*/ { "[3209]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*207*/ { "[3210]123456", 0, "3210123456" }, - /*208*/ { "[3210]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*209*/ { "[3215]123456", 0, "3215123456" }, - /*210*/ { "[3215]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*211*/ { "[3216]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*212*/ { "[3219]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*213*/ { "[3220]123456", 0, "3220123456" }, - /*214*/ { "[3220]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*215*/ { "[3225]123456", 0, "3225123456" }, - /*216*/ { "[3225]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*217*/ { "[3229]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*218*/ { "[3230]123456", 0, "3230123456" }, - /*219*/ { "[3230]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*220*/ { "[3235]123456", 0, "3235123456" }, - /*221*/ { "[3235]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*222*/ { "[3239]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*223*/ { "[3240]123456", 0, "3240123456" }, - /*224*/ { "[3240]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*225*/ { "[3245]123456", 0, "3245123456" }, - /*226*/ { "[3245]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*227*/ { "[3249]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*228*/ { "[3250]123456", 0, "3250123456" }, - /*229*/ { "[3250]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*230*/ { "[3255]123456", 0, "3255123456" }, - /*231*/ { "[3255]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*232*/ { "[3259]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*233*/ { "[3260]123456", 0, "3260123456" }, - /*234*/ { "[3260]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*235*/ { "[3265]123456", 0, "3265123456" }, - /*236*/ { "[3265]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*237*/ { "[3269]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*238*/ { "[3270]123456", 0, "3270123456" }, - /*239*/ { "[3270]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*240*/ { "[3275]123456", 0, "3275123456" }, - /*241*/ { "[3275]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*242*/ { "[3279]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*243*/ { "[3280]123456", 0, "3280123456" }, - /*244*/ { "[3280]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*245*/ { "[3285]123456", 0, "3285123456" }, - /*246*/ { "[3285]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*247*/ { "[3289]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*248*/ { "[3290]123456", 0, "3290123456" }, - /*249*/ { "[3290]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*250*/ { "[3295]123456", 0, "3295123456" }, - /*251*/ { "[3295]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*252*/ { "[3296]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*253*/ { "[3299]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*254*/ { "[33]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*255*/ { "[330]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*256*/ { "[3300]123456", 0, "3300123456" }, - /*257*/ { "[3300]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*258*/ { "[3305]123456", 0, "3305123456" }, - /*259*/ { "[3305]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*260*/ { "[3306]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*261*/ { "[3309]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*262*/ { "[3310]123456", 0, "3310123456" }, - /*263*/ { "[3310]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*264*/ { "[3319]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*265*/ { "[3320]123456", 0, "3320123456" }, - /*266*/ { "[3320]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*267*/ { "[3329]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*268*/ { "[3330]123456", 0, "3330123456" }, - /*269*/ { "[3330]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*270*/ { "[3339]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*271*/ { "[3340]123456", 0, "3340123456" }, - /*272*/ { "[3340]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*273*/ { "[3349]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*274*/ { "[3350]123456", 0, "3350123456" }, - /*275*/ { "[3350]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*276*/ { "[3359]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*277*/ { "[3360]123456", 0, "3360123456" }, - /*278*/ { "[3360]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*279*/ { "[3369]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*280*/ { "[3370]123456", 0, "3370123456" }, - /*281*/ { "[3370]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*282*/ { "[3375]123456", 0, "3375123456" }, - /*283*/ { "[3375]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*284*/ { "[3376]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*285*/ { "[3379]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*286*/ { "[3380]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*287*/ { "[3390]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*288*/ { "[3399]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*289*/ { "[34]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*290*/ { "[340]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*291*/ { "[3400]123456", 0, "3400123456" }, - /*292*/ { "[3400]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*293*/ { "[3405]123456", 0, "3405123456" }, - /*294*/ { "[3405]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*295*/ { "[3406]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*296*/ { "[3409]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*297*/ { "[3410]123456", 0, "3410123456" }, - /*298*/ { "[3410]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*299*/ { "[3419]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*300*/ { "[3420]123456", 0, "3420123456" }, - /*301*/ { "[3420]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*302*/ { "[3429]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*303*/ { "[3430]123456", 0, "3430123456" }, - /*304*/ { "[3430]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*305*/ { "[3439]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*306*/ { "[3440]123456", 0, "3440123456" }, - /*307*/ { "[3440]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*308*/ { "[3449]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*309*/ { "[3450]123456", 0, "3450123456" }, - /*310*/ { "[3450]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*311*/ { "[3459]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*312*/ { "[3460]123456", 0, "3460123456" }, - /*313*/ { "[3460]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*314*/ { "[3469]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*315*/ { "[3470]123456", 0, "3470123456" }, - /*316*/ { "[3470]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*317*/ { "[3479]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*318*/ { "[3480]123456", 0, "3480123456" }, - /*319*/ { "[3480]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*320*/ { "[3489]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*321*/ { "[3490]123456", 0, "3490123456" }, - /*322*/ { "[3490]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*323*/ { "[3495]123456", 0, "3495123456" }, - /*324*/ { "[3495]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*325*/ { "[3496]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*326*/ { "[3499]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*327*/ { "[35]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*328*/ { "[350]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*329*/ { "[3500]123456", 0, "3500123456" }, - /*330*/ { "[3500]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*331*/ { "[3505]123456", 0, "3505123456" }, - /*332*/ { "[3505]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*333*/ { "[3506]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*334*/ { "[3509]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*335*/ { "[3510]123456", 0, "3510123456", }, - /*336*/ { "[3510]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*337*/ { "[3519]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*338*/ { "[3520]123456", 0, "3520123456", }, - /*339*/ { "[3520]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*340*/ { "[3529]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*341*/ { "[3530]123456", 0, "3530123456", }, - /*342*/ { "[3530]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*343*/ { "[3539]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*344*/ { "[3540]123456", 0, "3540123456", }, - /*345*/ { "[3540]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*346*/ { "[3549]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*347*/ { "[3550]123456", 0, "3550123456", }, - /*348*/ { "[3550]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*349*/ { "[3559]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*350*/ { "[3560]123456", 0, "3560123456", }, - /*351*/ { "[3560]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*352*/ { "[3569]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*353*/ { "[3570]123456", 0, "3570123456", }, - /*354*/ { "[3570]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*355*/ { "[3575]123456", 0, "3575123456" }, - /*356*/ { "[3376]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*357*/ { "[3579]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*358*/ { "[3580]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*359*/ { "[3590]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*360*/ { "[3599]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*361*/ { "[36]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*362*/ { "[360]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*363*/ { "[3600]123456", 0, "3600123456" }, - /*364*/ { "[3600]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*365*/ { "[3605]123456", 0, "3605123456" }, - /*366*/ { "[3605]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*367*/ { "[3606]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*368*/ { "[3609]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*369*/ { "[3610]123456", 0, "3610123456" }, - /*370*/ { "[3610]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*371*/ { "[3619]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*372*/ { "[3620]123456", 0, "3620123456", }, - /*373*/ { "[3620]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*374*/ { "[3629]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*375*/ { "[3630]123456", 0, "3630123456", }, - /*376*/ { "[3630]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*377*/ { "[3639]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*378*/ { "[3640]123456", 0, "3640123456", }, - /*379*/ { "[3640]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*380*/ { "[3649]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*381*/ { "[3650]123456", 0, "3650123456", }, - /*382*/ { "[3650]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*383*/ { "[3659]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*384*/ { "[3660]123456", 0, "3660123456", }, - /*385*/ { "[3660]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*386*/ { "[3669]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*387*/ { "[3670]123456", 0, "3670123456", }, - /*388*/ { "[3670]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*389*/ { "[3679]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*390*/ { "[3680]123456", 0, "3680123456", }, - /*391*/ { "[3680]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*392*/ { "[3689]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*393*/ { "[3690]123456", 0, "3690123456" }, - /*394*/ { "[3690]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*395*/ { "[3695]123456", 0, "3695123456" }, - /*396*/ { "[3695]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*397*/ { "[3696]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*398*/ { "[3699]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*399*/ { "[37]12345678", 0, "3712345678" }, - /*400*/ { "[37]123456789", ZINT_ERROR_INVALID_DATA, "" }, - /*401*/ { "[370]12345678", ZINT_ERROR_INVALID_DATA, "" }, - /*402*/ { "[3700]12345678", ZINT_ERROR_INVALID_DATA, "" }, - /*403*/ { "[38]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*404*/ { "[380]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*405*/ { "[3800]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*406*/ { "[39]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*407*/ { "[390]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*408*/ { "[3900]123456789012345", 0, "3900123456789012345" }, - /*409*/ { "[3900]1234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*410*/ { "[3900]12345678901234", 0, "390012345678901234" }, - /*411*/ { "[3901]123456789012345", 0, "3901123456789012345" }, - /*412*/ { "[3901]1234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*413*/ { "[3905]123456789012345", 0, "3905123456789012345" }, - /*414*/ { "[3909]123456789012345", 0, "3909123456789012345" }, - /*415*/ { "[3909]1234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*416*/ { "[3910]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3910123123456789012345" }, - /*417*/ { "[3910]997123456789012345", 0, "3910997123456789012345" }, - /*418*/ { "[3910]1231234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*419*/ { "[3910]123", ZINT_ERROR_INVALID_DATA, "" }, - /*420*/ { "[3915]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3915123123456789012345" }, - /*421*/ { "[3915]997123456789012345", 0, "3915997123456789012345" }, - /*422*/ { "[3915]1231234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*423*/ { "[3919]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3919123123456789012345" }, - /*424*/ { "[3919]997123456789012345", 0, "3919997123456789012345" }, - /*425*/ { "[3919]1231234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*426*/ { "[3920]123456789012345", 0, "3920123456789012345" }, - /*427*/ { "[3920]1234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*428*/ { "[3925]123456789012345", 0, "3925123456789012345" }, - /*429*/ { "[3925]1234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*430*/ { "[3929]123456789012345", 0, "3929123456789012345" }, - /*431*/ { "[3929]1234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*432*/ { "[3930]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3930123123456789012345" }, - /*433*/ { "[3930]997123456789012345", 0, "3930997123456789012345" }, - /*434*/ { "[3930]1231234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*435*/ { "[3930]123", ZINT_ERROR_INVALID_DATA, "" }, - /*436*/ { "[3935]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3935123123456789012345" }, - /*437*/ { "[3935]997123456789012345", 0, "3935997123456789012345" }, - /*438*/ { "[3935]1231234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*439*/ { "[3939]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3939123123456789012345" }, - /*440*/ { "[3939]997123456789012345", 0, "3939997123456789012345" }, - /*441*/ { "[3939]1231234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*442*/ { "[3940]1234", 0, "39401234" }, - /*443*/ { "[3940]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*444*/ { "[3940]123", ZINT_ERROR_INVALID_DATA, "" }, - /*445*/ { "[3941]1234", 0, "39411234" }, - /*446*/ { "[3941]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*447*/ { "[3941]123", ZINT_ERROR_INVALID_DATA, "" }, - /*448*/ { "[3942]1234", 0, "39421234" }, - /*449*/ { "[3942]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*450*/ { "[3943]1234", 0, "39431234" }, - /*451*/ { "[3943]123", ZINT_ERROR_INVALID_DATA, "" }, - /*452*/ { "[3944]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*453*/ { "[3945]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*454*/ { "[3949]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*455*/ { "[3950]123456", 0, "3950123456" }, - /*456*/ { "[3950]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*457*/ { "[3950]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*458*/ { "[3951]123456", 0, "3951123456" }, - /*459*/ { "[3951]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*460*/ { "[3952]123456", 0, "3952123456" }, - /*461*/ { "[3952]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*462*/ { "[3953]123456", 0, "3953123456" }, - /*463*/ { "[3953]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*464*/ { "[3954]123456", 0, "3954123456" }, - /*465*/ { "[3954]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*466*/ { "[3955]123456", 0, "3955123456" }, - /*467*/ { "[3955]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*468*/ { "[3956]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*469*/ { "[3959]123456", ZINT_ERROR_INVALID_DATA, "" }, - /*470*/ { "[3960]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*471*/ { "[3970]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*472*/ { "[3980]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*473*/ { "[3999]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*474*/ { "[40]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*475*/ { "[400]123456789012345678901234567890", 0, "400123456789012345678901234567890" }, - /*476*/ { "[400]1234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*477*/ { "[4000]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*478*/ { "[401]1234abcdefghijklmnopqrstuvwxyz", 0, "4011234abcdefghijklmnopqrstuvwxyz" }, - /*479*/ { "[401]1234abcdefghijklmnopqrstuvwxyz1", ZINT_ERROR_INVALID_DATA, "" }, - /*480*/ { "[4010]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*481*/ { "[402]13131313131313132", ZINT_WARN_NONCOMPLIANT, "40213131313131313132" }, - /*482*/ { "[402]13131313131313130", 0, "40213131313131313130" }, - /*483*/ { "[402]1313131313131313", ZINT_ERROR_INVALID_DATA, "" }, - /*484*/ { "[4020]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*485*/ { "[403]abcdefghijklmnopqrstuvwxyz1234", 0, "403abcdefghijklmnopqrstuvwxyz1234" }, - /*486*/ { "[403]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, - /*487*/ { "[4030]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*488*/ { "[404]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*489*/ { "[4040]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*490*/ { "[409]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*491*/ { "[4090]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*492*/ { "[41]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*493*/ { "[410]3898765432108", 0, "4103898765432108" }, - /*494*/ { "[410]12345678901234", ZINT_ERROR_INVALID_DATA, "" }, - /*495*/ { "[4100]12345678901234", ZINT_ERROR_INVALID_DATA, "" }, - /*496*/ { "[411]1313131313134", ZINT_WARN_NONCOMPLIANT, "4111313131313134" }, - /*497*/ { "[411]1313131313130", 0, "4111313131313130" }, - /*498*/ { "[411]13131313131", ZINT_ERROR_INVALID_DATA, "" }, - /*499*/ { "[4110]1313131313134", ZINT_ERROR_INVALID_DATA, "" }, - /*500*/ { "[412]1313131313130", 0, "4121313131313130" }, - /*501*/ { "[412]13131313131", ZINT_ERROR_INVALID_DATA, "" }, - /*502*/ { "[4120]1313131313134", ZINT_ERROR_INVALID_DATA, "" }, - /*503*/ { "[413]1313131313130", 0, "4131313131313130" }, - /*504*/ { "[413]13131313131", ZINT_ERROR_INVALID_DATA, "" }, - /*505*/ { "[4130]1313131313134", ZINT_ERROR_INVALID_DATA, "" }, - /*506*/ { "[414]1313131313130", 0, "4141313131313130" }, - /*507*/ { "[414]13131313131", ZINT_ERROR_INVALID_DATA, "" }, - /*508*/ { "[4140]1313131313134", ZINT_ERROR_INVALID_DATA, "" }, - /*509*/ { "[415]1313131313130", 0, "4151313131313130" }, - /*510*/ { "[415]13131313131", ZINT_ERROR_INVALID_DATA, "" }, - /*511*/ { "[4150]1313131313134", ZINT_ERROR_INVALID_DATA, "" }, - /*512*/ { "[416]1313131313130", 0, "4161313131313130" }, - /*513*/ { "[416]13131313131", ZINT_ERROR_INVALID_DATA, "" }, - /*514*/ { "[4160]1313131313134", ZINT_ERROR_INVALID_DATA, "" }, - /*515*/ { "[417]1313131313130", 0, "4171313131313130" }, - /*516*/ { "[417]13131313131", ZINT_ERROR_INVALID_DATA, "" }, - /*517*/ { "[4170]1313131313134", ZINT_ERROR_INVALID_DATA, "" }, - /*518*/ { "[418]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*519*/ { "[4180]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*520*/ { "[419]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*521*/ { "[4190]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*522*/ { "[42]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*523*/ { "[420]abcdefghijklmnopqrst", 0, "420abcdefghijklmnopqrst" }, - /*524*/ { "[420]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, - /*525*/ { "[4200]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*526*/ { "[421]123abcdefghi", ZINT_WARN_NONCOMPLIANT, "421123abcdefghi" }, - /*527*/ { "[421]434abcdefghi", 0, "421434abcdefghi" }, - /*528*/ { "[421]123abcdefghij", ZINT_ERROR_INVALID_DATA, "" }, - /*529*/ { "[421]1231", ZINT_WARN_NONCOMPLIANT, "4211231" }, - /*530*/ { "[421]4341", 0, "4214341" }, - /*531*/ { "[421]123", ZINT_ERROR_INVALID_DATA, "" }, - /*532*/ { "[4210]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*533*/ { "[422]123", ZINT_WARN_NONCOMPLIANT, "422123" }, - /*534*/ { "[422]004", 0, "422004" }, - /*535*/ { "[422]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*536*/ { "[422]12", ZINT_ERROR_INVALID_DATA, "" }, - /*537*/ { "[4220]123", ZINT_ERROR_INVALID_DATA, "" }, - /*538*/ { "[423]123123123123123", ZINT_WARN_NONCOMPLIANT, "423123123123123123" }, - /*539*/ { "[423]470004012887123", ZINT_WARN_NONCOMPLIANT, "423470004012887123" }, - /*540*/ { "[423]470004012887438", 0, "423470004012887438" }, - /*541*/ { "[423]1231231231231231", ZINT_ERROR_INVALID_DATA, "4231231231231231231" }, - /*542*/ { "[423]12312312312312", ZINT_WARN_NONCOMPLIANT, "42312312312312312" }, - /*543*/ { "[423]1231231231231", ZINT_WARN_NONCOMPLIANT, "4231231231231231" }, - /*544*/ { "[423]12312312312", ZINT_WARN_NONCOMPLIANT, "42312312312312" }, - /*545*/ { "[423]1231231231", ZINT_WARN_NONCOMPLIANT, "4231231231231" }, - /*546*/ { "[423]123", ZINT_WARN_NONCOMPLIANT, "423123" }, - /*547*/ { "[423]004", 0, "423004" }, - /*548*/ { "[423]12", ZINT_ERROR_INVALID_DATA, "" }, - /*549*/ { "[4230]123123123123123", ZINT_ERROR_INVALID_DATA, "" }, - /*550*/ { "[424]123", ZINT_WARN_NONCOMPLIANT, "424123" }, - /*551*/ { "[424]004", 0, "424004" }, - /*552*/ { "[424]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*553*/ { "[424]12", ZINT_ERROR_INVALID_DATA, "" }, - /*554*/ { "[4240]123", ZINT_ERROR_INVALID_DATA, "" }, - /*555*/ { "[425]123123123123123", ZINT_WARN_NONCOMPLIANT, "425123123123123123" }, - /*556*/ { "[425]010500276634894", 0, "425010500276634894" }, - /*557*/ { "[425]010500276123894", ZINT_WARN_NONCOMPLIANT, "425010500276123894" }, - /*558*/ { "[425]1231231231231231", ZINT_ERROR_INVALID_DATA, "" }, - /*559*/ { "[425]12", ZINT_ERROR_INVALID_DATA, "" }, - /*560*/ { "[4250]123123123123123", ZINT_ERROR_INVALID_DATA, "" }, - /*561*/ { "[426]123", ZINT_WARN_NONCOMPLIANT, "426123" }, - /*562*/ { "[426]426", 0, "426426" }, - /*563*/ { "[426]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*564*/ { "[426]12", ZINT_ERROR_INVALID_DATA, "" }, - /*565*/ { "[4260]123", ZINT_ERROR_INVALID_DATA, "" }, - /*566*/ { "[427]abc", 0, "427abc" }, - /*567*/ { "[427]abcd", ZINT_ERROR_INVALID_DATA, "" }, - /*568*/ { "[4270]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*569*/ { "[428]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*570*/ { "[4280]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*571*/ { "[429]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*572*/ { "[4290]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*573*/ { "[43]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*574*/ { "[430]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*575*/ { "[4300]1", 0, "43001" }, - /*576*/ { "[4300]12345678901234567890123456789012345", 0, "430012345678901234567890123456789012345" }, - /*577*/ { "[4300]123456789012345678901234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*578*/ { "[4301]1", 0, "43011" }, - /*579*/ { "[4301]12345678901234567890123456789012345", 0, "430112345678901234567890123456789012345" }, - /*580*/ { "[4301]123456789012345678901234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*581*/ { "[4302]1", 0, "43021" }, - /*582*/ { "[4302]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43021234567890123456789012345678901234567890123456789012345678901234567890" }, - /*583*/ { "[4302]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*584*/ { "[4303]1", 0, "43031" }, - /*585*/ { "[4303]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43031234567890123456789012345678901234567890123456789012345678901234567890" }, - /*586*/ { "[4303]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*587*/ { "[4304]1", 0, "43041" }, - /*588*/ { "[4304]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43041234567890123456789012345678901234567890123456789012345678901234567890" }, - /*589*/ { "[4304]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*590*/ { "[4305]1", 0, "43051" }, - /*591*/ { "[4305]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43051234567890123456789012345678901234567890123456789012345678901234567890" }, - /*592*/ { "[4305]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*593*/ { "[4306]1", 0, "43061" }, - /*594*/ { "[4306]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43061234567890123456789012345678901234567890123456789012345678901234567890" }, - /*595*/ { "[4306]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*596*/ { "[4307]FR", 0, "4307FR" }, - /*597*/ { "[4307]F", ZINT_ERROR_INVALID_DATA, "" }, - /*598*/ { "[4307]FRR", ZINT_ERROR_INVALID_DATA, "" }, - /*599*/ { "[4308]1", 0, "43081" }, - /*600*/ { "[4308]123456789012345678901234567890", 0, "4308123456789012345678901234567890" }, - /*601*/ { "[4308]1234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*602*/ { "[4309]1", ZINT_ERROR_INVALID_DATA, "" }, - /*603*/ { "[431]1", ZINT_ERROR_INVALID_DATA, "" }, - /*604*/ { "[4310]1", 0, "43101" }, - /*605*/ { "[4310]12345678901234567890123456789012345", 0, "431012345678901234567890123456789012345" }, - /*606*/ { "[4310]123456789012345678901234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*607*/ { "[4311]1", 0, "43111" }, - /*608*/ { "[4311]12345678901234567890123456789012345", 0, "431112345678901234567890123456789012345" }, - /*609*/ { "[4311]123456789012345678901234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*610*/ { "[4312]1", 0, "43121" }, - /*611*/ { "[4312]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43121234567890123456789012345678901234567890123456789012345678901234567890" }, - /*612*/ { "[4312]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*613*/ { "[4313]1", 0, "43131" }, - /*614*/ { "[4313]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43131234567890123456789012345678901234567890123456789012345678901234567890" }, - /*615*/ { "[4313]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*616*/ { "[4314]1", 0, "43141" }, - /*617*/ { "[4314]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43141234567890123456789012345678901234567890123456789012345678901234567890" }, - /*618*/ { "[4314]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*619*/ { "[4315]1", 0, "43151" }, - /*620*/ { "[4315]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43151234567890123456789012345678901234567890123456789012345678901234567890" }, - /*621*/ { "[4315]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*622*/ { "[4316]1", 0, "43161" }, - /*623*/ { "[4316]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43161234567890123456789012345678901234567890123456789012345678901234567890" }, - /*624*/ { "[4316]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*625*/ { "[4317]FR", 0, "4317FR" }, - /*626*/ { "[4317]F", ZINT_ERROR_INVALID_DATA, "" }, - /*627*/ { "[4317]FRF", ZINT_ERROR_INVALID_DATA, "" }, - /*628*/ { "[4318]1", 0, "43181" }, - /*629*/ { "[4318]12345678901234567890", 0, "431812345678901234567890" }, - /*630*/ { "[4318]123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*631*/ { "[4319]1", 0, "43191" }, - /*632*/ { "[4319]123456789012345678901234567890", 0, "4319123456789012345678901234567890" }, - /*633*/ { "[4319]1234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*634*/ { "[432]1", ZINT_ERROR_INVALID_DATA, "" }, - /*635*/ { "[4320]1", 0, "43201" }, - /*636*/ { "[4320]12345678901234567890123456789012345", 0, "432012345678901234567890123456789012345" }, - /*637*/ { "[4320]123456789012345678901234567890123456", ZINT_ERROR_INVALID_DATA, "" }, - /*638*/ { "[4321]1", 0, "43211" }, - /*639*/ { "[4321]10", ZINT_ERROR_INVALID_DATA, "" }, - /*640*/ { "[4322]1", 0, "43221" }, - /*641*/ { "[4322]10", ZINT_ERROR_INVALID_DATA, "" }, - /*642*/ { "[4323]1", 0, "43231" }, - /*643*/ { "[4323]10", ZINT_ERROR_INVALID_DATA, "" }, - /*644*/ { "[4324]1212120000", 0, "43241212120000" }, - /*645*/ { "[4324]121212000", ZINT_ERROR_INVALID_DATA, "" }, - /*646*/ { "[4324]12121200000", ZINT_ERROR_INVALID_DATA, "" }, - /*647*/ { "[4325]1212120000", 0, "43251212120000" }, - /*648*/ { "[4325]121212000", ZINT_ERROR_INVALID_DATA, "" }, - /*649*/ { "[4325]12121200000", ZINT_ERROR_INVALID_DATA, "" }, - /*650*/ { "[4326]121212", 0, "4326121212" }, - /*651*/ { "[4326]12121", ZINT_ERROR_INVALID_DATA, "" }, - /*652*/ { "[4326]1212120", ZINT_ERROR_INVALID_DATA, "" }, - /*653*/ { "[4327]121212", ZINT_ERROR_INVALID_DATA, "" }, - /*654*/ { "[4328]121212", ZINT_ERROR_INVALID_DATA, "" }, - /*655*/ { "[4329]121212", ZINT_ERROR_INVALID_DATA, "" }, - /*656*/ { "[433]121212", ZINT_ERROR_INVALID_DATA, "" }, - /*657*/ { "[4330]121212", ZINT_ERROR_INVALID_DATA, "" }, - /*658*/ { "[44]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*659*/ { "[440]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*660*/ { "[4400]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*661*/ { "[49]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*662*/ { "[490]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*663*/ { "[4900]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*664*/ { "[499]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*665*/ { "[4990]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*666*/ { "[50]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*667*/ { "[500]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*668*/ { "[5000]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*669*/ { "[51]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*670*/ { "[510]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*671*/ { "[5100]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*672*/ { "[59]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*673*/ { "[590]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*674*/ { "[5900]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*675*/ { "[60]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*676*/ { "[600]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*677*/ { "[6000]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*678*/ { "[61]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*679*/ { "[610]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*680*/ { "[6100]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*681*/ { "[69]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*682*/ { "[690]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*683*/ { "[6900]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*684*/ { "[70]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*685*/ { "[700]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*686*/ { "[7000]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*687*/ { "[7001]1234567890123", 0, "70011234567890123" }, - /*688*/ { "[7001]123456789012", ZINT_ERROR_INVALID_DATA, "" }, - /*689*/ { "[7002]abcdefghijklmnopqrstuvwxyz1234", 0, "7002abcdefghijklmnopqrstuvwxyz1234" }, - /*690*/ { "[7002]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, - /*691*/ { "[7003]1212121212", 0, "70031212121212" }, - /*692*/ { "[7003]121212121", ZINT_ERROR_INVALID_DATA, "" }, - /*693*/ { "[7004]1234", 0, "70041234" }, - /*694*/ { "[7004]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*695*/ { "[7005]abcdefghijkl", 0, "7005abcdefghijkl" }, - /*696*/ { "[7005]abcdefghijklm", ZINT_ERROR_INVALID_DATA, "" }, - /*697*/ { "[7006]200132", ZINT_WARN_NONCOMPLIANT, "7006200132" }, - /*698*/ { "[7006]200100", ZINT_WARN_NONCOMPLIANT, "7006200100" }, - /*699*/ { "[7006]200120", 0, "7006200120" }, - /*700*/ { "[7006]2001320", ZINT_ERROR_INVALID_DATA, "" }, - /*701*/ { "[7007]010101121212", 0, "7007010101121212" }, - /*702*/ { "[7007]01010112121", ZINT_ERROR_INVALID_DATA, "" }, - /*703*/ { "[7007]A1010112121", ZINT_ERROR_INVALID_DATA, "" }, - /*704*/ { "[7007]121212", 0, "7007121212" }, - /*705*/ { "[7007]12121", ZINT_ERROR_INVALID_DATA, "" }, - /*706*/ { "[7007]1212121", ZINT_ERROR_INVALID_DATA, "" }, - /*707*/ { "[7008]abc", 0, "7008abc" }, - /*708*/ { "[7008]abcd", ZINT_ERROR_INVALID_DATA, "" }, - /*709*/ { "[7009]abcdefghij", 0, "7009abcdefghij" }, - /*710*/ { "[7009]abcdefghijk", ZINT_ERROR_INVALID_DATA, "" }, - /*711*/ { "[7010]01", 0, "701001" }, - /*712*/ { "[7010]1", 0, "70101" }, - /*713*/ { "[7010]012", ZINT_ERROR_INVALID_DATA, "" }, - /*714*/ { "[7011]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*715*/ { "[7012]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*716*/ { "[7019]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*717*/ { "[7020]abcdefghijklmnopqrst", 0, "7020abcdefghijklmnopqrst" }, - /*718*/ { "[7020]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, - /*719*/ { "[7021]abcdefghijklmnopqrst", 0, "7021abcdefghijklmnopqrst" }, - /*720*/ { "[7021]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, - /*721*/ { "[7022]abcdefghijklmnopqrst", 0, "7022abcdefghijklmnopqrst" }, - /*722*/ { "[7022]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, - /*723*/ { "[7023]1234abcdefghijklmnopqrstuvwxyz", 0, "70231234abcdefghijklmnopqrstuvwxyz" }, - /*724*/ { "[7023]1234abcdefghijklmnopqrstuvwxyza", ZINT_ERROR_INVALID_DATA, "" }, - /*725*/ { "[7024]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*726*/ { "[7025]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*727*/ { "[7029]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*728*/ { "[7030]123abcdefghijklmnopqrstuvwxyza", ZINT_WARN_NONCOMPLIANT, "7030123abcdefghijklmnopqrstuvwxyza" }, - /*729*/ { "[7030]004abcdefghijklmnopqrstuvwxyza", 0, "7030004abcdefghijklmnopqrstuvwxyza" }, - /*730*/ { "[7030]123abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, - /*731*/ { "[7031]123abcdefghijklmnopqrstuvwxyza", ZINT_WARN_NONCOMPLIANT, "7031123abcdefghijklmnopqrstuvwxyza" }, - /*732*/ { "[7031]004abcdefghijklmnopqrstuvwxyza", 0, "7031004abcdefghijklmnopqrstuvwxyza" }, - /*733*/ { "[7031]123abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, - /*734*/ { "[7032]004abcdefghijklmnopqrstuvwxyza", 0, "7032004abcdefghijklmnopqrstuvwxyza" }, - /*735*/ { "[7032]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, - /*736*/ { "[7033]004abcdefghijklmnopqrstuvwxyza", 0, "7033004abcdefghijklmnopqrstuvwxyza" }, - /*737*/ { "[7033]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, - /*738*/ { "[7034]004abcdefghijklmnopqrstuvwxyza", 0, "7034004abcdefghijklmnopqrstuvwxyza" }, - /*739*/ { "[7034]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, - /*740*/ { "[7035]004abcdefghijklmnopqrstuvwxyza", 0, "7035004abcdefghijklmnopqrstuvwxyza" }, - /*741*/ { "[7035]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, - /*742*/ { "[7036]004abcdefghijklmnopqrstuvwxyza", 0, "7036004abcdefghijklmnopqrstuvwxyza" }, - /*743*/ { "[7036]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, - /*744*/ { "[7037]004abcdefghijklmnopqrstuvwxyza", 0, "7037004abcdefghijklmnopqrstuvwxyza" }, - /*745*/ { "[7037]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, - /*746*/ { "[7038]004abcdefghijklmnopqrstuvwxyza", 0, "7038004abcdefghijklmnopqrstuvwxyza" }, - /*747*/ { "[7038]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, - /*748*/ { "[7039]004abcdefghijklmnopqrstuvwxyza", 0, "7039004abcdefghijklmnopqrstuvwxyza" }, - /*749*/ { "[7039]123abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, - /*750*/ { "[7040]1abc", 0, "70401abc" }, - /*751*/ { "[7040]1ab", ZINT_ERROR_INVALID_DATA, "" }, - /*752*/ { "[7040]1abcd", ZINT_ERROR_INVALID_DATA, "" }, - /*753*/ { "[7041]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*754*/ { "[7042]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*755*/ { "[7050]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*756*/ { "[7090]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*757*/ { "[7099]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*758*/ { "[71]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*759*/ { "[710]abcdefghijklmnopqrst", 0, "710abcdefghijklmnopqrst" }, - /*760*/ { "[710]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, - /*761*/ { "[7100]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*762*/ { "[711]abcdefghijklmnopqrst", 0, "711abcdefghijklmnopqrst" }, - /*763*/ { "[711]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, - /*764*/ { "[712]abcdefghijklmnopqrst", 0, "712abcdefghijklmnopqrst" }, - /*765*/ { "[712]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, - /*766*/ { "[713]abcdefghijklmnopqrst", 0, "713abcdefghijklmnopqrst" }, - /*767*/ { "[713]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, - /*768*/ { "[714]abcdefghijklmnopqrst", 0, "714abcdefghijklmnopqrst" }, - /*769*/ { "[714]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, - /*770*/ { "[715]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*771*/ { "[716]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*772*/ { "[719]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*773*/ { "[72]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*774*/ { "[720]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*775*/ { "[7200]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*776*/ { "[721]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*777*/ { "[7210]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*778*/ { "[7220]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*779*/ { "[7230]EMabcdefghijklmnopqrstuvwxyzab", 0, "7230EMabcdefghijklmnopqrstuvwxyzab" }, - /*780*/ { "[7230]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, - /*781*/ { "[7230]EM", ZINT_ERROR_INVALID_DATA, "" }, - /*782*/ { "[7231]EMabcdefghijklmnopqrstuvwxyzab", 0, "7231EMabcdefghijklmnopqrstuvwxyzab" }, - /*783*/ { "[7231]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, - /*784*/ { "[7232]EMabcdefghijklmnopqrstuvwxyzab", 0, "7232EMabcdefghijklmnopqrstuvwxyzab" }, - /*785*/ { "[7232]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, - /*786*/ { "[7233]EMabcdefghijklmnopqrstuvwxyzab", 0, "7233EMabcdefghijklmnopqrstuvwxyzab" }, - /*787*/ { "[7233]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, - /*788*/ { "[7234]EMabcdefghijklmnopqrstuvwxyzab", 0, "7234EMabcdefghijklmnopqrstuvwxyzab" }, - /*789*/ { "[7234]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, - /*790*/ { "[7235]EMabcdefghijklmnopqrstuvwxyzab", 0, "7235EMabcdefghijklmnopqrstuvwxyzab" }, - /*791*/ { "[7235]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, - /*792*/ { "[7236]EMabcdefghijklmnopqrstuvwxyzab", 0, "7236EMabcdefghijklmnopqrstuvwxyzab" }, - /*793*/ { "[7236]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, - /*794*/ { "[7237]EMabcdefghijklmnopqrstuvwxyzab", 0, "7237EMabcdefghijklmnopqrstuvwxyzab" }, - /*795*/ { "[7237]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, - /*796*/ { "[7238]EMabcdefghijklmnopqrstuvwxyzab", 0, "7238EMabcdefghijklmnopqrstuvwxyzab" }, - /*797*/ { "[7238]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, - /*798*/ { "[7239]EMabcdefghijklmnopqrstuvwxyzab", 0, "7239EMabcdefghijklmnopqrstuvwxyzab" }, - /*799*/ { "[7239]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, - /*800*/ { "[7239]E", ZINT_ERROR_INVALID_DATA, "" }, - /*801*/ { "[7240]abcdefghijklmnopqrst", 0, "7240abcdefghijklmnopqrst" }, - /*802*/ { "[7240]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, - /*803*/ { "[7241]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*804*/ { "[7249]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*805*/ { "[7250]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*806*/ { "[7299]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*807*/ { "[73]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*808*/ { "[7300]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*809*/ { "[74]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*810*/ { "[7400]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*811*/ { "[79]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*812*/ { "[7900]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*813*/ { "[7999]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*814*/ { "[80]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*815*/ { "[800]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*816*/ { "[8000]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*817*/ { "[8001]12345678901234", ZINT_WARN_NONCOMPLIANT, "800112345678901234" }, - /*818*/ { "[8001]12345678901204", 0, "800112345678901204" }, - /*819*/ { "[8001]1234123456789012345", ZINT_ERROR_INVALID_DATA, "" }, - /*820*/ { "[8002]abcdefghijklmnopqrst", 0, "8002abcdefghijklmnopqrst" }, - /*821*/ { "[8002]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, - /*822*/ { "[8003]01234567890123abcdefghijklmnop", ZINT_WARN_NONCOMPLIANT, "800301234567890123abcdefghijklmnop" }, - /*823*/ { "[8003]01234567890128abcdefghijklmnop", 0, "800301234567890128abcdefghijklmnop" }, - /*824*/ { "[8003]01234567890128abcdefghijklmnopq", ZINT_ERROR_INVALID_DATA, "" }, - /*825*/ { "[8004]abcdefghijklmnopqrstuvwxyz1234", ZINT_WARN_NONCOMPLIANT, "8004abcdefghijklmnopqrstuvwxyz1234" }, - /*826*/ { "[8004]12cdefghijklmnopqrstuvwxyz1234", 0, "800412cdefghijklmnopqrstuvwxyz1234" }, - /*827*/ { "[8004]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, - /*828*/ { "[8005]123456", 0, "8005123456" }, - /*829*/ { "[8005]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*830*/ { "[8005]1234567", ZINT_ERROR_INVALID_DATA, "" }, - /*831*/ { "[8006]123456789012341212", ZINT_WARN_NONCOMPLIANT, "8006123456789012341212" }, - /*832*/ { "[8006]123456789012311212", 0, "8006123456789012311212" }, - /*833*/ { "[8006]12345678901234121", ZINT_ERROR_INVALID_DATA, "" }, - /*834*/ { "[8006]1234567890123412123", ZINT_ERROR_INVALID_DATA, "" }, - /*835*/ { "[8007]abcdefghijklmnopqrstuvwxyz12345678", ZINT_WARN_NONCOMPLIANT, "8007abcdefghijklmnopqrstuvwxyz12345678" }, - /*836*/ { "[8007]AD95EFGHIJKLMNOPQRSTUVWXYZ12345678", 0, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678" }, - /*837*/ { "[8007]AD95EFGHIJKLMNOPQRSTUVWXYZ123456789", ZINT_ERROR_INVALID_DATA, "" }, - /*838*/ { "[8008]123456121212", ZINT_WARN_NONCOMPLIANT, "8008123456121212" }, - /*839*/ { "[8008]121256121212", ZINT_WARN_NONCOMPLIANT, "8008121256121212" }, - /*840*/ { "[8008]121231121212", 0, "8008121231121212" }, - /*841*/ { "[8008]1234561212", ZINT_WARN_NONCOMPLIANT, "80081234561212" }, - /*842*/ { "[8008]1212311212", 0, "80081212311212" }, - /*843*/ { "[8008]12345612", ZINT_WARN_NONCOMPLIANT, "800812345612" }, - /*844*/ { "[8008]12010112", 0, "800812010112" }, - /*845*/ { "[8008]1234561", ZINT_ERROR_INVALID_DATA, "" }, - /*846*/ { "[8008]123456121", ZINT_ERROR_INVALID_DATA, "" }, - /*847*/ { "[8008]12345612121", ZINT_ERROR_INVALID_DATA, "" }, - /*848*/ { "[8008]1234561212123", ZINT_ERROR_INVALID_DATA, "" }, - /*849*/ { "[8009]12345678901234567890123456789012345678901234567890", 0, "800912345678901234567890123456789012345678901234567890" }, - /*850*/ { "[8009]123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*851*/ { "[8010]1234abcdefghijklmnopqrstuvwxyz1", ZINT_ERROR_INVALID_DATA, "" }, - /*852*/ { "[8011]123456789012", 0, "8011123456789012" }, - /*853*/ { "[8011]1234567890123", ZINT_ERROR_INVALID_DATA, "" }, - /*854*/ { "[8012]abcdefghijklmnopqrst", 0, "8012abcdefghijklmnopqrst" }, - /*855*/ { "[8012]abcdefghijklmnopqrstuv", ZINT_ERROR_INVALID_DATA, "" }, - /*856*/ { "[8013]1234abcdefghijklmnopqrsQP", 0, "80131234abcdefghijklmnopqrsQP" }, - /*857*/ { "[8013]1234abcdefghijklmnopqrsQP", 0, "80131234abcdefghijklmnopqrsQP" }, - /*858*/ { "[8013]1234abcdefghijklmnopqrsQPv", ZINT_ERROR_INVALID_DATA, "" }, - /*859*/ { "[8014]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*860*/ { "[8016]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*861*/ { "[8017]313131313131313139", ZINT_WARN_NONCOMPLIANT, "8017313131313131313139" }, - /*862*/ { "[8017]313131313131313131", 0, "8017313131313131313131" }, - /*863*/ { "[8017]31313131313131313", ZINT_ERROR_INVALID_DATA, "" }, - /*864*/ { "[8017]3131313131313131390", ZINT_ERROR_INVALID_DATA, "" }, - /*865*/ { "[8018]313131313131313139", ZINT_WARN_NONCOMPLIANT, "8018313131313131313139" }, - /*866*/ { "[8018]313131313131313131", 0, "8018313131313131313131" }, - /*867*/ { "[8018]31313131313131313", ZINT_ERROR_INVALID_DATA, "" }, - /*868*/ { "[8018]3131313131313131390", ZINT_ERROR_INVALID_DATA, "" }, - /*869*/ { "[8019]1234567890", 0, "80191234567890" }, - /*870*/ { "[8019]12345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*871*/ { "[8020]abcdefghijklmnopqrstuvwxy", 0, "8020abcdefghijklmnopqrstuvwxy" }, - /*872*/ { "[8020]abcdefghijklmnopqrstuvwxyz", ZINT_ERROR_INVALID_DATA, "" }, - /*873*/ { "[8021]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*874*/ { "[8025]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*875*/ { "[8026]123456789012341212", ZINT_WARN_NONCOMPLIANT, "8026123456789012341212" }, - /*876*/ { "[8026]123456789012311212", 0, "8026123456789012311212" }, - /*877*/ { "[8026]1234567890123451212", ZINT_ERROR_INVALID_DATA, "" }, - /*878*/ { "[8026]12345678901234512", ZINT_ERROR_INVALID_DATA, "" }, - /*879*/ { "[8027]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*880*/ { "[8030]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*881*/ { "[8040]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*882*/ { "[8050]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*883*/ { "[8060]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*884*/ { "[8070]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*885*/ { "[8080]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*886*/ { "[8090]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*887*/ { "[8099]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*888*/ { "[81]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*889*/ { "[8100]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*890*/ { "[8109]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*891*/ { "[8110]5123456789011234565123455123450123105123450123512345678901320123190000", 0, "81105123456789011234565123455123450123105123450123512345678901320123190000" }, - /*892*/ { "[8110]51234567890112345651234551234501231051234501235123456789013201231900001", ZINT_ERROR_INVALID_DATA, "" }, - /*893*/ { "[8111]1234", 0, "81111234" }, - /*894*/ { "[8111]12345", ZINT_ERROR_INVALID_DATA, "" }, - /*895*/ { "[8111]123", ZINT_ERROR_INVALID_DATA, "" }, - /*896*/ { "[8112]1234567890123456789012345678901234567890123456789012345678901234567890", ZINT_WARN_NONCOMPLIANT, "81121234567890123456789012345678901234567890123456789012345678901234567890" }, - /*897*/ { "[8112]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*898*/ { "[8112]061234567890121234569123456789012345", 0, "8112061234567890121234569123456789012345" }, - /*899*/ { "[8113]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*900*/ { "[8120]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*901*/ { "[8130]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*902*/ { "[8140]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*903*/ { "[8150]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*904*/ { "[8190]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*905*/ { "[8199]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*906*/ { "[82]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*907*/ { "[8200]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "82001234567890123456789012345678901234567890123456789012345678901234567890" }, - /*908*/ { "[8201]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*909*/ { "[8210]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*910*/ { "[8220]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*911*/ { "[8230]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*912*/ { "[8240]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*913*/ { "[8250]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*914*/ { "[8290]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*915*/ { "[8299]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*916*/ { "[83]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*917*/ { "[830]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*918*/ { "[8300]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*919*/ { "[84]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*920*/ { "[840]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*921*/ { "[8400]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*922*/ { "[85]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*923*/ { "[850]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*924*/ { "[8500]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*925*/ { "[89]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*926*/ { "[890]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*927*/ { "[8900]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*928*/ { "[90]abcdefghijklmnopqrstuvwxyz1234", 0, "90abcdefghijklmnopqrstuvwxyz1234" }, - /*929*/ { "[90]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, - /*930*/ { "[900]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*931*/ { "[9000]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*932*/ { "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "91123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, - /*933*/ { "[91]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*934*/ { "[910]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*935*/ { "[9100]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*936*/ { "[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "92123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, - /*937*/ { "[92]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*938*/ { "[920]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*939*/ { "[9200]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*940*/ { "[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "93123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, - /*941*/ { "[93]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*942*/ { "[930]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*943*/ { "[9300]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*944*/ { "[94]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "94123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, - /*945*/ { "[94]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*946*/ { "[940]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*947*/ { "[9400]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*948*/ { "[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "95123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, - /*949*/ { "[95]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*950*/ { "[950]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*951*/ { "[9500]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*952*/ { "[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "96123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, - /*953*/ { "[96]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*954*/ { "[960]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*955*/ { "[9600]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*956*/ { "[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "97123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, - /*957*/ { "[97]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*958*/ { "[970]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*959*/ { "[9700]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*960*/ { "[98]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "98123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, - /*961*/ { "[98]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*962*/ { "[980]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*963*/ { "[9800]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*964*/ { "[99]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "99123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, - /*965*/ { "[99]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, - /*966*/ { "[990]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*967*/ { "[9900]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*968*/ { "[9999]1234", ZINT_ERROR_INVALID_DATA, "" }, - /*969*/ { "[01]12345678901234[7006]200101", ZINT_WARN_NONCOMPLIANT, "01123456789012347006200101" }, - /*970*/ { "[01]12345678901231[7006]200101", 0, "01123456789012317006200101" }, - /*971*/ { "[3900]1234567890[01]12345678901234", ZINT_WARN_NONCOMPLIANT, "39001234567890[0112345678901234" }, - /*972*/ { "[3900]1234567890[01]12345678901231", 0, "39001234567890[0112345678901231" }, - /*973*/ { "[253]12345678901234[3901]12345678901234[20]12", ZINT_WARN_NONCOMPLIANT, "25312345678901234[390112345678901234[2012" }, - /*974*/ { "[253]12345678901284[3901]12345678901234[20]12", 0, "25312345678901284[390112345678901234[2012" }, - /*975*/ { "[253]12345678901234[01]12345678901234[3901]12345678901234[20]12", ZINT_WARN_NONCOMPLIANT, "25312345678901234[0112345678901234390112345678901234[2012" }, - /*976*/ { "[253]12345678901284[01]12345678901231[3901]12345678901234[20]12", 0, "25312345678901284[0112345678901231390112345678901234[2012" }, + /* 6*/ { "[1A]12", ZINT_ERROR_INVALID_DATA, "" }, + /* 7*/ { "[10]", ZINT_ERROR_INVALID_DATA, "" }, + /* 8*/ { "[90]\n", ZINT_ERROR_INVALID_DATA, "" }, + /* 9*/ { "[90]\x7F", ZINT_ERROR_INVALID_DATA, "" }, + /* 10*/ { "[90]\x80", ZINT_ERROR_INVALID_DATA, "" }, + /* 11*/ { "[00]123456789012345678", ZINT_WARN_NONCOMPLIANT, "00123456789012345678" }, + /* 12*/ { "[00]123456789012345675", 0, "00123456789012345675" }, + /* 13*/ { "[00]12345678901234567", ZINT_ERROR_INVALID_DATA, "" }, + /* 14*/ { "[00]1234567890123456789", ZINT_ERROR_INVALID_DATA, "" }, + /* 15*/ { "[00]376104250021234569", 0, "00376104250021234569" }, + /* 16*/ { "[00]376104250021234568", ZINT_WARN_NONCOMPLIANT, "00376104250021234568" }, + /* 17*/ { "[01]12345678901234", ZINT_WARN_NONCOMPLIANT, "0112345678901234" }, + /* 18*/ { "[01]12345678901231", 0, "0112345678901231" }, + /* 19*/ { "[01]123456789012345", ZINT_ERROR_INVALID_DATA, "" }, + /* 20*/ { "[02]12345678901234", ZINT_WARN_NONCOMPLIANT, "0212345678901234" }, + /* 21*/ { "[02]12345678901231", 0, "0212345678901231" }, + /* 22*/ { "[02]1234567890123", ZINT_ERROR_INVALID_DATA, "" }, + /* 23*/ { "[03]12345678901234", ZINT_ERROR_INVALID_DATA, "" }, + /* 24*/ { "[04]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 25*/ { "[05]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 26*/ { "[06]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 27*/ { "[07]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 28*/ { "[08]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 29*/ { "[09]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 30*/ { "[10]ABCD123456", 0, "10ABCD123456" }, + /* 31*/ { "[10]123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /* 32*/ { "[100]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 33*/ { "[1000]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 34*/ { "[11]990102", 0, "11990102" }, + /* 35*/ { "[11]9901023", ZINT_ERROR_INVALID_DATA, "" }, + /* 36*/ { "[110]990102", ZINT_ERROR_INVALID_DATA, "" }, + /* 37*/ { "[1100]990102", ZINT_ERROR_INVALID_DATA, "" }, + /* 38*/ { "[12]000100", 0, "12000100" }, + /* 39*/ { "[12]00010", ZINT_ERROR_INVALID_DATA, "" }, + /* 40*/ { "[120]000100", ZINT_ERROR_INVALID_DATA, "" }, + /* 41*/ { "[1200]000100", ZINT_ERROR_INVALID_DATA, "" }, + /* 42*/ { "[13]991301", ZINT_WARN_NONCOMPLIANT, "13991301" }, + /* 43*/ { "[13]991201", 0, "13991201" }, + /* 44*/ { "[13]9913011", ZINT_ERROR_INVALID_DATA, "" }, + /* 45*/ { "[130]991301", ZINT_ERROR_INVALID_DATA, "" }, + /* 46*/ { "[1300]991301", ZINT_ERROR_INVALID_DATA, "" }, + /* 47*/ { "[14]991201", ZINT_ERROR_INVALID_DATA, "" }, + /* 48*/ { "[140]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 49*/ { "[1400]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 50*/ { "[15]021231", 0, "15021231" }, + /* 51*/ { "[15]02123", ZINT_ERROR_INVALID_DATA, "" }, + /* 52*/ { "[150]021231", ZINT_ERROR_INVALID_DATA, "" }, + /* 53*/ { "[1500]021231", ZINT_ERROR_INVALID_DATA, "" }, + /* 54*/ { "[16]000000", ZINT_WARN_NONCOMPLIANT, "16000000" }, + /* 55*/ { "[16]000100", 0, "16000100" }, + /* 56*/ { "[16]00000", ZINT_ERROR_INVALID_DATA, "" }, + /* 57*/ { "[160]000000", ZINT_ERROR_INVALID_DATA, "" }, + /* 58*/ { "[1600]000000", ZINT_ERROR_INVALID_DATA, "" }, + /* 59*/ { "[17]010200", 0, "17010200" }, + /* 60*/ { "[17]0102000", ZINT_ERROR_INVALID_DATA, "" }, + /* 61*/ { "[170]010200", ZINT_ERROR_INVALID_DATA, "" }, + /* 62*/ { "[1700]010200", ZINT_ERROR_INVALID_DATA, "" }, + /* 63*/ { "[18]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 64*/ { "[180]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 65*/ { "[1800]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 66*/ { "[19]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 67*/ { "[190]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 68*/ { "[1900]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 69*/ { "[20]12", 0, "2012" }, + /* 70*/ { "[20]1", ZINT_ERROR_INVALID_DATA, "" }, + /* 71*/ { "[200]12", ZINT_ERROR_INVALID_DATA, "" }, + /* 72*/ { "[2000]12", ZINT_ERROR_INVALID_DATA, "" }, + /* 73*/ { "[21]A12345678", 0, "21A12345678" }, + /* 74*/ { "[21]123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /* 75*/ { "[210]A12345678", ZINT_ERROR_INVALID_DATA, "" }, + /* 76*/ { "[2100]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 77*/ { "[22]abcdefghijklmnopqrst", 0, "22abcdefghijklmnopqrst" }, + /* 78*/ { "[22]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, + /* 79*/ { "[220]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 80*/ { "[2200]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 81*/ { "[23]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 82*/ { "[230]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 83*/ { "[2300]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 84*/ { "[235]1abcdefghijklmnopqrstuvwxyz0", 0, "2351abcdefghijklmnopqrstuvwxyz0" }, + /* 85*/ { "[235]1abcdefghijklmnopqrstuvwxyz01", ZINT_ERROR_INVALID_DATA, "" }, + /* 86*/ { "[24]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 87*/ { "[240]abcdefghijklmnopqrstuvwxyz1234", 0, "240abcdefghijklmnopqrstuvwxyz1234" }, + /* 88*/ { "[240]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, + /* 89*/ { "[2400]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 90*/ { "[241]abcdefghijklmnopqrstuvwxyz1234", 0, "241abcdefghijklmnopqrstuvwxyz1234" }, + /* 91*/ { "[241]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, + /* 92*/ { "[2410]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 93*/ { "[242]12345", 0, "24212345" }, + /* 94*/ { "[242]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /* 95*/ { "[2420]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 96*/ { "[243]abcdefghijklmnopqrst", 0, "243abcdefghijklmnopqrst" }, + /* 97*/ { "[243]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, + /* 98*/ { "[2430]1234", ZINT_ERROR_INVALID_DATA, "" }, + /* 99*/ { "[244]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*100*/ { "[2440]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*101*/ { "[249]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*102*/ { "[2490]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*103*/ { "[25]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*104*/ { "[250]abcdefghijklmnopqrstuvwxyz1234", 0, "250abcdefghijklmnopqrstuvwxyz1234" }, + /*105*/ { "[250]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, + /*106*/ { "[2500]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*107*/ { "[251]abcdefghijklmnopqrstuvwxyz1234", 0, "251abcdefghijklmnopqrstuvwxyz1234" }, + /*108*/ { "[251]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, + /*109*/ { "[2510]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*110*/ { "[252]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*111*/ { "[2520]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*112*/ { "[253]131313131313", ZINT_ERROR_INVALID_DATA, "" }, + /*113*/ { "[253]1313131313134", ZINT_WARN_NONCOMPLIANT, "2531313131313134" }, + /*114*/ { "[253]1313131313130", 0, "2531313131313130" }, + /*115*/ { "[253]131313131313412345678901234567", ZINT_WARN_NONCOMPLIANT, "253131313131313412345678901234567" }, + /*116*/ { "[253]131313131313012345678901234567", 0, "253131313131313012345678901234567" }, + /*117*/ { "[253]1313131313134123456789012345678", ZINT_ERROR_INVALID_DATA, "" }, + /*118*/ { "[2530]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*119*/ { "[254]abcdefghijklmnopqrst", 0, "254abcdefghijklmnopqrst" }, + /*120*/ { "[254]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, + /*121*/ { "[2540]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*122*/ { "[255]131313131313", ZINT_ERROR_INVALID_DATA, "" }, + /*123*/ { "[255]1313131313134", ZINT_WARN_NONCOMPLIANT, "2551313131313134" }, + /*124*/ { "[255]1313131313130", 0, "2551313131313130" }, + /*125*/ { "[255]1313131313134123456789012", ZINT_WARN_NONCOMPLIANT, "2551313131313134123456789012" }, + /*126*/ { "[255]1313131313130123456789012", 0, "2551313131313130123456789012" }, + /*127*/ { "[255]13131313131341234567890123", ZINT_ERROR_INVALID_DATA, "" }, + /*128*/ { "[2550]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*129*/ { "[256]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*130*/ { "[2560]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*131*/ { "[259]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*132*/ { "[2590]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*133*/ { "[26]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*134*/ { "[260]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*135*/ { "[2600]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*136*/ { "[27]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*137*/ { "[270]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*138*/ { "[2700]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*139*/ { "[28]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*140*/ { "[280]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*141*/ { "[2800]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*142*/ { "[29]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*143*/ { "[290]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*144*/ { "[2900]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*145*/ { "[30]12345678", 0, "3012345678" }, + /*146*/ { "[30]123456789", ZINT_ERROR_INVALID_DATA, "" }, + /*147*/ { "[300]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*148*/ { "[3000]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*149*/ { "[31]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*150*/ { "[310]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*151*/ { "[3100]123456", 0, "3100123456" }, + /*152*/ { "[3100]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*153*/ { "[3101]123456", 0, "3101123456" }, + /*154*/ { "[3101]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*155*/ { "[3105]123456", 0, "3105123456" }, + /*156*/ { "[3105]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*157*/ { "[3106]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*158*/ { "[3109]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*159*/ { "[3110]123456", 0, "3110123456" }, + /*160*/ { "[3110]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*161*/ { "[3115]123456", 0, "3115123456" }, + /*162*/ { "[3115]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*163*/ { "[3116]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*164*/ { "[3119]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*165*/ { "[3120]123456", 0, "3120123456" }, + /*166*/ { "[3120]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*167*/ { "[3125]123456", 0, "3125123456" }, + /*168*/ { "[3125]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*169*/ { "[3126]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*170*/ { "[3129]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*171*/ { "[3130]123456", 0, "3130123456" }, + /*172*/ { "[3130]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*173*/ { "[3135]123456", 0, "3135123456" }, + /*174*/ { "[3135]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*175*/ { "[3136]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*176*/ { "[3139]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*177*/ { "[3140]123456", 0, "3140123456" }, + /*178*/ { "[3140]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*179*/ { "[3145]123456", 0, "3145123456" }, + /*180*/ { "[3145]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*181*/ { "[3146]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*182*/ { "[3149]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*183*/ { "[3150]123456", 0, "3150123456" }, + /*184*/ { "[3150]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*185*/ { "[3155]123456", 0, "3155123456" }, + /*186*/ { "[3155]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*187*/ { "[3156]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*188*/ { "[3159]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*189*/ { "[3160]123456", 0, "3160123456" }, + /*190*/ { "[3160]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*191*/ { "[3165]123456", 0, "3165123456" }, + /*192*/ { "[3165]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*193*/ { "[3166]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*194*/ { "[3169]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*195*/ { "[3170]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*196*/ { "[3179]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*197*/ { "[3180]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*198*/ { "[3189]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*199*/ { "[3190]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*200*/ { "[3199]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*201*/ { "[32]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*202*/ { "[320]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*203*/ { "[3200]123456", 0, "3200123456" }, + /*204*/ { "[3200]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*205*/ { "[3205]123456", 0, "3205123456" }, + /*206*/ { "[3205]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*207*/ { "[3206]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*208*/ { "[3209]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*209*/ { "[3210]123456", 0, "3210123456" }, + /*210*/ { "[3210]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*211*/ { "[3215]123456", 0, "3215123456" }, + /*212*/ { "[3215]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*213*/ { "[3216]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*214*/ { "[3219]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*215*/ { "[3220]123456", 0, "3220123456" }, + /*216*/ { "[3220]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*217*/ { "[3225]123456", 0, "3225123456" }, + /*218*/ { "[3225]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*219*/ { "[3229]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*220*/ { "[3230]123456", 0, "3230123456" }, + /*221*/ { "[3230]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*222*/ { "[3235]123456", 0, "3235123456" }, + /*223*/ { "[3235]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*224*/ { "[3239]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*225*/ { "[3240]123456", 0, "3240123456" }, + /*226*/ { "[3240]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*227*/ { "[3245]123456", 0, "3245123456" }, + /*228*/ { "[3245]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*229*/ { "[3249]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*230*/ { "[3250]123456", 0, "3250123456" }, + /*231*/ { "[3250]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*232*/ { "[3255]123456", 0, "3255123456" }, + /*233*/ { "[3255]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*234*/ { "[3259]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*235*/ { "[3260]123456", 0, "3260123456" }, + /*236*/ { "[3260]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*237*/ { "[3265]123456", 0, "3265123456" }, + /*238*/ { "[3265]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*239*/ { "[3269]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*240*/ { "[3270]123456", 0, "3270123456" }, + /*241*/ { "[3270]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*242*/ { "[3275]123456", 0, "3275123456" }, + /*243*/ { "[3275]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*244*/ { "[3279]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*245*/ { "[3280]123456", 0, "3280123456" }, + /*246*/ { "[3280]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*247*/ { "[3285]123456", 0, "3285123456" }, + /*248*/ { "[3285]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*249*/ { "[3289]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*250*/ { "[3290]123456", 0, "3290123456" }, + /*251*/ { "[3290]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*252*/ { "[3295]123456", 0, "3295123456" }, + /*253*/ { "[3295]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*254*/ { "[3296]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*255*/ { "[3299]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*256*/ { "[33]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*257*/ { "[330]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*258*/ { "[3300]123456", 0, "3300123456" }, + /*259*/ { "[3300]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*260*/ { "[3305]123456", 0, "3305123456" }, + /*261*/ { "[3305]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*262*/ { "[3306]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*263*/ { "[3309]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*264*/ { "[3310]123456", 0, "3310123456" }, + /*265*/ { "[3310]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*266*/ { "[3319]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*267*/ { "[3320]123456", 0, "3320123456" }, + /*268*/ { "[3320]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*269*/ { "[3329]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*270*/ { "[3330]123456", 0, "3330123456" }, + /*271*/ { "[3330]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*272*/ { "[3339]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*273*/ { "[3340]123456", 0, "3340123456" }, + /*274*/ { "[3340]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*275*/ { "[3349]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*276*/ { "[3350]123456", 0, "3350123456" }, + /*277*/ { "[3350]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*278*/ { "[3359]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*279*/ { "[3360]123456", 0, "3360123456" }, + /*280*/ { "[3360]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*281*/ { "[3369]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*282*/ { "[3370]123456", 0, "3370123456" }, + /*283*/ { "[3370]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*284*/ { "[3375]123456", 0, "3375123456" }, + /*285*/ { "[3375]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*286*/ { "[3376]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*287*/ { "[3379]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*288*/ { "[3380]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*289*/ { "[3390]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*290*/ { "[3399]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*291*/ { "[34]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*292*/ { "[340]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*293*/ { "[3400]123456", 0, "3400123456" }, + /*294*/ { "[3400]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*295*/ { "[3405]123456", 0, "3405123456" }, + /*296*/ { "[3405]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*297*/ { "[3406]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*298*/ { "[3409]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*299*/ { "[3410]123456", 0, "3410123456" }, + /*300*/ { "[3410]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*301*/ { "[3419]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*302*/ { "[3420]123456", 0, "3420123456" }, + /*303*/ { "[3420]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*304*/ { "[3429]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*305*/ { "[3430]123456", 0, "3430123456" }, + /*306*/ { "[3430]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*307*/ { "[3439]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*308*/ { "[3440]123456", 0, "3440123456" }, + /*309*/ { "[3440]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*310*/ { "[3449]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*311*/ { "[3450]123456", 0, "3450123456" }, + /*312*/ { "[3450]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*313*/ { "[3459]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*314*/ { "[3460]123456", 0, "3460123456" }, + /*315*/ { "[3460]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*316*/ { "[3469]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*317*/ { "[3470]123456", 0, "3470123456" }, + /*318*/ { "[3470]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*319*/ { "[3479]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*320*/ { "[3480]123456", 0, "3480123456" }, + /*321*/ { "[3480]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*322*/ { "[3489]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*323*/ { "[3490]123456", 0, "3490123456" }, + /*324*/ { "[3490]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*325*/ { "[3495]123456", 0, "3495123456" }, + /*326*/ { "[3495]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*327*/ { "[3496]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*328*/ { "[3499]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*329*/ { "[35]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*330*/ { "[350]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*331*/ { "[3500]123456", 0, "3500123456" }, + /*332*/ { "[3500]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*333*/ { "[3505]123456", 0, "3505123456" }, + /*334*/ { "[3505]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*335*/ { "[3506]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*336*/ { "[3509]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*337*/ { "[3510]123456", 0, "3510123456", }, + /*338*/ { "[3510]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*339*/ { "[3519]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*340*/ { "[3520]123456", 0, "3520123456", }, + /*341*/ { "[3520]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*342*/ { "[3529]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*343*/ { "[3530]123456", 0, "3530123456", }, + /*344*/ { "[3530]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*345*/ { "[3539]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*346*/ { "[3540]123456", 0, "3540123456", }, + /*347*/ { "[3540]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*348*/ { "[3549]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*349*/ { "[3550]123456", 0, "3550123456", }, + /*350*/ { "[3550]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*351*/ { "[3559]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*352*/ { "[3560]123456", 0, "3560123456", }, + /*353*/ { "[3560]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*354*/ { "[3569]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*355*/ { "[3570]123456", 0, "3570123456", }, + /*356*/ { "[3570]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*357*/ { "[3575]123456", 0, "3575123456" }, + /*358*/ { "[3376]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*359*/ { "[3579]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*360*/ { "[3580]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*361*/ { "[3590]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*362*/ { "[3599]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*363*/ { "[36]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*364*/ { "[360]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*365*/ { "[3600]123456", 0, "3600123456" }, + /*366*/ { "[3600]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*367*/ { "[3605]123456", 0, "3605123456" }, + /*368*/ { "[3605]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*369*/ { "[3606]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*370*/ { "[3609]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*371*/ { "[3610]123456", 0, "3610123456" }, + /*372*/ { "[3610]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*373*/ { "[3619]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*374*/ { "[3620]123456", 0, "3620123456", }, + /*375*/ { "[3620]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*376*/ { "[3629]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*377*/ { "[3630]123456", 0, "3630123456", }, + /*378*/ { "[3630]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*379*/ { "[3639]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*380*/ { "[3640]123456", 0, "3640123456", }, + /*381*/ { "[3640]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*382*/ { "[3649]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*383*/ { "[3650]123456", 0, "3650123456", }, + /*384*/ { "[3650]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*385*/ { "[3659]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*386*/ { "[3660]123456", 0, "3660123456", }, + /*387*/ { "[3660]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*388*/ { "[3669]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*389*/ { "[3670]123456", 0, "3670123456", }, + /*390*/ { "[3670]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*391*/ { "[3679]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*392*/ { "[3680]123456", 0, "3680123456", }, + /*393*/ { "[3680]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*394*/ { "[3689]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*395*/ { "[3690]123456", 0, "3690123456" }, + /*396*/ { "[3690]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*397*/ { "[3695]123456", 0, "3695123456" }, + /*398*/ { "[3695]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*399*/ { "[3696]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*400*/ { "[3699]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*401*/ { "[37]12345678", 0, "3712345678" }, + /*402*/ { "[37]123456789", ZINT_ERROR_INVALID_DATA, "" }, + /*403*/ { "[370]12345678", ZINT_ERROR_INVALID_DATA, "" }, + /*404*/ { "[3700]12345678", ZINT_ERROR_INVALID_DATA, "" }, + /*405*/ { "[38]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*406*/ { "[380]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*407*/ { "[3800]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*408*/ { "[39]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*409*/ { "[390]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*410*/ { "[3900]123456789012345", 0, "3900123456789012345" }, + /*411*/ { "[3900]1234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*412*/ { "[3900]12345678901234", 0, "390012345678901234" }, + /*413*/ { "[3901]123456789012345", 0, "3901123456789012345" }, + /*414*/ { "[3901]1234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*415*/ { "[3905]123456789012345", 0, "3905123456789012345" }, + /*416*/ { "[3909]123456789012345", 0, "3909123456789012345" }, + /*417*/ { "[3909]1234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*418*/ { "[3910]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3910123123456789012345" }, + /*419*/ { "[3910]997123456789012345", 0, "3910997123456789012345" }, + /*420*/ { "[3910]1231234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*421*/ { "[3910]123", ZINT_ERROR_INVALID_DATA, "" }, + /*422*/ { "[3915]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3915123123456789012345" }, + /*423*/ { "[3915]997123456789012345", 0, "3915997123456789012345" }, + /*424*/ { "[3915]1231234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*425*/ { "[3919]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3919123123456789012345" }, + /*426*/ { "[3919]997123456789012345", 0, "3919997123456789012345" }, + /*427*/ { "[3919]1231234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*428*/ { "[3920]123456789012345", 0, "3920123456789012345" }, + /*429*/ { "[3920]1234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*430*/ { "[3925]123456789012345", 0, "3925123456789012345" }, + /*431*/ { "[3925]1234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*432*/ { "[3929]123456789012345", 0, "3929123456789012345" }, + /*433*/ { "[3929]1234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*434*/ { "[3930]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3930123123456789012345" }, + /*435*/ { "[3930]997123456789012345", 0, "3930997123456789012345" }, + /*436*/ { "[3930]1231234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*437*/ { "[3930]123", ZINT_ERROR_INVALID_DATA, "" }, + /*438*/ { "[3935]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3935123123456789012345" }, + /*439*/ { "[3935]997123456789012345", 0, "3935997123456789012345" }, + /*440*/ { "[3935]1231234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*441*/ { "[3939]123123456789012345", ZINT_WARN_NONCOMPLIANT, "3939123123456789012345" }, + /*442*/ { "[3939]997123456789012345", 0, "3939997123456789012345" }, + /*443*/ { "[3939]1231234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*444*/ { "[3940]1234", 0, "39401234" }, + /*445*/ { "[3940]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*446*/ { "[3940]123", ZINT_ERROR_INVALID_DATA, "" }, + /*447*/ { "[3941]1234", 0, "39411234" }, + /*448*/ { "[3941]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*449*/ { "[3941]123", ZINT_ERROR_INVALID_DATA, "" }, + /*450*/ { "[3942]1234", 0, "39421234" }, + /*451*/ { "[3942]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*452*/ { "[3943]1234", 0, "39431234" }, + /*453*/ { "[3943]123", ZINT_ERROR_INVALID_DATA, "" }, + /*454*/ { "[3944]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*455*/ { "[3945]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*456*/ { "[3949]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*457*/ { "[3950]123456", 0, "3950123456" }, + /*458*/ { "[3950]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*459*/ { "[3950]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*460*/ { "[3951]123456", 0, "3951123456" }, + /*461*/ { "[3951]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*462*/ { "[3952]123456", 0, "3952123456" }, + /*463*/ { "[3952]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*464*/ { "[3953]123456", 0, "3953123456" }, + /*465*/ { "[3953]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*466*/ { "[3954]123456", 0, "3954123456" }, + /*467*/ { "[3954]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*468*/ { "[3955]123456", 0, "3955123456" }, + /*469*/ { "[3955]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*470*/ { "[3956]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*471*/ { "[3959]123456", ZINT_ERROR_INVALID_DATA, "" }, + /*472*/ { "[3960]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*473*/ { "[3970]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*474*/ { "[3980]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*475*/ { "[3999]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*476*/ { "[40]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*477*/ { "[400]123456789012345678901234567890", 0, "400123456789012345678901234567890" }, + /*478*/ { "[400]1234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*479*/ { "[4000]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*480*/ { "[401]1234abcdefghijklmnopqrstuvwxyz", 0, "4011234abcdefghijklmnopqrstuvwxyz" }, + /*481*/ { "[401]1234abcdefghijklmnopqrstuvwxyz1", ZINT_ERROR_INVALID_DATA, "" }, + /*482*/ { "[4010]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*483*/ { "[402]13131313131313132", ZINT_WARN_NONCOMPLIANT, "40213131313131313132" }, + /*484*/ { "[402]13131313131313130", 0, "40213131313131313130" }, + /*485*/ { "[402]1313131313131313", ZINT_ERROR_INVALID_DATA, "" }, + /*486*/ { "[4020]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*487*/ { "[403]abcdefghijklmnopqrstuvwxyz1234", 0, "403abcdefghijklmnopqrstuvwxyz1234" }, + /*488*/ { "[403]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, + /*489*/ { "[4030]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*490*/ { "[404]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*491*/ { "[4040]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*492*/ { "[409]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*493*/ { "[4090]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*494*/ { "[41]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*495*/ { "[410]3898765432108", 0, "4103898765432108" }, + /*496*/ { "[410]12345678901234", ZINT_ERROR_INVALID_DATA, "" }, + /*497*/ { "[4100]12345678901234", ZINT_ERROR_INVALID_DATA, "" }, + /*498*/ { "[411]1313131313134", ZINT_WARN_NONCOMPLIANT, "4111313131313134" }, + /*499*/ { "[411]1313131313130", 0, "4111313131313130" }, + /*500*/ { "[411]13131313131", ZINT_ERROR_INVALID_DATA, "" }, + /*501*/ { "[4110]1313131313134", ZINT_ERROR_INVALID_DATA, "" }, + /*502*/ { "[412]1313131313130", 0, "4121313131313130" }, + /*503*/ { "[412]13131313131", ZINT_ERROR_INVALID_DATA, "" }, + /*504*/ { "[4120]1313131313134", ZINT_ERROR_INVALID_DATA, "" }, + /*505*/ { "[413]1313131313130", 0, "4131313131313130" }, + /*506*/ { "[413]13131313131", ZINT_ERROR_INVALID_DATA, "" }, + /*507*/ { "[4130]1313131313134", ZINT_ERROR_INVALID_DATA, "" }, + /*508*/ { "[414]1313131313130", 0, "4141313131313130" }, + /*509*/ { "[414]13131313131", ZINT_ERROR_INVALID_DATA, "" }, + /*510*/ { "[4140]1313131313134", ZINT_ERROR_INVALID_DATA, "" }, + /*511*/ { "[415]1313131313130", 0, "4151313131313130" }, + /*512*/ { "[415]13131313131", ZINT_ERROR_INVALID_DATA, "" }, + /*513*/ { "[4150]1313131313134", ZINT_ERROR_INVALID_DATA, "" }, + /*514*/ { "[416]1313131313130", 0, "4161313131313130" }, + /*515*/ { "[416]13131313131", ZINT_ERROR_INVALID_DATA, "" }, + /*516*/ { "[4160]1313131313134", ZINT_ERROR_INVALID_DATA, "" }, + /*517*/ { "[417]1313131313130", 0, "4171313131313130" }, + /*518*/ { "[417]13131313131", ZINT_ERROR_INVALID_DATA, "" }, + /*519*/ { "[4170]1313131313134", ZINT_ERROR_INVALID_DATA, "" }, + /*520*/ { "[418]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*521*/ { "[4180]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*522*/ { "[419]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*523*/ { "[4190]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*524*/ { "[42]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*525*/ { "[420]abcdefghijklmnopqrst", 0, "420abcdefghijklmnopqrst" }, + /*526*/ { "[420]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, + /*527*/ { "[4200]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*528*/ { "[421]123abcdefghi", ZINT_WARN_NONCOMPLIANT, "421123abcdefghi" }, + /*529*/ { "[421]434abcdefghi", 0, "421434abcdefghi" }, + /*530*/ { "[421]123abcdefghij", ZINT_ERROR_INVALID_DATA, "" }, + /*531*/ { "[421]1231", ZINT_WARN_NONCOMPLIANT, "4211231" }, + /*532*/ { "[421]4341", 0, "4214341" }, + /*533*/ { "[421]123", ZINT_ERROR_INVALID_DATA, "" }, + /*534*/ { "[4210]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*535*/ { "[422]123", ZINT_WARN_NONCOMPLIANT, "422123" }, + /*536*/ { "[422]004", 0, "422004" }, + /*537*/ { "[422]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*538*/ { "[422]12", ZINT_ERROR_INVALID_DATA, "" }, + /*539*/ { "[4220]123", ZINT_ERROR_INVALID_DATA, "" }, + /*540*/ { "[423]123123123123123", ZINT_WARN_NONCOMPLIANT, "423123123123123123" }, + /*541*/ { "[423]470004012887123", ZINT_WARN_NONCOMPLIANT, "423470004012887123" }, + /*542*/ { "[423]470004012887438", 0, "423470004012887438" }, + /*543*/ { "[423]1231231231231231", ZINT_ERROR_INVALID_DATA, "4231231231231231231" }, + /*544*/ { "[423]12312312312312", ZINT_WARN_NONCOMPLIANT, "42312312312312312" }, + /*545*/ { "[423]1231231231231", ZINT_WARN_NONCOMPLIANT, "4231231231231231" }, + /*546*/ { "[423]12312312312", ZINT_WARN_NONCOMPLIANT, "42312312312312" }, + /*547*/ { "[423]1231231231", ZINT_WARN_NONCOMPLIANT, "4231231231231" }, + /*548*/ { "[423]123", ZINT_WARN_NONCOMPLIANT, "423123" }, + /*549*/ { "[423]004", 0, "423004" }, + /*550*/ { "[423]12", ZINT_ERROR_INVALID_DATA, "" }, + /*551*/ { "[4230]123123123123123", ZINT_ERROR_INVALID_DATA, "" }, + /*552*/ { "[424]123", ZINT_WARN_NONCOMPLIANT, "424123" }, + /*553*/ { "[424]004", 0, "424004" }, + /*554*/ { "[424]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*555*/ { "[424]12", ZINT_ERROR_INVALID_DATA, "" }, + /*556*/ { "[4240]123", ZINT_ERROR_INVALID_DATA, "" }, + /*557*/ { "[425]123123123123123", ZINT_WARN_NONCOMPLIANT, "425123123123123123" }, + /*558*/ { "[425]010500276634894", 0, "425010500276634894" }, + /*559*/ { "[425]010500276123894", ZINT_WARN_NONCOMPLIANT, "425010500276123894" }, + /*560*/ { "[425]1231231231231231", ZINT_ERROR_INVALID_DATA, "" }, + /*561*/ { "[425]12", ZINT_ERROR_INVALID_DATA, "" }, + /*562*/ { "[4250]123123123123123", ZINT_ERROR_INVALID_DATA, "" }, + /*563*/ { "[426]123", ZINT_WARN_NONCOMPLIANT, "426123" }, + /*564*/ { "[426]426", 0, "426426" }, + /*565*/ { "[426]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*566*/ { "[426]12", ZINT_ERROR_INVALID_DATA, "" }, + /*567*/ { "[4260]123", ZINT_ERROR_INVALID_DATA, "" }, + /*568*/ { "[427]abc", 0, "427abc" }, + /*569*/ { "[427]abcd", ZINT_ERROR_INVALID_DATA, "" }, + /*570*/ { "[4270]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*571*/ { "[428]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*572*/ { "[4280]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*573*/ { "[429]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*574*/ { "[4290]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*575*/ { "[43]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*576*/ { "[430]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*577*/ { "[4300]1", 0, "43001" }, + /*578*/ { "[4300]12345678901234567890123456789012345", 0, "430012345678901234567890123456789012345" }, + /*579*/ { "[4300]123456789012345678901234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*580*/ { "[4301]1", 0, "43011" }, + /*581*/ { "[4301]12345678901234567890123456789012345", 0, "430112345678901234567890123456789012345" }, + /*582*/ { "[4301]123456789012345678901234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*583*/ { "[4302]1", 0, "43021" }, + /*584*/ { "[4302]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43021234567890123456789012345678901234567890123456789012345678901234567890" }, + /*585*/ { "[4302]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*586*/ { "[4303]1", 0, "43031" }, + /*587*/ { "[4303]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43031234567890123456789012345678901234567890123456789012345678901234567890" }, + /*588*/ { "[4303]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*589*/ { "[4304]1", 0, "43041" }, + /*590*/ { "[4304]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43041234567890123456789012345678901234567890123456789012345678901234567890" }, + /*591*/ { "[4304]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*592*/ { "[4305]1", 0, "43051" }, + /*593*/ { "[4305]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43051234567890123456789012345678901234567890123456789012345678901234567890" }, + /*594*/ { "[4305]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*595*/ { "[4306]1", 0, "43061" }, + /*596*/ { "[4306]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43061234567890123456789012345678901234567890123456789012345678901234567890" }, + /*597*/ { "[4306]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*598*/ { "[4307]FR", 0, "4307FR" }, + /*599*/ { "[4307]F", ZINT_ERROR_INVALID_DATA, "" }, + /*600*/ { "[4307]FRR", ZINT_ERROR_INVALID_DATA, "" }, + /*601*/ { "[4308]1", 0, "43081" }, + /*602*/ { "[4308]123456789012345678901234567890", 0, "4308123456789012345678901234567890" }, + /*603*/ { "[4308]1234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*604*/ { "[4309]1", ZINT_ERROR_INVALID_DATA, "" }, + /*605*/ { "[431]1", ZINT_ERROR_INVALID_DATA, "" }, + /*606*/ { "[4310]1", 0, "43101" }, + /*607*/ { "[4310]12345678901234567890123456789012345", 0, "431012345678901234567890123456789012345" }, + /*608*/ { "[4310]123456789012345678901234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*609*/ { "[4311]1", 0, "43111" }, + /*610*/ { "[4311]12345678901234567890123456789012345", 0, "431112345678901234567890123456789012345" }, + /*611*/ { "[4311]123456789012345678901234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*612*/ { "[4312]1", 0, "43121" }, + /*613*/ { "[4312]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43121234567890123456789012345678901234567890123456789012345678901234567890" }, + /*614*/ { "[4312]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*615*/ { "[4313]1", 0, "43131" }, + /*616*/ { "[4313]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43131234567890123456789012345678901234567890123456789012345678901234567890" }, + /*617*/ { "[4313]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*618*/ { "[4314]1", 0, "43141" }, + /*619*/ { "[4314]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43141234567890123456789012345678901234567890123456789012345678901234567890" }, + /*620*/ { "[4314]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*621*/ { "[4315]1", 0, "43151" }, + /*622*/ { "[4315]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43151234567890123456789012345678901234567890123456789012345678901234567890" }, + /*623*/ { "[4315]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*624*/ { "[4316]1", 0, "43161" }, + /*625*/ { "[4316]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "43161234567890123456789012345678901234567890123456789012345678901234567890" }, + /*626*/ { "[4316]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*627*/ { "[4317]FR", 0, "4317FR" }, + /*628*/ { "[4317]F", ZINT_ERROR_INVALID_DATA, "" }, + /*629*/ { "[4317]FRF", ZINT_ERROR_INVALID_DATA, "" }, + /*630*/ { "[4318]1", 0, "43181" }, + /*631*/ { "[4318]12345678901234567890", 0, "431812345678901234567890" }, + /*632*/ { "[4318]123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*633*/ { "[4319]1", 0, "43191" }, + /*634*/ { "[4319]123456789012345678901234567890", 0, "4319123456789012345678901234567890" }, + /*635*/ { "[4319]1234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*636*/ { "[432]1", ZINT_ERROR_INVALID_DATA, "" }, + /*637*/ { "[4320]1", 0, "43201" }, + /*638*/ { "[4320]12345678901234567890123456789012345", 0, "432012345678901234567890123456789012345" }, + /*639*/ { "[4320]123456789012345678901234567890123456", ZINT_ERROR_INVALID_DATA, "" }, + /*640*/ { "[4321]1", 0, "43211" }, + /*641*/ { "[4321]10", ZINT_ERROR_INVALID_DATA, "" }, + /*642*/ { "[4322]1", 0, "43221" }, + /*643*/ { "[4322]10", ZINT_ERROR_INVALID_DATA, "" }, + /*644*/ { "[4323]1", 0, "43231" }, + /*645*/ { "[4323]10", ZINT_ERROR_INVALID_DATA, "" }, + /*646*/ { "[4324]1212120000", 0, "43241212120000" }, + /*647*/ { "[4324]121212000", ZINT_ERROR_INVALID_DATA, "" }, + /*648*/ { "[4324]12121200000", ZINT_ERROR_INVALID_DATA, "" }, + /*649*/ { "[4325]1212120000", 0, "43251212120000" }, + /*650*/ { "[4325]121212000", ZINT_ERROR_INVALID_DATA, "" }, + /*651*/ { "[4325]12121200000", ZINT_ERROR_INVALID_DATA, "" }, + /*652*/ { "[4326]121212", 0, "4326121212" }, + /*653*/ { "[4326]12121", ZINT_ERROR_INVALID_DATA, "" }, + /*654*/ { "[4326]1212120", ZINT_ERROR_INVALID_DATA, "" }, + /*655*/ { "[4327]121212", ZINT_ERROR_INVALID_DATA, "" }, + /*656*/ { "[4328]121212", ZINT_ERROR_INVALID_DATA, "" }, + /*657*/ { "[4329]121212", ZINT_ERROR_INVALID_DATA, "" }, + /*658*/ { "[433]121212", ZINT_ERROR_INVALID_DATA, "" }, + /*659*/ { "[4330]121212", ZINT_ERROR_INVALID_DATA, "" }, + /*660*/ { "[44]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*661*/ { "[440]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*662*/ { "[4400]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*663*/ { "[49]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*664*/ { "[490]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*665*/ { "[4900]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*666*/ { "[499]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*667*/ { "[4990]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*668*/ { "[50]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*669*/ { "[500]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*670*/ { "[5000]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*671*/ { "[51]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*672*/ { "[510]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*673*/ { "[5100]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*674*/ { "[59]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*675*/ { "[590]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*676*/ { "[5900]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*677*/ { "[60]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*678*/ { "[600]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*679*/ { "[6000]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*680*/ { "[61]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*681*/ { "[610]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*682*/ { "[6100]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*683*/ { "[69]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*684*/ { "[690]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*685*/ { "[6900]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*686*/ { "[70]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*687*/ { "[700]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*688*/ { "[7000]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*689*/ { "[7001]1234567890123", 0, "70011234567890123" }, + /*690*/ { "[7001]123456789012", ZINT_ERROR_INVALID_DATA, "" }, + /*691*/ { "[7002]abcdefghijklmnopqrstuvwxyz1234", 0, "7002abcdefghijklmnopqrstuvwxyz1234" }, + /*692*/ { "[7002]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, + /*693*/ { "[7003]1212121212", 0, "70031212121212" }, + /*694*/ { "[7003]121212121", ZINT_ERROR_INVALID_DATA, "" }, + /*695*/ { "[7004]1234", 0, "70041234" }, + /*696*/ { "[7004]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*697*/ { "[7005]abcdefghijkl", 0, "7005abcdefghijkl" }, + /*698*/ { "[7005]abcdefghijklm", ZINT_ERROR_INVALID_DATA, "" }, + /*699*/ { "[7006]200132", ZINT_WARN_NONCOMPLIANT, "7006200132" }, + /*700*/ { "[7006]200100", ZINT_WARN_NONCOMPLIANT, "7006200100" }, + /*701*/ { "[7006]200120", 0, "7006200120" }, + /*702*/ { "[7006]2001320", ZINT_ERROR_INVALID_DATA, "" }, + /*703*/ { "[7007]010101121212", 0, "7007010101121212" }, + /*704*/ { "[7007]01010112121", ZINT_ERROR_INVALID_DATA, "" }, + /*705*/ { "[7007]A1010112121", ZINT_ERROR_INVALID_DATA, "" }, + /*706*/ { "[7007]121212", 0, "7007121212" }, + /*707*/ { "[7007]12121", ZINT_ERROR_INVALID_DATA, "" }, + /*708*/ { "[7007]1212121", ZINT_ERROR_INVALID_DATA, "" }, + /*709*/ { "[7008]abc", 0, "7008abc" }, + /*710*/ { "[7008]abcd", ZINT_ERROR_INVALID_DATA, "" }, + /*711*/ { "[7009]abcdefghij", 0, "7009abcdefghij" }, + /*712*/ { "[7009]abcdefghijk", ZINT_ERROR_INVALID_DATA, "" }, + /*713*/ { "[7010]01", 0, "701001" }, + /*714*/ { "[7010]1", 0, "70101" }, + /*715*/ { "[7010]012", ZINT_ERROR_INVALID_DATA, "" }, + /*716*/ { "[7011]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*717*/ { "[7012]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*718*/ { "[7019]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*719*/ { "[7020]abcdefghijklmnopqrst", 0, "7020abcdefghijklmnopqrst" }, + /*720*/ { "[7020]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, + /*721*/ { "[7021]abcdefghijklmnopqrst", 0, "7021abcdefghijklmnopqrst" }, + /*722*/ { "[7021]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, + /*723*/ { "[7022]abcdefghijklmnopqrst", 0, "7022abcdefghijklmnopqrst" }, + /*724*/ { "[7022]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, + /*725*/ { "[7023]1234abcdefghijklmnopqrstuvwxyz", 0, "70231234abcdefghijklmnopqrstuvwxyz" }, + /*726*/ { "[7023]1234abcdefghijklmnopqrstuvwxyza", ZINT_ERROR_INVALID_DATA, "" }, + /*727*/ { "[7024]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*728*/ { "[7025]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*729*/ { "[7029]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*730*/ { "[7030]123abcdefghijklmnopqrstuvwxyza", ZINT_WARN_NONCOMPLIANT, "7030123abcdefghijklmnopqrstuvwxyza" }, + /*731*/ { "[7030]004abcdefghijklmnopqrstuvwxyza", 0, "7030004abcdefghijklmnopqrstuvwxyza" }, + /*732*/ { "[7030]123abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, + /*733*/ { "[7031]123abcdefghijklmnopqrstuvwxyza", ZINT_WARN_NONCOMPLIANT, "7031123abcdefghijklmnopqrstuvwxyza" }, + /*734*/ { "[7031]004abcdefghijklmnopqrstuvwxyza", 0, "7031004abcdefghijklmnopqrstuvwxyza" }, + /*735*/ { "[7031]123abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, + /*736*/ { "[7032]004abcdefghijklmnopqrstuvwxyza", 0, "7032004abcdefghijklmnopqrstuvwxyza" }, + /*737*/ { "[7032]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, + /*738*/ { "[7033]004abcdefghijklmnopqrstuvwxyza", 0, "7033004abcdefghijklmnopqrstuvwxyza" }, + /*739*/ { "[7033]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, + /*740*/ { "[7034]004abcdefghijklmnopqrstuvwxyza", 0, "7034004abcdefghijklmnopqrstuvwxyza" }, + /*741*/ { "[7034]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, + /*742*/ { "[7035]004abcdefghijklmnopqrstuvwxyza", 0, "7035004abcdefghijklmnopqrstuvwxyza" }, + /*743*/ { "[7035]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, + /*744*/ { "[7036]004abcdefghijklmnopqrstuvwxyza", 0, "7036004abcdefghijklmnopqrstuvwxyza" }, + /*745*/ { "[7036]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, + /*746*/ { "[7037]004abcdefghijklmnopqrstuvwxyza", 0, "7037004abcdefghijklmnopqrstuvwxyza" }, + /*747*/ { "[7037]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, + /*748*/ { "[7038]004abcdefghijklmnopqrstuvwxyza", 0, "7038004abcdefghijklmnopqrstuvwxyza" }, + /*749*/ { "[7038]004abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, + /*750*/ { "[7039]004abcdefghijklmnopqrstuvwxyza", 0, "7039004abcdefghijklmnopqrstuvwxyza" }, + /*751*/ { "[7039]123abcdefghijklmnopqrstuvwxyzab", ZINT_ERROR_INVALID_DATA, "" }, + /*752*/ { "[7040]1abc", 0, "70401abc" }, + /*753*/ { "[7040]1ab", ZINT_ERROR_INVALID_DATA, "" }, + /*754*/ { "[7040]1abcd", ZINT_ERROR_INVALID_DATA, "" }, + /*755*/ { "[7041]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*756*/ { "[7042]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*757*/ { "[7050]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*758*/ { "[7090]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*759*/ { "[7099]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*760*/ { "[71]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*761*/ { "[710]abcdefghijklmnopqrst", 0, "710abcdefghijklmnopqrst" }, + /*762*/ { "[710]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, + /*763*/ { "[7100]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*764*/ { "[711]abcdefghijklmnopqrst", 0, "711abcdefghijklmnopqrst" }, + /*765*/ { "[711]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, + /*766*/ { "[712]abcdefghijklmnopqrst", 0, "712abcdefghijklmnopqrst" }, + /*767*/ { "[712]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, + /*768*/ { "[713]abcdefghijklmnopqrst", 0, "713abcdefghijklmnopqrst" }, + /*769*/ { "[713]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, + /*770*/ { "[714]abcdefghijklmnopqrst", 0, "714abcdefghijklmnopqrst" }, + /*771*/ { "[714]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, + /*772*/ { "[715]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*773*/ { "[716]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*774*/ { "[719]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*775*/ { "[72]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*776*/ { "[720]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*777*/ { "[7200]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*778*/ { "[721]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*779*/ { "[7210]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*780*/ { "[7220]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*781*/ { "[7230]EMabcdefghijklmnopqrstuvwxyzab", 0, "7230EMabcdefghijklmnopqrstuvwxyzab" }, + /*782*/ { "[7230]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, + /*783*/ { "[7230]EM", ZINT_ERROR_INVALID_DATA, "" }, + /*784*/ { "[7231]EMabcdefghijklmnopqrstuvwxyzab", 0, "7231EMabcdefghijklmnopqrstuvwxyzab" }, + /*785*/ { "[7231]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, + /*786*/ { "[7232]EMabcdefghijklmnopqrstuvwxyzab", 0, "7232EMabcdefghijklmnopqrstuvwxyzab" }, + /*787*/ { "[7232]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, + /*788*/ { "[7233]EMabcdefghijklmnopqrstuvwxyzab", 0, "7233EMabcdefghijklmnopqrstuvwxyzab" }, + /*789*/ { "[7233]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, + /*790*/ { "[7234]EMabcdefghijklmnopqrstuvwxyzab", 0, "7234EMabcdefghijklmnopqrstuvwxyzab" }, + /*791*/ { "[7234]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, + /*792*/ { "[7235]EMabcdefghijklmnopqrstuvwxyzab", 0, "7235EMabcdefghijklmnopqrstuvwxyzab" }, + /*793*/ { "[7235]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, + /*794*/ { "[7236]EMabcdefghijklmnopqrstuvwxyzab", 0, "7236EMabcdefghijklmnopqrstuvwxyzab" }, + /*795*/ { "[7236]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, + /*796*/ { "[7237]EMabcdefghijklmnopqrstuvwxyzab", 0, "7237EMabcdefghijklmnopqrstuvwxyzab" }, + /*797*/ { "[7237]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, + /*798*/ { "[7238]EMabcdefghijklmnopqrstuvwxyzab", 0, "7238EMabcdefghijklmnopqrstuvwxyzab" }, + /*799*/ { "[7238]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, + /*800*/ { "[7239]EMabcdefghijklmnopqrstuvwxyzab", 0, "7239EMabcdefghijklmnopqrstuvwxyzab" }, + /*801*/ { "[7239]EMabcdefghijklmnopqrstuvwxyzabc", ZINT_ERROR_INVALID_DATA, "" }, + /*802*/ { "[7239]E", ZINT_ERROR_INVALID_DATA, "" }, + /*803*/ { "[7240]abcdefghijklmnopqrst", 0, "7240abcdefghijklmnopqrst" }, + /*804*/ { "[7240]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, + /*805*/ { "[7241]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*806*/ { "[7249]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*807*/ { "[7250]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*808*/ { "[7299]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*809*/ { "[73]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*810*/ { "[7300]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*811*/ { "[74]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*812*/ { "[7400]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*813*/ { "[79]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*814*/ { "[7900]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*815*/ { "[7999]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*816*/ { "[80]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*817*/ { "[800]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*818*/ { "[8000]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*819*/ { "[8001]12345678901234", ZINT_WARN_NONCOMPLIANT, "800112345678901234" }, + /*820*/ { "[8001]12345678901204", 0, "800112345678901204" }, + /*821*/ { "[8001]1234123456789012345", ZINT_ERROR_INVALID_DATA, "" }, + /*822*/ { "[8002]abcdefghijklmnopqrst", 0, "8002abcdefghijklmnopqrst" }, + /*823*/ { "[8002]abcdefghijklmnopqrstu", ZINT_ERROR_INVALID_DATA, "" }, + /*824*/ { "[8003]01234567890123abcdefghijklmnop", ZINT_WARN_NONCOMPLIANT, "800301234567890123abcdefghijklmnop" }, + /*825*/ { "[8003]01234567890128abcdefghijklmnop", 0, "800301234567890128abcdefghijklmnop" }, + /*826*/ { "[8003]01234567890128abcdefghijklmnopq", ZINT_ERROR_INVALID_DATA, "" }, + /*827*/ { "[8004]abcdefghijklmnopqrstuvwxyz1234", ZINT_WARN_NONCOMPLIANT, "8004abcdefghijklmnopqrstuvwxyz1234" }, + /*828*/ { "[8004]12cdefghijklmnopqrstuvwxyz1234", 0, "800412cdefghijklmnopqrstuvwxyz1234" }, + /*829*/ { "[8004]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, + /*830*/ { "[8005]123456", 0, "8005123456" }, + /*831*/ { "[8005]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*832*/ { "[8005]1234567", ZINT_ERROR_INVALID_DATA, "" }, + /*833*/ { "[8006]123456789012341212", ZINT_WARN_NONCOMPLIANT, "8006123456789012341212" }, + /*834*/ { "[8006]123456789012311212", 0, "8006123456789012311212" }, + /*835*/ { "[8006]12345678901234121", ZINT_ERROR_INVALID_DATA, "" }, + /*836*/ { "[8006]1234567890123412123", ZINT_ERROR_INVALID_DATA, "" }, + /*837*/ { "[8007]abcdefghijklmnopqrstuvwxyz12345678", ZINT_WARN_NONCOMPLIANT, "8007abcdefghijklmnopqrstuvwxyz12345678" }, + /*838*/ { "[8007]AD95EFGHIJKLMNOPQRSTUVWXYZ12345678", 0, "8007AD95EFGHIJKLMNOPQRSTUVWXYZ12345678" }, + /*839*/ { "[8007]AD95EFGHIJKLMNOPQRSTUVWXYZ123456789", ZINT_ERROR_INVALID_DATA, "" }, + /*840*/ { "[8008]123456121212", ZINT_WARN_NONCOMPLIANT, "8008123456121212" }, + /*841*/ { "[8008]121256121212", ZINT_WARN_NONCOMPLIANT, "8008121256121212" }, + /*842*/ { "[8008]121231121212", 0, "8008121231121212" }, + /*843*/ { "[8008]1234561212", ZINT_WARN_NONCOMPLIANT, "80081234561212" }, + /*844*/ { "[8008]1212311212", 0, "80081212311212" }, + /*845*/ { "[8008]12345612", ZINT_WARN_NONCOMPLIANT, "800812345612" }, + /*846*/ { "[8008]12010112", 0, "800812010112" }, + /*847*/ { "[8008]1234561", ZINT_ERROR_INVALID_DATA, "" }, + /*848*/ { "[8008]123456121", ZINT_ERROR_INVALID_DATA, "" }, + /*849*/ { "[8008]12345612121", ZINT_ERROR_INVALID_DATA, "" }, + /*850*/ { "[8008]1234561212123", ZINT_ERROR_INVALID_DATA, "" }, + /*851*/ { "[8009]12345678901234567890123456789012345678901234567890", 0, "800912345678901234567890123456789012345678901234567890" }, + /*852*/ { "[8009]123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*853*/ { "[8010]1234abcdefghijklmnopqrstuvwxyz1", ZINT_ERROR_INVALID_DATA, "" }, + /*854*/ { "[8011]123456789012", 0, "8011123456789012" }, + /*855*/ { "[8011]1234567890123", ZINT_ERROR_INVALID_DATA, "" }, + /*856*/ { "[8012]abcdefghijklmnopqrst", 0, "8012abcdefghijklmnopqrst" }, + /*857*/ { "[8012]abcdefghijklmnopqrstuv", ZINT_ERROR_INVALID_DATA, "" }, + /*858*/ { "[8013]1234abcdefghijklmnopqrsQP", 0, "80131234abcdefghijklmnopqrsQP" }, + /*859*/ { "[8013]1234abcdefghijklmnopqrsQP", 0, "80131234abcdefghijklmnopqrsQP" }, + /*860*/ { "[8013]1234abcdefghijklmnopqrsQPv", ZINT_ERROR_INVALID_DATA, "" }, + /*861*/ { "[8014]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*862*/ { "[8016]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*863*/ { "[8017]313131313131313139", ZINT_WARN_NONCOMPLIANT, "8017313131313131313139" }, + /*864*/ { "[8017]313131313131313131", 0, "8017313131313131313131" }, + /*865*/ { "[8017]31313131313131313", ZINT_ERROR_INVALID_DATA, "" }, + /*866*/ { "[8017]3131313131313131390", ZINT_ERROR_INVALID_DATA, "" }, + /*867*/ { "[8018]313131313131313139", ZINT_WARN_NONCOMPLIANT, "8018313131313131313139" }, + /*868*/ { "[8018]313131313131313131", 0, "8018313131313131313131" }, + /*869*/ { "[8018]31313131313131313", ZINT_ERROR_INVALID_DATA, "" }, + /*870*/ { "[8018]3131313131313131390", ZINT_ERROR_INVALID_DATA, "" }, + /*871*/ { "[8019]1234567890", 0, "80191234567890" }, + /*872*/ { "[8019]12345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*873*/ { "[8020]abcdefghijklmnopqrstuvwxy", 0, "8020abcdefghijklmnopqrstuvwxy" }, + /*874*/ { "[8020]abcdefghijklmnopqrstuvwxyz", ZINT_ERROR_INVALID_DATA, "" }, + /*875*/ { "[8021]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*876*/ { "[8025]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*877*/ { "[8026]123456789012341212", ZINT_WARN_NONCOMPLIANT, "8026123456789012341212" }, + /*878*/ { "[8026]123456789012311212", 0, "8026123456789012311212" }, + /*879*/ { "[8026]1234567890123451212", ZINT_ERROR_INVALID_DATA, "" }, + /*880*/ { "[8026]12345678901234512", ZINT_ERROR_INVALID_DATA, "" }, + /*881*/ { "[8027]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*882*/ { "[8030]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*883*/ { "[8040]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*884*/ { "[8050]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*885*/ { "[8060]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*886*/ { "[8070]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*887*/ { "[8080]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*888*/ { "[8090]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*889*/ { "[8099]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*890*/ { "[81]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*891*/ { "[8100]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*892*/ { "[8109]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*893*/ { "[8110]5123456789011234565123455123450123105123450123512345678901320123190000", 0, "81105123456789011234565123455123450123105123450123512345678901320123190000" }, + /*894*/ { "[8110]51234567890112345651234551234501231051234501235123456789013201231900001", ZINT_ERROR_INVALID_DATA, "" }, + /*895*/ { "[8111]1234", 0, "81111234" }, + /*896*/ { "[8111]12345", ZINT_ERROR_INVALID_DATA, "" }, + /*897*/ { "[8111]123", ZINT_ERROR_INVALID_DATA, "" }, + /*898*/ { "[8112]1234567890123456789012345678901234567890123456789012345678901234567890", ZINT_WARN_NONCOMPLIANT, "81121234567890123456789012345678901234567890123456789012345678901234567890" }, + /*899*/ { "[8112]12345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*900*/ { "[8112]061234567890121234569123456789012345", 0, "8112061234567890121234569123456789012345" }, + /*901*/ { "[8113]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*902*/ { "[8120]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*903*/ { "[8130]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*904*/ { "[8140]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*905*/ { "[8150]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*906*/ { "[8190]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*907*/ { "[8199]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*908*/ { "[82]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*909*/ { "[8200]1234567890123456789012345678901234567890123456789012345678901234567890", 0, "82001234567890123456789012345678901234567890123456789012345678901234567890" }, + /*910*/ { "[8201]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*911*/ { "[8210]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*912*/ { "[8220]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*913*/ { "[8230]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*914*/ { "[8240]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*915*/ { "[8250]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*916*/ { "[8290]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*917*/ { "[8299]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*918*/ { "[83]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*919*/ { "[830]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*920*/ { "[8300]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*921*/ { "[84]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*922*/ { "[840]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*923*/ { "[8400]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*924*/ { "[85]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*925*/ { "[850]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*926*/ { "[8500]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*927*/ { "[89]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*928*/ { "[890]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*929*/ { "[8900]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*930*/ { "[90]abcdefghijklmnopqrstuvwxyz1234", 0, "90abcdefghijklmnopqrstuvwxyz1234" }, + /*931*/ { "[90]abcdefghijklmnopqrstuvwxyz12345", ZINT_ERROR_INVALID_DATA, "" }, + /*932*/ { "[900]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*933*/ { "[9000]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*934*/ { "[91]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "91123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, + /*935*/ { "[91]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*936*/ { "[910]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*937*/ { "[9100]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*938*/ { "[92]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "92123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, + /*939*/ { "[92]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*940*/ { "[920]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*941*/ { "[9200]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*942*/ { "[93]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "93123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, + /*943*/ { "[93]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*944*/ { "[930]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*945*/ { "[9300]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*946*/ { "[94]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "94123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, + /*947*/ { "[94]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*948*/ { "[940]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*949*/ { "[9400]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*950*/ { "[95]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "95123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, + /*951*/ { "[95]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*952*/ { "[950]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*953*/ { "[9500]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*954*/ { "[96]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "96123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, + /*955*/ { "[96]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*956*/ { "[960]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*957*/ { "[9600]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*958*/ { "[97]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "97123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, + /*959*/ { "[97]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*960*/ { "[970]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*961*/ { "[9700]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*962*/ { "[98]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "98123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, + /*963*/ { "[98]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*964*/ { "[980]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*965*/ { "[9800]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*966*/ { "[99]123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, "99123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" }, + /*967*/ { "[99]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", ZINT_ERROR_INVALID_DATA, "" }, + /*968*/ { "[990]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*969*/ { "[9900]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*970*/ { "[9999]1234", ZINT_ERROR_INVALID_DATA, "" }, + /*971*/ { "[01]12345678901234[7006]200101", ZINT_WARN_NONCOMPLIANT, "01123456789012347006200101" }, + /*972*/ { "[01]12345678901231[7006]200101", 0, "01123456789012317006200101" }, + /*973*/ { "[3900]1234567890[01]12345678901234", ZINT_WARN_NONCOMPLIANT, "39001234567890[0112345678901234" }, + /*974*/ { "[3900]1234567890[01]12345678901231", 0, "39001234567890[0112345678901231" }, + /*975*/ { "[253]12345678901234[3901]12345678901234[20]12", ZINT_WARN_NONCOMPLIANT, "25312345678901234[390112345678901234[2012" }, + /*976*/ { "[253]12345678901284[3901]12345678901234[20]12", 0, "25312345678901284[390112345678901234[2012" }, + /*977*/ { "[253]12345678901234[01]12345678901234[3901]12345678901234[20]12", ZINT_WARN_NONCOMPLIANT, "25312345678901234[0112345678901234390112345678901234[2012" }, + /*978*/ { "[253]12345678901284[01]12345678901231[3901]12345678901234[20]12", 0, "25312345678901284[0112345678901231390112345678901234[2012" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -1392,354 +1394,360 @@ static void test_gs1_lint(int index, int debug) { /* 15*/ { "[8010]6789ABCDEFGHIJKLMNOPQRSTUVWXY}", ZINT_WARN_NONCOMPLIANT, "80106789ABCDEFGHIJKLMNOPQRSTUVWXY}", "261: AI (8010) position 30: Invalid CSET 39 character '}'" }, // cset39 /* 16*/ { "[8010]#-/0123456789ABCDEFGHIJKLMNOPQ", ZINT_WARN_NONCOMPLIANT, "8010#-/0123456789ABCDEFGHIJKLMNOPQ", "261: AI (8010) position 1: Non-numeric company prefix '#'" }, // key /* 17*/ { "[8010]0#-/123456789ABCDEFGHIJKLMNOPQ", ZINT_WARN_NONCOMPLIANT, "80100#-/123456789ABCDEFGHIJKLMNOPQ", "261: AI (8010) position 2: Non-numeric company prefix '#'" }, // key - /* 18*/ { "[8013]1987654Ad4X4bL5ttr2310c2K", 0, "80131987654Ad4X4bL5ttr2310c2K", "" }, // csumalpha - /* 19*/ { "[8013]12345678901234567890123NT", 0, "801312345678901234567890123NT", "" }, // csumalpha - /* 20*/ { "[8013]12345_ABCDEFGHIJKLMCP", 0, "801312345_ABCDEFGHIJKLMCP", "" }, // csumalpha - /* 21*/ { "[8013]12345_NOPQRSTUVWXYZDN", 0, "801312345_NOPQRSTUVWXYZDN", "" }, // csumalpha - /* 22*/ { "[8013]12345_abcdefghijklmN3", 0, "801312345_abcdefghijklmN3", "" }, // csumalpha - /* 23*/ { "[8013]12345_nopqrstuvwxyzP2", 0, "801312345_nopqrstuvwxyzP2", "" }, // csumalpha - /* 24*/ { "[8013]12345_!\"%&'()*+,-./LC", 0, "801312345_!\"%&'()*+,-./LC", "" }, // csumalpha - /* 25*/ { "[8013]12345_0123456789:;<=>?62", 0, "801312345_0123456789:;<=>?62", "" }, // csumalpha - /* 26*/ { "[8013]7907665Bm8v2AB", 0, "80137907665Bm8v2AB", "" }, // csumalpha - /* 27*/ { "[8013]97850l6KZm0yCD", 0, "801397850l6KZm0yCD", "" }, // csumalpha - /* 28*/ { "[8013]225803106GSpEF", 0, "8013225803106GSpEF", "" }, // csumalpha - /* 29*/ { "[8013]149512464PM+GH", 0, "8013149512464PM+GH", "" }, // csumalpha - /* 30*/ { "[8013]62577B8fRG7HJK", 0, "801362577B8fRG7HJK", "" }, // csumalpha - /* 31*/ { "[8013]515942070CYxLM", 0, "8013515942070CYxLM", "" }, // csumalpha - /* 32*/ { "[8013]390800494sP6NP", 0, "8013390800494sP6NP", "" }, // csumalpha - /* 33*/ { "[8013]386830132uO+QR", 0, "8013386830132uO+QR", "" }, // csumalpha - /* 34*/ { "[8013]53395376X1:nST", 0, "801353395376X1:nST", "" }, // csumalpha - /* 35*/ { "[8013]957813138Sb6UV", 0, "8013957813138Sb6UV", "" }, // csumalpha - /* 36*/ { "[8013]530790no0qOgWX", 0, "8013530790no0qOgWX", "" }, // csumalpha - /* 37*/ { "[8013]62185314IvwmYZ", 0, "801362185314IvwmYZ", "" }, // csumalpha - /* 38*/ { "[8013]23956qk1&dB!23", 0, "801323956qk1&dB!23", "" }, // csumalpha - /* 39*/ { "[8013]794394895ic045", 0, "8013794394895ic045", "" }, // csumalpha - /* 40*/ { "[8013]57453Uq3qA?62", 0, "801312345_0123456789:;<=>?62", "" }, // csumalpha + /* 27*/ { "[8013]7907665Bm8v2AB", 0, "80137907665Bm8v2AB", "" }, // csumalpha + /* 28*/ { "[8013]97850l6KZm0yCD", 0, "801397850l6KZm0yCD", "" }, // csumalpha + /* 29*/ { "[8013]225803106GSpEF", 0, "8013225803106GSpEF", "" }, // csumalpha + /* 30*/ { "[8013]149512464PM+GH", 0, "8013149512464PM+GH", "" }, // csumalpha + /* 31*/ { "[8013]62577B8fRG7HJK", 0, "801362577B8fRG7HJK", "" }, // csumalpha + /* 32*/ { "[8013]515942070CYxLM", 0, "8013515942070CYxLM", "" }, // csumalpha + /* 33*/ { "[8013]390800494sP6NP", 0, "8013390800494sP6NP", "" }, // csumalpha + /* 34*/ { "[8013]386830132uO+QR", 0, "8013386830132uO+QR", "" }, // csumalpha + /* 35*/ { "[8013]53395376X1:nST", 0, "801353395376X1:nST", "" }, // csumalpha + /* 36*/ { "[8013]957813138Sb6UV", 0, "8013957813138Sb6UV", "" }, // csumalpha + /* 37*/ { "[8013]530790no0qOgWX", 0, "8013530790no0qOgWX", "" }, // csumalpha + /* 38*/ { "[8013]62185314IvwmYZ", 0, "801362185314IvwmYZ", "" }, // csumalpha + /* 39*/ { "[8013]23956qk1&dB!23", 0, "801323956qk1&dB!23", "" }, // csumalpha + /* 40*/ { "[8013]794394895ic045", 0, "8013794394895ic045", "" }, // csumalpha + /* 41*/ { "[8013]57453Uq3qAwarn_level = data[i].warn_level; + } ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); assert_equal(ret, data[i].ret_encode, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret_encode, symbol->errtxt); @@ -176,6 +188,8 @@ static void test_input(int index, int generate, int debug) { int symbology; int input_mode; int eci; + int option_1; + int option_2; char *data; int ret; int expected_eci; @@ -187,33 +201,43 @@ static void test_input(int index, int generate, int debug) { // é U+00E9 (\351, 233), UTF-8 C3A9 // β U+03B2 in ISO 8859-7 Greek (but not other ISO 8859 or Win page) (\342, 226), UTF-8 CEB2 struct item data[] = { - /* 0*/ { BARCODE_PDF417, UNICODE_MODE, -1, "é", 0, 0, 6, 103, "(12) 4 913 233 900 398 878 279 350 217 295 231 77", "" }, - /* 1*/ { BARCODE_PDF417, UNICODE_MODE, 3, "é", 0, 3, 7, 103, "(14) 6 927 3 913 233 900 162 81 551 529 607 384 164 108", "" }, - /* 2*/ { BARCODE_PDF417, UNICODE_MODE, 26, "é", 0, 26, 7, 103, "(14) 6 927 26 901 195 169 574 701 519 908 84 241 360 642", "" }, - /* 3*/ { BARCODE_PDF417, UNICODE_MODE, 9, "β", 0, 9, 7, 103, "(14) 6 927 9 913 226 900 487 92 418 278 838 500 576 84", "" }, - /* 4*/ { BARCODE_PDF417, UNICODE_MODE, -1, "β", ZINT_WARN_USES_ECI, 9, 7, 103, "Warning (14) 6 927 9 913 226 900 487 92 418 278 838 500 576 84", "" }, - /* 5*/ { BARCODE_PDF417, UNICODE_MODE, 3, "β", ZINT_ERROR_INVALID_DATA, 3, 0, 0, "Error 244: Invalid character in input data for ECI 3", "" }, - /* 6*/ { BARCODE_PDF417, UNICODE_MODE, 899, "A", 0, 899, 7, 103, "(14) 6 927 899 900 29 900 727 69 915 482 371 771 641 35", "" }, - /* 7*/ { BARCODE_PDF417, UNICODE_MODE, 900, "A", 0, 900, 7, 103, "(14) 6 926 0 0 900 29 56 795 921 763 468 267 410 129", "" }, - /* 8*/ { BARCODE_PDF417, UNICODE_MODE, 810899, "A", 0, 810899, 7, 103, "(14) 6 926 899 899 900 29 847 901 749 718 89 792 660 273", "" }, - /* 9*/ { BARCODE_PDF417, UNICODE_MODE, 810900, "A", 0, 810900, 7, 103, "(14) 6 925 0 900 29 900 652 613 857 390 38 450 415 899", "" }, - /* 10*/ { BARCODE_PDF417, UNICODE_MODE, 811799, "A", 0, 811799, 7, 103, "(14) 6 925 899 900 29 900 456 300 328 160 510 753 157 159", "" }, - /* 11*/ { BARCODE_PDF417, UNICODE_MODE, 811800, "A", ZINT_ERROR_INVALID_OPTION, 811800, 0, 0, "Error 472: Invalid ECI", "" }, - /* 12*/ { BARCODE_MICROPDF417, UNICODE_MODE, -1, "é", 0, 0, 11, 38, "(11) 913 233 900 900 805 609 847 211 598 4 603", "" }, - /* 13*/ { BARCODE_MICROPDF417, UNICODE_MODE, 3, "é", 0, 3, 11, 38, "(11) 927 3 913 233 803 477 85 249 824 813 830", "" }, - /* 14*/ { BARCODE_MICROPDF417, UNICODE_MODE, 26, "é", 0, 26, 6, 82, "(18) 927 26 901 195 169 900 288 96 509 365 709 784 713 403 219 81 851 866", "" }, - /* 15*/ { BARCODE_MICROPDF417, UNICODE_MODE, 9, "β", 0, 9, 11, 38, "(11) 927 9 913 226 23 103 74 194 394 667 324", "" }, - /* 16*/ { BARCODE_MICROPDF417, UNICODE_MODE, -1, "β", ZINT_WARN_USES_ECI, 9, 11, 38, "Warning (11) 927 9 913 226 23 103 74 194 394 667 324", "" }, - /* 17*/ { BARCODE_MICROPDF417, UNICODE_MODE, 3, "β", ZINT_ERROR_INVALID_DATA, 3, 0, 0, "Error 244: Invalid character in input data for ECI 3", "" }, - /* 18*/ { BARCODE_MICROPDF417, UNICODE_MODE, 899, "A", 0, 899, 11, 38, "(11) 927 899 900 29 533 437 884 3 617 241 747", "" }, - /* 19*/ { BARCODE_MICROPDF417, UNICODE_MODE, 900, "A", 0, 900, 6, 82, "(18) 926 0 0 900 29 900 913 543 414 141 214 886 461 1 419 422 54 495", "" }, - /* 20*/ { BARCODE_MICROPDF417, UNICODE_MODE, 810899, "A", 0, 810899, 6, 82, "(18) 926 899 899 900 29 900 351 555 241 509 787 583 3 326 41 628 534 151", "" }, - /* 21*/ { BARCODE_MICROPDF417, UNICODE_MODE, 810900, "A", 0, 810900, 11, 38, "(11) 925 0 900 29 233 533 43 483 708 659 704", "" }, - /* 22*/ { BARCODE_MICROPDF417, UNICODE_MODE, 811800, "A", ZINT_ERROR_INVALID_OPTION, 811800, 0, 0, "Error 473: Invalid ECI", "" }, - /* 23*/ { BARCODE_HIBC_PDF, UNICODE_MODE, -1, ",", ZINT_ERROR_INVALID_DATA, 0, 0, 0, "Error 203: Invalid character in data (alphanumerics, space and \"-.$/+%\" only)", "" }, - /* 24*/ { BARCODE_HIBC_MICPDF, UNICODE_MODE, -1, ",", ZINT_ERROR_INVALID_DATA, 0, 0, 0, "Error 203: Invalid character in data (alphanumerics, space and \"-.$/+%\" only)", "" }, - /* 25*/ { BARCODE_PDF417, UNICODE_MODE, -1, "AB{} C#+ de{} {}F 12{} G{} H", 0, 0, 12, 120, "(36) 28 1 865 807 896 782 855 626 807 94 865 807 896 808 776 839 176 808 32 776 839 806 208", "" }, - /* 26*/ { BARCODE_PDF417, UNICODE_MODE, -1, "{} #+ de{} 12{} {} H", 0, 0, 10, 120, "(30) 22 865 807 896 808 470 807 94 865 807 896 808 32 776 839 806 865 807 896 787 900 900", "" }, + /* 0*/ { BARCODE_PDF417, UNICODE_MODE, -1, -1, -1, "é", 0, 0, 6, 103, "(12) 4 913 233 900 398 878 279 350 217 295 231 77", "" }, + /* 1*/ { BARCODE_PDF417, UNICODE_MODE, 3, -1, -1, "é", 0, 3, 7, 103, "(14) 6 927 3 913 233 900 162 81 551 529 607 384 164 108", "" }, + /* 2*/ { BARCODE_PDF417, UNICODE_MODE, 26, -1, -1, "é", 0, 26, 7, 103, "(14) 6 927 26 901 195 169 574 701 519 908 84 241 360 642", "" }, + /* 3*/ { BARCODE_PDF417, UNICODE_MODE, 9, -1, -1, "β", 0, 9, 7, 103, "(14) 6 927 9 913 226 900 487 92 418 278 838 500 576 84", "" }, + /* 4*/ { BARCODE_PDF417, UNICODE_MODE, -1, -1, -1, "β", ZINT_WARN_USES_ECI, 9, 7, 103, "Warning (14) 6 927 9 913 226 900 487 92 418 278 838 500 576 84", "" }, + /* 5*/ { BARCODE_PDF417, UNICODE_MODE, 3, -1, -1, "β", ZINT_ERROR_INVALID_DATA, 3, 0, 0, "Error 244: Invalid character in input data for ECI 3", "" }, + /* 6*/ { BARCODE_PDF417, UNICODE_MODE, 899, -1, -1, "A", 0, 899, 7, 103, "(14) 6 927 899 900 29 900 727 69 915 482 371 771 641 35", "" }, + /* 7*/ { BARCODE_PDF417, UNICODE_MODE, 900, -1, -1, "A", 0, 900, 7, 103, "(14) 6 926 0 0 900 29 56 795 921 763 468 267 410 129", "" }, + /* 8*/ { BARCODE_PDF417, UNICODE_MODE, 810899, -1, -1, "A", 0, 810899, 7, 103, "(14) 6 926 899 899 900 29 847 901 749 718 89 792 660 273", "" }, + /* 9*/ { BARCODE_PDF417, UNICODE_MODE, 810900, -1, -1, "A", 0, 810900, 7, 103, "(14) 6 925 0 900 29 900 652 613 857 390 38 450 415 899", "" }, + /* 10*/ { BARCODE_PDF417, UNICODE_MODE, 811799, -1, -1, "A", 0, 811799, 7, 103, "(14) 6 925 899 900 29 900 456 300 328 160 510 753 157 159", "" }, + /* 11*/ { BARCODE_PDF417, UNICODE_MODE, 811800, -1, -1, "A", ZINT_ERROR_INVALID_OPTION, 811800, 0, 0, "Error 472: Invalid ECI", "" }, + /* 12*/ { BARCODE_MICROPDF417, UNICODE_MODE, -1, -1, -1, "é", 0, 0, 11, 38, "(11) 913 233 900 900 805 609 847 211 598 4 603", "" }, + /* 13*/ { BARCODE_MICROPDF417, UNICODE_MODE, 3, -1, -1, "é", 0, 3, 11, 38, "(11) 927 3 913 233 803 477 85 249 824 813 830", "" }, + /* 14*/ { BARCODE_MICROPDF417, UNICODE_MODE, 26, -1, -1, "é", 0, 26, 6, 82, "(18) 927 26 901 195 169 900 288 96 509 365 709 784 713 403 219 81 851 866", "" }, + /* 15*/ { BARCODE_MICROPDF417, UNICODE_MODE, 9, -1, -1, "β", 0, 9, 11, 38, "(11) 927 9 913 226 23 103 74 194 394 667 324", "" }, + /* 16*/ { BARCODE_MICROPDF417, UNICODE_MODE, -1, -1, -1, "β", ZINT_WARN_USES_ECI, 9, 11, 38, "Warning (11) 927 9 913 226 23 103 74 194 394 667 324", "" }, + /* 17*/ { BARCODE_MICROPDF417, UNICODE_MODE, 3, -1, -1, "β", ZINT_ERROR_INVALID_DATA, 3, 0, 0, "Error 244: Invalid character in input data for ECI 3", "" }, + /* 18*/ { BARCODE_MICROPDF417, UNICODE_MODE, 899, -1, -1, "A", 0, 899, 11, 38, "(11) 927 899 900 29 533 437 884 3 617 241 747", "" }, + /* 19*/ { BARCODE_MICROPDF417, UNICODE_MODE, 900, -1, -1, "A", 0, 900, 6, 82, "(18) 926 0 0 900 29 900 913 543 414 141 214 886 461 1 419 422 54 495", "" }, + /* 20*/ { BARCODE_MICROPDF417, UNICODE_MODE, 810899, -1, -1, "A", 0, 810899, 6, 82, "(18) 926 899 899 900 29 900 351 555 241 509 787 583 3 326 41 628 534 151", "" }, + /* 21*/ { BARCODE_MICROPDF417, UNICODE_MODE, 810900, -1, -1, "A", 0, 810900, 11, 38, "(11) 925 0 900 29 233 533 43 483 708 659 704", "" }, + /* 22*/ { BARCODE_MICROPDF417, UNICODE_MODE, 811800, -1, -1, "A", ZINT_ERROR_INVALID_OPTION, 811800, 0, 0, "Error 473: Invalid ECI", "" }, + /* 23*/ { BARCODE_HIBC_PDF, UNICODE_MODE, -1, -1, -1, ",", ZINT_ERROR_INVALID_DATA, 0, 0, 0, "Error 203: Invalid character in data (alphanumerics, space and \"-.$/+%\" only)", "" }, + /* 24*/ { BARCODE_HIBC_MICPDF, UNICODE_MODE, -1, -1, -1, ",", ZINT_ERROR_INVALID_DATA, 0, 0, 0, "Error 203: Invalid character in data (alphanumerics, space and \"-.$/+%\" only)", "" }, + /* 25*/ { BARCODE_PDF417, UNICODE_MODE, -1, -1, -1, "AB{} C#+ de{} {}F 12{} G{} H", 0, 0, 12, 120, "(36) 28 1 865 807 896 782 855 626 807 94 865 807 896 808 776 839 176 808 32 776 839 806 208", "" }, + /* 26*/ { BARCODE_PDF417, UNICODE_MODE, -1, -1, -1, "{} #+ de{} 12{} {} H", 0, 0, 10, 120, "(30) 22 865 807 896 808 470 807 94 865 807 896 808 32 776 839 806 865 807 896 787 900 900", "" }, + /* 27*/ { BARCODE_PDF417, UNICODE_MODE, -1, -1, -1, "A", 0, 0, 5, 103, "(10) 2 29 478 509 903 637 74 490 760 21", "" }, + /* 28*/ { BARCODE_PDF417, UNICODE_MODE, -1, 0, -1, "A", 0, 0, 4, 86, "(4) 2 29 347 502", "" }, + /* 29*/ { BARCODE_PDF417, UNICODE_MODE, -1, 1, -1, "A", 0, 0, 6, 86, "(6) 2 29 752 533 551 139", "" }, + /* 30*/ { BARCODE_PDF417, UNICODE_MODE, -1, 2, -1, "A", 0, 0, 5, 103, "(10) 2 29 478 509 903 637 74 490 760 21", "" }, + /* 31*/ { BARCODE_PDF417, UNICODE_MODE, -1, 3, -1, "A", 0, 0, 9, 103, "(18) 2 29 290 888 64 789 390 182 22 197 347 41 298 467 387 917 455 196", "" }, + /* 32*/ { BARCODE_PDF417, UNICODE_MODE, -1, 4, -1, "A", 0, 0, 12, 120, "(36) 4 29 900 900 702 212 753 721 695 584 222 459 110 594 813 465 718 912 667 349 852 602", "" }, + /* 33*/ { BARCODE_PDF417, UNICODE_MODE, -1, 5, -1, "A", 0, 0, 14, 154, "(70) 6 29 900 900 900 900 774 599 527 418 850 374 921 763 922 772 572 661 584 902 578 696", "" }, + /* 34*/ { BARCODE_PDF417, UNICODE_MODE, -1, 6, -1, "A", 0, 0, 19, 188, "(133) 5 29 900 900 900 113 261 822 368 600 652 404 869 860 902 184 702 611 323 195 794 566", "" }, + /* 35*/ { BARCODE_PDF417, UNICODE_MODE, -1, 7, -1, "A", 0, 0, 29, 222, "(261) 5 29 900 900 900 384 614 456 20 422 177 78 492 215 859 765 864 755 572 621 891 97 538", "" }, + /* 36*/ { BARCODE_PDF417, UNICODE_MODE, -1, 8, -1, "A", 0, 0, 40, 290, "(520) 8 29 900 900 900 900 900 900 255 576 871 499 885 500 866 196 784 681 589 448 428 108", "" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -232,14 +256,14 @@ static void test_input(int index, int generate, int debug) { symbol->debug = ZINT_DEBUG_TEST; // Needed to get codeword dump in errtxt - length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, data[i].eci, -1 /*option_1*/, -1, -1, -1 /*output_options*/, data[i].data, -1, debug); + length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, data[i].eci, data[i].option_1, data[i].option_2, -1, -1 /*output_options*/, data[i].data, -1, debug); ret = ZBarcode_Encode(symbol, (unsigned char *) 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 (generate) { - printf(" /*%3d*/ { %s, %s, %d, \"%s\", %s, %d, %d, %d, \"%s\", \"%s\" },\n", - i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), data[i].eci, + printf(" /*%3d*/ { %s, %s, %d, %d, %d, \"%s\", %s, %d, %d, %d, \"%s\", \"%s\" },\n", + i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), data[i].eci, data[i].option_1, data[i].option_2, testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), testUtilErrorName(data[i].ret), symbol->eci, symbol->rows, symbol->width, symbol->errtxt, data[i].comment); } else { @@ -334,14 +358,25 @@ static void test_encode(int index, int generate, int debug) { "11111111010101000111111001011101101010000001001111010010111001111110111111101000101001" "11111111010101000111011010000110001000100111001110011110110100111000111111101000101001" }, - /* 4*/ { BARCODE_PDF417, -1, UNICODE_MODE, 1, 4, "0123456&\015\011,:#-.$/+%*=^ 789", 0, 5, 137, 1, "Text Compaction Mixed", + /* 4*/ { BARCODE_PDF417, -1, UNICODE_MODE, 2, 2, "abcdefgABCDEFG", 0, 9, 103, 1, "Text Compaction Lower Alpha", + "1111111101010100011111010101111100110101000001100001000001010000010011110101011110000111111101000101001" + "1111111101010100011110101000010000111101011100111001110100111001100011110101001000000111111101000101001" + "1111111101010100011101010111111000111110010111101101000001110100110010101000011110000111111101000101001" + "1111111101010100011010111100111110111101010111100001010011100111000010101111001111000111111101000101001" + "1111111101010100011010111000001000111110100010011001101000000111001011110101110011100111111101000101001" + "1111111101010100011110101111010000100111111001110101011111000011010011110101111101100111111101000101001" + "1111111101010100011101001110111110110010000101100001001110111101100011010011101111000111111101000101001" + "1111111101010100011111101001011100111111011010110001011100111111010010101111110111000111111101000101001" + "1111111101010100011010011011111100100011101100011101010111011111100011111010011101000111111101000101001" + }, + /* 5*/ { BARCODE_PDF417, -1, UNICODE_MODE, 1, 4, "0123456&\015\011,:#-.$/+%*=^ 789", 0, 5, 137, 1, "Text Compaction Mixed", "11111111010101000111101010111100001110101100111100010000110111001100110101111001111101010001110111000011101010011100000111111101000101001" "11111111010101000111111010100111001010001111000001011101101111001100110110011110010001110010000011010011111101010111000111111101000101001" "11111111010101000110101001111100001100111010000111011011110010110000100000101011110001101111101010000011101010011111100111111101000101001" "11111111010101000101011110011110001000010000100001010010011000011000110010000100110001000011000110010010101111101111100111111101000101001" "11111111010101000111010111000110001001111001001111010000101111101100100011110010111101001111110110111011101011100110000111111101000101001" }, - /* 5*/ { BARCODE_PDF417, -1, UNICODE_MODE, 3, 2, ";<>@[\\]_'~!\015\011,:\012-.$/\"|*()?{", 0, 16, 103, 1, "Text Compaction Punctuation", + /* 6*/ { BARCODE_PDF417, -1, UNICODE_MODE, 3, 2, ";<>@[\\]_'~!\015\011,:\012-.$/\"|*()?{", 0, 16, 103, 1, "Text Compaction Punctuation", "1111111101010100011111010100111110111010110011110001000111011100100011110101011110000111111101000101001" "1111111101010100011111010100001100111111010101110001101011111101111011110101000100000111111101000101001" "1111111101010100011101010111111000101000001000111101011011001111000011010100001111100111111101000101001" @@ -359,7 +394,50 @@ static void test_encode(int index, int generate, int debug) { "1111111101010100011101000011111010111111010001101001011000010011100010010101111000000111111101000101001" "1111111101010100011001011011100000110011001100001101100100101100000011110010100011110111111101000101001" }, - /* 6*/ { BARCODE_PDF417, -1, UNICODE_MODE, -1, -1, ";;;;;é;;;;;", 0, 7, 120, 0, "BWIPP different encodation", + /* 7*/ { BARCODE_PDF417, -1, UNICODE_MODE, 4, 2, "\015\015\015\015\010\015", 0, 20, 103, 0, "Text Compaction Punctuation 1 Mixed -> Text Byte; BWIPP uses Byte only", + "1111111101010100011010100011000000110101000011000001110001110110110011110101011110000111111101000101001" + "1111111101010100011110101101100000101100101111110001111001000110110011111010100011000111111101000101001" + "1111111101010100011101010111111000110011111101100101010100001111000011010110111111000111111101000101001" + "1111111101010100011110100101111000111010110111100001000011000110010010101111001111000111111101000101001" + "1111111101010100011110101111011110111001011100110001010011110010000011010111000010000111111101000101001" + "1111111101010100011110101111010000110011111001000101011100100110000011010111111010000111111101000101001" + "1111111101010100011010011100011110110010001100011101000100111000111011010011101111000111111101000101001" + "1111111101010100011111010010001100111000110011101001111000100001010011110100101000000111111101000101001" + "1111111101010100011010011011111100110001110010011101000001111010100011111010011100010111111101000101001" + "1111111101010100010100011100111000100001101100000101101000110011100011010001100011100111111101000101001" + "1111111101010100011010011110110000110010000111000101110100110000100011010011100010000111111101000101001" + "1111111101010100010100010001111000100000101101111101000111010000110011111010001110010111111101000101001" + "1111111101010100011101000001011100111100110100111001011110001111001010100001100000110111111101000101001" + "1111111101010100011101000110010000111000001101110101101011110000011011110100010001000111111101000101001" + "1111111101010100011101000011111010101101000111000001101111000001011011001010011111000111111101000101001" + "1111111101010100011100101101111000100001100110010001010011000110000011110010100011110111111101000101001" + "1111111101010100011111010000101100111000001011101101000101111000001010100011110000010111111101000101001" + "1111111101010100010010111011111100111000110101111101101110100011100011001011111101000111111101000101001" + "1111111101010100011101101000011000100000100011001101011001111101111011111011010011110111111101000101001" + "1111111101010100011110100000110110111110111011001001111100001010011010100001111101100111111101000101001" + }, + /* 8*/ { BARCODE_PDF417, -1, UNICODE_MODE, 4, 3, "??????ABCDEFG??????abcdef??????%%%%%%", 0, 19, 120, 1, "Text Compaction Punctuation Alpha Punctuation Lower Punctuation Mixed", + "111111110101010001101010001100000011010111001111000100011101110010001100111000110010011111010101111100111111101000101001" + "111111110101010001111010100000010011111001110011010111110011100110101101111100101111011111010100011000111111101000101001" + "111111110101010001010100111100000011111010111101100101000100000111101111100101111011010101101111100000111111101000101001" + "111111110101010001111010010111100010001110111001000110011100011001001100111000110010011010111100111110111111101000101001" + "111111110101010001110101111011100011111001110011010100111110100011101111110101011100011010111000010000111111101000101001" + "111111110101010001111101011110110010100110011111000101000001000111101000000110100111011101011111000010111111101000101001" + "111111110101010001101001110001111011001110001100100110011100011001001100111000110010011101001110111110111111101000101001" + "111111110101010001111010010001000010001111001011110111100010000010101111000100000101011110100101000000111111101000101001" + "111111110101010001111110100110010010001110110001110100001001011110001001111001101100010100111001111110111111101000101001" + "111111110101010001010001110011100011000110110000110110001011100111101100111001100001010100011000011000111111101000101001" + "111111110101010001010011110100000011011110111111010100000101111000101110110111001000011010011100010000111111101000101001" + "111111110101010001101000100011111011000101101111110110111110010001001011010011100000010100011101111110111111101000101001" + "111111110101010001110100000101110010010001000000100100000100110110001100110001010000011010000111011110111111101000101001" + "111111110101010001111101000110111010011110001011110111110101000011001111001001000010011110100010001000111111101000101001" + "111111110101010001010000010111100010111100010001000111001001111101001110011111101010010010100111100000111111101000101001" + "111111110101010001110010110111100010100011000110000110001110001100101000010010010000010010100001000000111111101000101001" + "111111110101010001111010000101000010000010111101000111010001101000001111000001001001010100011110000010111111101000101001" + "111111110101010001111100101110010010011100000100110100111010000110001100110100001111011100101111100010111111101000101001" + "111111110101010001110110100001100010011001111001110101111011110001001011011100011000011011010001000000111111101000101001" + }, + /* 9*/ { BARCODE_PDF417, -1, UNICODE_MODE, -1, -1, ";;;;;é;;;;;", 0, 7, 120, 0, "BWIPP different encodation", "111111110101010001111101010111110011101011011110000100011101110010001110101011100000011111010101111100111111101000101001" "111111110101010001111101010001100011111010101100000111110101110111101011111100100011011110101001000000111111101000101001" "111111110101010001010100111100000010110010000001110110001111100100101000000110100111011010100011111000111111101000101001" @@ -368,14 +446,14 @@ static void test_encode(int index, int generate, int debug) { "111111110101010001111101011110110010111000110001110111011111100100101111101001111011011110101111000010111111101000101001" "111111110101010001110100111011111010110011001000000100001100110001001001110011100100011101001110111110111111101000101001" }, - /* 7*/ { BARCODE_PDF417, -1, UNICODE_MODE, 2, 3, "12345678901234", 0, 5, 120, 1, "Numeric Compaction", + /* 10*/ { BARCODE_PDF417, -1, UNICODE_MODE, 2, 3, "12345678901234", 0, 5, 120, 1, "Numeric Compaction", "111111110101010001111010101111000011101010001110000100111101111010001001011100001110011111010101111100111111101000101001" "111111110101010001111110101000111011010000001110010111111011010011001111010100000010011111101010111000111111101000101001" "111111110101010001010100111100000010111000110011100101110011000011101110001111110101011101010001111110111111101000101001" "111111110101010001010111100111100010001100001100010100001100011101101110101100111100011010111100111110111111101000101001" "111111110101010001110101110000110011000000101110010110001001110000101011001000111111011101011100110000111111101000101001" }, - /* 8*/ { BARCODE_PDF417, -1, UNICODE_MODE, 2, 3, "1234567890123456789012345678901234567890123", 0, 9, 120, 1, "Numeric Compaction 43 consecutive", + /* 11*/ { BARCODE_PDF417, -1, UNICODE_MODE, 2, 3, "1234567890123456789012345678901234567890123", 0, 9, 120, 1, "Numeric Compaction 43 consecutive", "111111110101010001111101010111110011010110001110000100111101111010001101001101110000011111010101111100111111101000101001" "111111110101010001111010100001000011010011100001000110100111101100001110000101100001011110101001000000111111101000101001" "111111110101010001010100111100000011111010111000010110010010011111001000011010000111010101000011110000111111101000101001" @@ -386,7 +464,7 @@ static void test_encode(int index, int generate, int debug) { "111111110101010001111110100101110010100111100001000110000101111001101110010110000100010101111110111000111111101000101001" "111111110101010001111110100110010011100100111110100100111110011000101001111000010001011111010011101000111111101000101001" }, - /* 9*/ { BARCODE_PDF417, -1, UNICODE_MODE, 2, 3, "12345678901234567890123456789012345678901234", 0, 9, 120, 1, "Numeric Compaction 44 consecutive", + /* 12*/ { BARCODE_PDF417, -1, UNICODE_MODE, 2, 3, "12345678901234567890123456789012345678901234", 0, 9, 120, 1, "Numeric Compaction 44 consecutive", "111111110101010001111101010111110011010110001110000100111101111010001000100011000011011111010101111100111111101000101001" "111111110101010001111010100001000011101001100100000111010001100001001110010000001101011110101001000000111111101000101001" "111111110101010001010100111100000011111100010110100101001100001111101010110011111000010101000011110000111111101000101001" @@ -397,7 +475,7 @@ static void test_encode(int index, int generate, int debug) { "111111110101010001111110100101110011100110011101000100110001011111101101001110000001010101111110111000111111101000101001" "111111110101010001111110100110010010111001100011100101000110111110001001100001000111011111010011101000111111101000101001" }, - /* 10*/ { BARCODE_PDF417, -1, UNICODE_MODE, 2, 3, "123456789012345678901234567890123456789012345", 0, 9, 120, 1, "Numeric Compaction 45 consecutive", + /* 13*/ { BARCODE_PDF417, -1, UNICODE_MODE, 2, 3, "123456789012345678901234567890123456789012345", 0, 9, 120, 1, "Numeric Compaction 45 consecutive", "111111110101010001111101010111110011010110001110000100111101111010001000100011000011011111010101111100111111101000101001" "111111110101010001111010100001000011101001100100000111010001100001001110010000001101011110101001000000111111101000101001" "111111110101010001010100111100000011111100010110100101001100001111101010110011111000010101000011110000111111101000101001" @@ -408,7 +486,7 @@ static void test_encode(int index, int generate, int debug) { "111111110101010001111110100101110011110001001101100111101001110011101101111010111110010101111110111000111111101000101001" "111111110101010001111110100110010011011110011001110110011100100011101100100100011111011111010011101000111111101000101001" }, - /* 11*/ { BARCODE_PDF417, -1, UNICODE_MODE, 2, 3, "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567", 0, 14, 120, 1, "Numeric Compaction 87 consecutive", + /* 14*/ { BARCODE_PDF417, -1, UNICODE_MODE, 2, 3, "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567", 0, 14, 120, 1, "Numeric Compaction 87 consecutive", "111111110101010001111010100111100011111010111111010100111101111010001000100011000011011111010101111100111111101000101001" "111111110101010001111110101000111011101001100100000111010001100001001110010000001101011111101010011100111111101000101001" "111111110101010001010100111100000011111100010110100101001100001111101010110011111000011101010001111110111111101000101001" @@ -424,7 +502,7 @@ static void test_encode(int index, int generate, int debug) { "111111110101010001010000010100000011110111001001100110100000100110001110111100011010011010000111011110111111101000101001" "111111110101010001111101000100011011100101110011000111100011001101001000001011110001011110100010010000111111101000101001" }, - /* 12*/ { BARCODE_PDF417, -1, UNICODE_MODE, 2, 3, "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678", 0, 14, 120, 1, "Numeric Compaction 88 consecutive", + /* 15*/ { BARCODE_PDF417, -1, UNICODE_MODE, 2, 3, "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678", 0, 14, 120, 1, "Numeric Compaction 88 consecutive", "111111110101010001111010100111100011111010111111010100111101111010001000100011000011011111010101111100111111101000101001" "111111110101010001111110101000111011101001100100000111010001100001001110010000001101011111101010011100111111101000101001" "111111110101010001010100111100000011111100010110100101001100001111101010110011111000011101010001111110111111101000101001" @@ -440,7 +518,7 @@ static void test_encode(int index, int generate, int debug) { "111111110101010001010000010100000011100010110011110111011001100111001110011010000110011010000111011110111111101000101001" "111111110101010001111101000100011011110010110000110111011100111100101111010000110011011110100010010000111111101000101001" }, - /* 13*/ { BARCODE_PDF417, -1, UNICODE_MODE, 2, 3, "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", 0, 14, 120, 1, "Numeric Compaction 89 consecutive", + /* 16*/ { BARCODE_PDF417, -1, UNICODE_MODE, 2, 3, "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", 0, 14, 120, 1, "Numeric Compaction 89 consecutive", "111111110101010001111010100111100011111010111111010100111101111010001000100011000011011111010101111100111111101000101001" "111111110101010001111110101000111011101001100100000111010001100001001110010000001101011111101010011100111111101000101001" "111111110101010001010100111100000011111100010110100101001100001111101010110011111000011101010001111110111111101000101001" @@ -456,7 +534,7 @@ static void test_encode(int index, int generate, int debug) { "111111110101010001010000010100000011100110011001110100111011110110001100010000100110011010000111011110111111101000101001" "111111110101010001111101000100011011100101110001100110001001110100001010001111000001011110100010010000111111101000101001" }, - /* 14*/ { BARCODE_PDF417, -1, UNICODE_MODE, 0, 3, "AB{} C#+ de{} {}F 12{} G{} H", 0, 10, 120, 0, "Text Compaction newtable, BWIPP uses PUNCT_SHIFT better for less codewords", + /* 17*/ { BARCODE_PDF417, -1, UNICODE_MODE, 0, 3, "AB{} C#+ de{} {}F 12{} G{} H", 0, 10, 120, 0, "Text Compaction newtable, BWIPP uses PUNCT_SHIFT better for less codewords", "111111110101010001110101001110000011010111000111100111101010111100001000111011100100011111010101111100111111101000101001" "111111110101010001111101010110000011100000101100010100111110100111001110001100011101011111010100110000111111101000101001" "111111110101010001010100111100000010111111001110100100001101011100001001111101101000011010101111100000111111101000101001" @@ -468,19 +546,39 @@ static void test_encode(int index, int generate, int debug) { "111111110101010001111110100110010010111111011100100110001111001011001011001100111100010100110111110000111111101000101001" "111111110101010001010001100000110010000110001100100110011100110100001100100100110000010100011000011000111111101000101001" }, - /* 15*/ { BARCODE_PDF417, -1, UNICODE_MODE, 1, 4, "\177\177\177\177\177\177\177\177\177\177\177", 0, 4, 137, 1, "Byte Compaction", + /* 18*/ { BARCODE_PDF417, -1, UNICODE_MODE, 1, 4, "\177\177\177\177\177", 0, 3, 137, 1, "Byte Compaction", + "11111111010101000111010101110000001101010000110000010000010000100010101000001001000001010000010010000011101010011100000111111101000101001" + "11111111010101000111101010001000001111101000100011011111010001000110111110100010001101011111101011000011111010101100000111111101000101001" + "11111111010101000110101001111100001100011110101100011001101011110000100000111010110001011110011100111010101000111100000111111101000101001" + }, + /* 19*/ { BARCODE_PDF417, -1, UNICODE_MODE, 1, 4, "\177\177\177\177\177\177", 0, 3, 137, 1, "Byte Compaction, mod 6 == 0 (924 emitted)", + "11111111010101000111010101110000001101010000110000011000111000110100111001001100111101000010100001000011101010011100000111111101000101001" + "11111111010101000111101010001000001110010000111011010100111110000110111101001100001101011111101011000011111010101100000111111101000101001" + "11111111010101000110101001111100001011111011101100010000001110100110110000011010111101111010111100001010101000111100000111111101000101001" + }, + /* 20*/ { BARCODE_PDF417, -1, UNICODE_MODE, 1, 4, "\177\177\177\177\177\177\177", 0, 3, 137, 1, "Byte Compaction", + "11111111010101000111010101110000001101010000110000010000010000100010111001001100111101000010100001000011101010011100000111111101000101001" + "11111111010101000111101010001000001110010000111011010100111110000110111101001100001101111101000100011011111010101100000111111101000101001" + "11111111010101000110101001111100001011000110011110010110001000111000100011010000111001001100100001110010101000111100000111111101000101001" + }, + /* 21*/ { BARCODE_PDF417, -1, UNICODE_MODE, 1, 4, "\177\177\177\177\177\177\177\177\177\177\177", 0, 4, 137, 1, "Byte Compaction", "11111111010101000111101010111100001101011011100000010000010000100010111001001100111101000010100001000011101010011100000111111101000101001" "11111111010101000111110101001100001110010000111011010100111110000110111101001100001101111101000100011011111101010111000111111101000101001" "11111111010101000110101001111100001010000001011110010100000010111100101000000101111001010000001011110011010100111110000111111101000101001" "11111111010101000101011110011110001010001000001000011011000010100000111000110001001101100111000110010010101111101111100111111101000101001" }, - /* 16*/ { BARCODE_PDF417, -1, UNICODE_MODE, 1, 4, "\177\177\177\177\177\177\177\177\177\177\177\177", 0, 4, 137, 1, "Byte Compaction, mod 6 == 0 (924 emitted)", + /* 22*/ { BARCODE_PDF417, -1, UNICODE_MODE, 1, 4, "\177\177\177\177\177\177\177\177\177\177\177\177", 0, 4, 137, 1, "Byte Compaction, mod 6 == 0 (924 emitted)", "11111111010101000111101010111100001101011011100000011000111000110100111001001100111101000010100001000011101010011100000111111101000101001" "11111111010101000111110101001100001110010000111011010100111110000110111101001100001101111001010010000011111101010111000111111101000101001" "11111111010101000110101001111100001001110000100110010011000100001110101000011001111101101000101111100011010100111110000111111101000101001" "11111111010101000101011110011110001101000100011000010011000111001100110001100001000101110100010111000010101111101111100111111101000101001" }, - /* 17*/ { BARCODE_PDF417, -1, UNICODE_MODE, -1, 5, "ABCDEF1234567890123\177\177\177\177VWXYZ", 0, 6, 154, 1, "Text, Numeric, Byte, Text", + /* 23*/ { BARCODE_PDF417, -1, UNICODE_MODE, -1, 5, "1\177", 0, 3, 154, 1, "Byte Compaction, 1 Numeric, 1 Byte", + "1111111101010100011101010111000000111010100011100001000001000010001011010011011100000101000001001000001000011000110010011110101001111000111111101000101001" + "1111111101010100011110101000010000101111110101100001011111101011000011101001110110000111000010110100001110000110011101011111010101100000111111101000101001" + "1111111101010100011101010011111100100111100000100101101100010011110010111100000110110101101110111110001001101011100000010101000011110000111111101000101001" + }, + /* 24*/ { BARCODE_PDF417, -1, UNICODE_MODE, -1, 5, "ABCDEF1234567890123\177\177\177\177VWXYZ", 0, 6, 154, 1, "Text, Numeric, Byte, Text", "1111111101010100011110101011110000110101110111100001111010101111000010100111001110000110100000101100001001111011110100011110101001111000111111101000101001" "1111111101010100011110101000010000111101011001100001010011110000100011111100011101010110000010111000101111001011011000011111101010111000111111101000101001" "1111111101010100011101010011111100110011111101100101010000001011110010100000010111100101000000101111001010000001011110010101000011110000111111101000101001" @@ -488,7 +586,63 @@ static void test_encode(int index, int generate, int debug) { "1111111101010100011010111000001000101111110101100001011111101011000011001011111001110111100100100100001011111101011000011101011100110000111111101000101001" "1111111101010100011111010111100110110111110110011001101001011111000010101110011111100100100001000111101011000000101110011110101111101100111111101000101001" }, - /* 18*/ { BARCODE_PDF417COMP, -1, UNICODE_MODE, 1, 2, "PDF417 APK", 0, 6, 69, 0, "ISO 15438:2015 Figure G.1, same, BWIPP uses different encodation, same codeword count", + /* 25*/ { BARCODE_PDF417, -1, UNICODE_MODE, 6, 5, "ABCDEF1234567890123\177\177\177\177VWXYZ", 0, 30, 154, 1, "ECC 6: Text, Numeric, Byte, Text", + "1111111101010100010101000001000000110101110111100001111010101111000010100111001110000110100000101100001001111011110100011110101001111000111111101000101001" + "1111111101010100011110101100011000111101011001100001010011110000100011111100011101010110000010111000101111001011011000011111010100001100111111101000101001" + "1111111101010100011101010011111100110011111101100101010000001011110010100000010111100101000000101111001010000001011110011111101011000010111111101000101001" + "1111111101010100011101001001110000100001100011001001000110111101110011110111101101100110111100111000101000011000110010011111010111111010111111101000101001" + "1111111101010100010101111000010000101111110101100001011111101011000011110001010000010100001001111000101011110011011111011101011100000110111111101000101001" + "1111111101010100011111010111100110100111011000111001111010001111010011001111001011000111001111110100101101110000101110011101001011111100111111101000101001" + "1111111101010100010100111100111100110011000010000101010000100000100011110011110101000110111100111001001101000110111000011010011100111100111111101000101001" + "1111111101010100011111010011011100101000111100100001101001110010000010000001011110100110111001111101001001100010111111011110100100100000111111101000101001" + "1111111101010100011010011001111110111111001011101101011111000110100011010101111100000100001110010001101010111001111110011101001111100100111111101000101001" + "1111111101010100010100011110111100111101111010001001101000110001110011110100101111000111101100101110001001001000010000010100011101110000111111101000101001" + "1111111101010100010100111100001000111000010110010001110011000111001011100101100000100100111011111101001111110111001010011101001110000110111111101000101001" + "1111111101010100010100010000011110111001000111110101001111001100011010100001101111100100110000001011101011100110000111010100001011110000111111101000101001" + "1111111101010100011101000001001110100001011000001101101111000111001010100001110001110100010100001000001010000110110000010100000101000000111111101000101001" + "1111111101010100011101000111011000110011111101011101101001111011000010001110111111010111110111011000101111011101110010011110100010000010111111101000101001" + "1111111101010100010100000100111100110000111110100101101111010001100010001111000100100101110000010011001000101000111100011111100101101000111111101000101001" + "1111111101010100011001011001110000100111000111010001011000011010000011001100011001100100010100010000001010111110111110010010100000100000111111101000101001" + "1111111101010100011101000011001000101111110100110001111101011011100010011101001111100110000001001110101111100010101100010100011111001100111111101000101001" + "1111111101010100011111001011100010110000111010111001101010000111110011111010111000100101111011001100001000011101000110010110100111000000111111101000101001" + "1111111101010100011101101000001100101110011100010001111001111010100010110011110111000100101000001000001011110011110100011110110100011100111111101000101001" + "1111111101010100010100000111101000111110001010011001111100011001001010110111111000110111100100100100001111110001101011011111010000010110111111101000101001" + "1111111101010100010110110111100000101111000010100001000111101000010011011010000111100100011010011100001001111000001001010110111011111000111111101000101001" + "1111111101010100010110111000011000101111001111001001000011011100011011100001101000110110011000011001101101001000001100010110111001100000111111101000101001" + "1111111101010100011100101100001000110110011110000101110010011101100011110100011000110111110110010100001011100010011111011111001010000110111111101000101001" + "1111111101010100011110010011110010100011111001101001001111000110011010001110110011100110000101011111001111110101101000010110010000111000111111101000101001" + "1111111101010100011001000100110000110100111001111001011100111101100011010000100011000110011011000110001101011001110000011011001000000100111111101000101001" + "1111111101010100011001011111001110110110111110011001110001001100100010010001111010000111101000100100001011111101101110010010111100100000111111101000101001" + "1111111101010100011111100100011010110100000101111101011001110111110010111000110111000110001001111110101111011011111001010110001001110000111111101000101001" + "1111111101010100010010001110001110100110000110010001100001001100111011101001110111110110111100011100101110101001110000010010001110111000111111101000101001" + "1111111101010100011100100110100000110101111011000001100110011110100010000010001111010111001011001000001001000011110100011110110110100000111111101000101001" + "1111111101010100010110001110111110111110001011100101111101100111101010000111010110000110110010111100001111101011100100010110000011011110111111101000101001" + }, + /* 26*/ { BARCODE_PDF417, -1, UNICODE_MODE, -1, 5, "ABCDEF1234567890123\177\177\177\177YZ1234567890123", 0, 6, 154, 1, "Text, Numeric, Byte, 2 Text, Numeric", + "1111111101010100011110101011110000110101110111100001111010101111000010100111001110000110100000101100001001111011110100011110101001111000111111101000101001" + "1111111101010100011110101000010000111101011001100001010011110000100011111100011101010110000010111000101111001011011000011111101010111000111111101000101001" + "1111111101010100011101010011111100100000111100101001111011011111010010011100001001100100110001000011101110100011111001010101000011110000111111101000101001" + "1111111101010100010101111001111000101101111011100001001111011110100011110101100111110110100001000011001000001001101100011111010111111010111111101000101001" + "1111111101010100011010111000001000110000010111000101111001011011000010110001111101000111010011100011001110110111010000011101011100110000111111101000101001" + "1111111101010100011111010111100110100001100110111101100110101111000010110011011110000111011100010111101001001001111000011110101111101100111111101000101001" + }, + /* 27*/ { BARCODE_PDF417, -1, UNICODE_MODE, -1, -1, "ABCDEFGHIJKLMOPQRSTUVWXYZABCDEFGHIJKLMOPQRSTUVWXYZABCDEFGHIJKLMOPQRSTUVWXYZABCDEFGHIJKLMOPQRSTUVWXYZ", 0, 14, 154, 1, "ECC 3", + "1111111101010100011110101001111000111010011001111001111010101111000010100111001110000110100000101100001111011010000111011110101001111000111111101000101001" + "1111111101010100011110101000001000100101111001000001110110111100110011101100111100110111000101100100001110001001110011011111101010011100111111101000101001" + "1111111101010100011101010011111100110111100010011001000001000101111010011110011000110101111100011001001111101011110110010101000001111000111111101000101001" + "1111111101010100011111010111111010101000111011100001110010110111100010010011000011000101100111100011101011000011000010011111010111111010111111101000101001" + "1111111101010100011010111000000100111001000001101001001101011111100010011001011111100111110111001100101100001011110110011101011100011000111111101000101001" + "1111111101010100011111010111100110110111110001000101110101011111100010100110011111000101000001000111101011011001111000011110101111100110111111101000101001" + "1111111101010100011010011100111100110010001001100001100100001101110010001011000110000110001000100110001001100011001000011010011100111100111111101000101001" + "1111111101010100011111010010011000110011001111010001111001100001101011000110111100100110000100011101001111010111001110010101111110011100111111101000101001" + "1111111101010100011010011001111110101000100000111101111100101111011011100100111110010101100001000011101001101110111110010100111011111100111111101000101001" + "1111111101010100010100011101110000111101110101100001001100111100111011100110000100110110001101000100001000110011001000010100011101110000111111101000101001" + "1111111101010100011010011100000100111000110011101001011111101011000010111111010110000101111110101100001111010100001000011101001110011000111111101000101001" + "1111111101010100010100010000011110100100110001111101011011000111100011000111100101100110010101111100001111101000111010010100011000111110111111101000101001" + "1111111101010100010100000101000000111101100100011101000011011010000011001000000101100110100000010011001010000110000011010100000101000000111111101000101001" + "1111111101010100011101000110100000100111101001111001111100100101100011110101101100000111100010011001101111000100000101011110100010010000111111101000101001" + }, + /* 28*/ { BARCODE_PDF417COMP, -1, UNICODE_MODE, 1, 2, "PDF417 APK", 0, 6, 69, 0, "ISO 15438:2015 Figure G.1, same, BWIPP uses different encodation, same codeword count", "111111110101010001111010101111000011010100001100000111011101100110001" "111111110101010001111010100010000011010000111000100111101000101000001" "111111110101010001110101011111100010110011011110000100111110011000101" @@ -496,7 +650,7 @@ static void test_encode(int index, int generate, int debug) { "111111110101010001111010111000111011011000001111010110010011101000001" "111111110101010001111010111101000011110100111101000110010010011111001" }, - /* 19*/ { BARCODE_PDF417COMP, -1, UNICODE_MODE, 4, 4, "ABCDEFG", 0, 10, 103, 1, "", + /* 29*/ { BARCODE_PDF417COMP, -1, UNICODE_MODE, 4, 4, "ABCDEFG", 0, 10, 103, 1, "", "1111111101010100011101010011100000110101000011000001111010101111000010100111001110000110100000101100001" "1111111101010100011110101000000100110100000011100101011111101011000010111111010110000101111110101100001" "1111111101010100011010100111110000101111001100011001000001111010100010011111001100100111001011111001001" @@ -508,7 +662,7 @@ static void test_encode(int index, int generate, int debug) { "1111111101010100010100110011111000100110000110111101100111000010111010010001011110000110011111010001001" "1111111101010100010100011000001100110001101010000001100011000110011011001001101110000111110111110101001" }, - /* 20*/ { BARCODE_HIBC_PDF, -1, UNICODE_MODE, -1, 3, "H123ABC01234567890D", 0, 8, 120, 0, "BWIPP uses different encodation, same codeword count but zint half-pad shorter", + /* 30*/ { BARCODE_HIBC_PDF, -1, UNICODE_MODE, -1, 3, "H123ABC01234567890D", 0, 8, 120, 0, "BWIPP uses different encodation, same codeword count but zint half-pad shorter", "111111110101010001111101010111110011101011001111000100000100010010001110001110100010011111010101111100111111101000101001" "111111110101010001111110101000111011110000010001010110101111110111101111100011101101011110101001000000111111101000101001" "111111110101010001010100111100000011111010111101100100001111000101001100101000011111011101010001111110111111101000101001" @@ -518,7 +672,7 @@ static void test_encode(int index, int generate, int debug) { "111111110101010001110100111011111010100110001100000110100011100111101111010010111100011101001110111110111111101000101001" "111111110101010001111101001011000011100001001100100111010000011001001111011000110100010101111110111000111111101000101001" }, - /* 21*/ { BARCODE_HIBC_PDF, -1, UNICODE_MODE, 1, 3, "A123BJC5D6E71", 0, 6, 120, 1, "BWIPP example", + /* 31*/ { BARCODE_HIBC_PDF, -1, UNICODE_MODE, 1, 3, "A123BJC5D6E71", 0, 6, 120, 1, "BWIPP example", "111111110101010001111010101111000011110101101111100100000100010010001000011011100110011111010101111100111111101000101001" "111111110101010001111010100010000011110000010001010110101111110111101111000001000101011111101010111000111111101000101001" "111111110101010001010100111100000010110001100011110101111110111101101000111100011011010101000111100000111111101000101001" @@ -526,7 +680,7 @@ static void test_encode(int index, int generate, int debug) { "111111110101010001111010111000111011010111110011100110100000011100101111110101000111011101011100110000111111101000101001" "111111110101010001111101011110110010011100110011100100011110110011001011001011100000011110101111000100111111101000101001" }, - /* 22*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 1, "ABCDEFGHIJKLMNOPQRSTUV", 0, 20, 38, 1, "ISO 24728:2006 Figure 1 1st 1x20, same", + /* 32*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 1, "ABCDEFGHIJKLMNOPQRSTUV", 0, 20, 38, 1, "ISO 24728:2006 Figure 1 1st 1x20, same", "11110101001000011000110010011110101001" "11100101001111110101011100011100101001" "11101101001010011001111100011101101001" @@ -548,7 +702,7 @@ static void test_encode(int index, int generate, int debug) { "11011101001111011111011010011011101001" "11011001001100010001110100011011001001" }, - /* 23*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 2, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCD", 0, 20, 55, 1, "ISO 24728:2006 Figure 1 2nd 2x20, same", + /* 33*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 2, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCD", 0, 20, 55, 1, "ISO 24728:2006 Figure 1 2nd 2x20, same", "1111010100100001100011001001111010101111000011110101001" "1110010100110101111110111101111101000100110011100101001" "1110110100101101100111100001011001110011111011101101001" @@ -570,7 +724,7 @@ static void test_encode(int index, int generate, int debug) { "1101110100111010110011110001000001001101100011011101001" "1101100100111100110110100001001001111001000011011001001" }, - /* 24*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 3, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMN", 0, 20, 82, 1, "ISO 24728:2006 Figure 1 3rd 3x20", + /* 34*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 3, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMN", 0, 20, 82, 1, "ISO 24728:2006 Figure 1 3rd 3x20", "1100100010100001100011001001011110010111101010111100001010011100111000011100101101" "1110100010111110100010011001011110110101000011111001101001011110010000011000101101" "1110110010111100010111101001001110110110111011001111001001100001000111011000101001" @@ -592,7 +746,7 @@ static void test_encode(int index, int generate, int debug) { "1111010100101111011110100001011001000111110011010111101011110111110110011010000101" "1110010100110010001111011001011001100111000010111011001110001011100110011011000101" }, - /* 25*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 4, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZAB", 0, 20, 99, 1, "ISO 24728:2006 Figure 1 4th 4x20, same", + /* 35*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 4, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZAB", 0, 20, 99, 1, "ISO 24728:2006 Figure 1 4th 4x20, same", "110010001010000110001100100111101010111100001011110010101001110011100001101000001011000011100101101" "111010001010100001111100110100101111001000001011110110111011011110011001101100111100100011000101101" "111011001010011000010001110110011101000011101001110110110111100101100001000001010111100011000101001" @@ -614,7 +768,7 @@ static void test_encode(int index, int generate, int debug) { "111101010011100011101010000110001011101111001011001000111110111101011001100101110111100011010000101" "111001010010001000001111010111100010100001001011001100100111101101111101001110100111110011011000101" }, - /* 26*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 1, "123456789012345", 0, 14, 38, 1, "Number Compaction", + /* 36*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 1, "123456789012345", 0, 14, 38, 1, "Number Compaction", "11101110101011111101001100011101110101" "11100110101110101011111100011100110101" "11110110101000001011001100011110110101" @@ -630,7 +784,7 @@ static void test_encode(int index, int generate, int debug) { "11100101001101011110000110011100101001" "11101101001101000111111001011101101001" }, - /* 27*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 2, "\177\177\177", 0, 8, 55, 1, "Byte Compaction", + /* 37*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 2, "\177\177\177", 0, 8, 55, 1, "Byte Compaction", "1100100010100000100001000101010000010010000011001000101" "1110100010111110100010001101111101000100011011101000101" "1110110010110001111100100101100011111001001011101100101" @@ -640,7 +794,7 @@ static void test_encode(int index, int generate, int debug) { "1100111010111001111001100101000001001101100011001110101" "1110111010111000101111011101110001000011010011101110101" }, - /* 28*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 2, "\177\177\177\177\177\177", 0, 8, 55, 1, "Byte Compaction, mod 6 == 0 (924 emitted)", + /* 38*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 2, "\177\177\177\177\177\177", 0, 8, 55, 1, "Byte Compaction, mod 6 == 0 (924 emitted)", "1100100010110001110001101001110010011001111011001000101" "1110100010100010001111010001110010000111011011101000101" "1110110010101000011001111101101000101111100011101100101" @@ -650,7 +804,7 @@ static void test_encode(int index, int generate, int debug) { "1100111010100100010000100001110111101100001011001110101" "1110111010111110011010100001101100001111010011101110101" }, - /* 29*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 3, "ABCDEFG\177\177\177", 0, 8, 82, 1, "Text & Byte Compaction", + /* 39*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 3, "ABCDEFG\177\177\177", 0, 8, 82, 1, "Text & Byte Compaction", "1100111010100001100011001001000010110111101010111100001010011100111000011001110101" "1110111010111110100010011001000010010110100000011100101101111110101110011101110101" "1110011010101000000101111001000011010101000000101111001010000001011110011100110101" @@ -660,7 +814,7 @@ static void test_encode(int index, int generate, int debug) { "1100001010111110111010111001001100010110011100011000101101100001100110011000010101" "1100011010110100011100001001001110010110110000111101001100011011110010011000110101" }, - /* 30*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 4, "\177\177\177abcdefgh1234567890123", 0, 8, 99, 1, "Byte & Text & Numeric Compaction", + /* 40*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 4, "\177\177\177abcdefgh1234567890123", 0, 8, 99, 1, "Byte & Text & Numeric Compaction", "110011101010000010000100010101000001001000001000010110101000001001000001010000010010000011001110101" "111011101010111111010110000110000010111001001000010010111101011100111001110100111001100011101110101" "111001101011111001011110110101100110011110001000011010100001111000101001111110101100010011100110101" @@ -670,7 +824,7 @@ static void test_encode(int index, int generate, int debug) { "110000101011000011010000100100000101101100001001100010101110111110111001111001110010110011000010101" "110001101011101110111100010100100011110100001001110010100000101111000101111001010010000011000110101" }, - /* 31*/ { BARCODE_HIBC_MICPDF, -1, UNICODE_MODE, -1, 4, "H123ABC01234567890D", 0, 8, 99, 0, "BWIPP uses different encodation, same codeword count but zint full-pad shorter", + /* 41*/ { BARCODE_HIBC_MICPDF, -1, UNICODE_MODE, -1, 4, "H123ABC01234567890D", 0, 8, 99, 0, "BWIPP uses different encodation, same codeword count but zint full-pad shorter", "110011101010000110001100100100000100010010001000010110111000111010001001000001001100011011001110101" "111011101011010111111011110111110001110110101000010010111101011100111001011111101001100011101110101" "111001101011001010000111110100011110101000001000011010100111110001101001011011000111100011100110101" @@ -680,7 +834,7 @@ static void test_encode(int index, int generate, int debug) { "110000101010110110001000000111000101100111101001100010110111101110000101100010101100000011000010101" "110001101011110110000011010111100100001101101001110010101101011111100001111001000110011011000110101" }, - /* 32*/ { BARCODE_HIBC_MICPDF, -1, UNICODE_MODE, -1, 1, "/EAH783", 0, 17, 38, 1, "HIBC Provider Applications Standard (PAS) example", + /* 42*/ { BARCODE_HIBC_MICPDF, -1, UNICODE_MODE, -1, 1, "/EAH783", 0, 17, 38, 1, "HIBC Provider Applications Standard (PAS) example", "11001101001100011111001001011001101001" "11011101001000001000100100011011101001" "11011001001000100011110100011011001001" @@ -699,7 +853,7 @@ static void test_encode(int index, int generate, int debug) { "11010000101101100100001111011010000101" "11011000101110111000100010011011000101" }, - /* 33*/ { BARCODE_PDF417, 9, DATA_MODE, -1, -1, "\342", 0, 7, 103, 1, "β", + /* 43*/ { BARCODE_PDF417, 9, DATA_MODE, -1, -1, "\342", 0, 7, 103, 1, "β", "1111111101010100011111010101111100110101000110000001100011100011001011110101011110000111111101000101001" "1111111101010100011111010100011000111110101000011001011111100100011011110101001000000111111101000101001" "1111111101010100011101010111111000110110010011110001100011111001001011010100011111000111111101000101001" @@ -708,7 +862,7 @@ static void test_encode(int index, int generate, int debug) { "1111111101010100011110101111010000100011110001000101000110010111000011110101111000010111111101000101001" "1111111101010100011101001110111110101110001110001001010001101100000011010011101111000111111101000101001" }, - /* 34*/ { BARCODE_MICROPDF417, 9, DATA_MODE, -1, 1, "\342\343", 0, 14, 38, 1, "βγ", + /* 44*/ { BARCODE_MICROPDF417, 9, DATA_MODE, -1, 1, "\342\343", 0, 14, 38, 1, "βγ", "11101110101001111110010110011101110101" "11100110101101010000111110011100110101" "11110110101000001000010001011110110101" @@ -724,6 +878,624 @@ static void test_encode(int index, int generate, int debug) { "11100101001011100101111100011100101001" "11101101001101001001111100011101101001" }, + /* 45*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 1, "12345678", 0, 11, 38, 0, "1 columns x 11 rows, variant 1; BWIPP uses byte compaction TODO: investigate", + "11001000101001111011110100011100110101" + "11101000101110100011000001011110110101" + "11101100101000011010011100011110010101" + "11001100101100110011000011011100010101" + "11011100101111100001010110011000010101" + "11011110101101100100111100011000110101" + "11001110101011110011111011011000100101" + "11101110101000110111110010011100100101" + "11100110101011011110111111011110100101" + "11110110101001000001000010011110101101" + "11110010101110001001110110011110101001" + }, + /* 46*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 1, "123456789012345678901234567890", 0, 20, 38, 1, "1 columns x 20 rows, variant 4", + "11110101001001111011110100011110101001" + "11100101001111101010011000011100101001" + "11101101001111110010011001011101101001" + "11101001001001110011110110011101001001" + "11101001101111100010100110011101001101" + "11101011101010000010111100011101011101" + "11101011001011000111100111011101011001" + "11101010001110100000111011011101010001" + "11001010001110011101001111011001010001" + "11001011001100101110011110011001011001" + "11001011101100111011111010011001011101" + "11001001101011011000111100011001001101" + "11001101101100110000010010011001101101" + "11101101101100100011110110011101101101" + "11100101101001111110111001011100101101" + "11000101101001110011100100011000101101" + "11000101001010000111100100011000101001" + "11001101001011111101110001011001101001" + "11011101001011110111101000011011101001" + "11011001001010001111000010011011001001" + }, + /* 47*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 1, "1234567890123456789012345678901234567890", 0, 24, 38, 1, "1 columns x 24 rows, variant 5", + "11100110101000011110001010011110100101" + "11110110101101001000011000011110101101" + "11110010101101000011100010011110101001" + "11100010101001000011011111011100101001" + "11000010101011000011001000011101101001" + "11000110101100010111000100011101001001" + "11000100101110110101111100011101001101" + "11100100101101011100011110011101011101" + "11110100101001001111000001011101011001" + "11110101101110001110101111011101010001" + "11110101001101100001000010011001010001" + "11100101001110111011110100011001011001" + "11101101001111110100111011011001011101" + "11101001001000010000110011011001001101" + "11101001101111010000010010011001101101" + "11101011101100011111001001011101101101" + "11101011001000010011100111011100101101" + "11101010001111101100001001011000101101" + "11001010001011101101110000011000101001" + "11001011001000010011011000011001101001" + "11001011101100110111100100011011101001" + "11001001101001110011011100011011001001" + "11001101101000101101100000011011001101" + "11101101101111000010010010011011011101" + }, + /* 48*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 1, "12345678901234567890123456789012345678901234567890", 0, 28, 38, 1, "1 columns x 28 rows, variant 6", + "11101011001001111011110100011100101101" + "11101010001100010111110111011000101101" + "11001010001110100111110001011000101001" + "11001011001010000011000110011001101001" + "11001011101110010000001101011011101001" + "11001001101111110001011010011011001001" + "11001101101010011110111100011011001101" + "11101101101111110101101111011011011101" + "11100101101101101000111100011011011001" + "11000101101001100111000011011011010001" + "11000101001101111101001111011010010001" + "11001101001000111001011000011010110001" + "11011101001100010001000011011010111001" + "11011001001011111001011100011010111101" + "11011001101010110111110000011010011101" + "11011011101110111010100000011010011001" + "11011011001111110101011100011010001001" + "11011010001000011100001011011010001101" + "11010010001010001100011000011010000101" + "11010110001011111101011000011011000101" + "11010111001110111110101100011001000101" + "11010111101101011110111110011101000101" + "11010011101011110100111100011101100101" + "11010011001011101110111100011001100101" + "11010001001000101100001100011011100101" + "11010001101111101000100011011011110101" + "11010000101001111001100110011001110101" + "11011000101110101011100000011101110101" + }, + /* 49*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 2, "ABCDEFGHIJKLMNOPQRSTU", 0, 11, 55, 1, "2 columns x 11 rows, variant 8", + "1100100010100001100011001001111010101111000011100110101" + "1110100010110101111110111101111101000100110011110110101" + "1110110010101101100111100001011001110011111011110010101" + "1100110010110010000110111001110001011001111011100010101" + "1101110010111001000001101001001101011111100011000010101" + "1101111010110111100101100001100001101001111011000110101" + "1100111010100001100011001001110010000101110011000100101" + "1110111010111101110111010001111100001010110011100100101" + "1110011010110010001001111101101100101111000011110100101" + "1111011010111000110100001101000101110111000011110101101" + "1111001010110001011100000101000100011110001011110101001" + }, + /* 50*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 2, "ABCDEFGHIJKLMNOPQRSTUVWXYZA", 0, 14, 55, 1, "2 columns x 14 rows, variant 9", + "1110111010101111110101100001111110101011100011101110101" + "1110011010101001100111110001010000010001111011100110101" + "1111011010111101101000011101100100010011000011110110101" + "1111001010111011011110011001101100111100100011110010101" + "1110001010100110000100011101100111010000111011100010101" + "1100001010111001100001001101100011010001000011000010101" + "1100011010110000101111011001110001100111010011000110101" + "1100010010101011100011111101100011111001001011000100101" + "1110010010100001100011001001000011000110010011100100101" + "1111010010101111110101100001110111000111101011110100101" + "1111010110101111110111001001111001011110100011110101101" + "1111010100101010000010000001110100001001110011110101001" + "1110010100101111100110111101110110011110011011100101001" + "1110110100100000011010111001100111101000011011101101001" + }, + /* 51*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 2, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL", 0, 17, 55, 1, "2 columns x 17 rows, variant 10", + "1100110100110001111100100101110101011111100011001101001" + "1101110100101001110011100001101000001011000011011101001" + "1101100100101000011111001101001011110010000011011001001" + "1101100110111100010111101001101110110011110011011001101" + "1101101110111101110101100001001100111100111011011011101" + "1101101100100110010111111001111101110011001011011011001" + "1101101000110111110101000001101111100010001011011010001" + "1101001000111101010111100001010011100111000011010010001" + "1101011000111110100010011001010000111110011011010110001" + "1101011100101100111001111101111000101111010011010111001" + "1101011110100001100011001001000011000110010011010111101" + "1101001110101111110101100001011111101011000011010011101" + "1101001100101110100000110001001111001010000011010011001" + "1101000100111001000110111101110011000010011011010001001" + "1101000110111111001010111001111000101100110011010001101" + "1101000010101110011101111001010010011110000011010000101" + "1101100010100101111101111101000110000011010011011000101" + }, + /* 52*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 2, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFG", 0, 23, 55, 1, "2 columns x 23 rows, variant 12", + "1110011010110001111100100101110101011111100011110100101" + "1111011010101001110011100001101000001011000011110101101" + "1111001010101000011111001101001011110010000011110101001" + "1110001010111100010111101001101110110011110011100101001" + "1100001010111101110101100001001100111100111011101101001" + "1100011010100110010111111001111101110011001011101001001" + "1100010010110111110101000001101111100010001011101001101" + "1110010010111101010111100001010011100111000011101011101" + "1111010010111110100010011001010000111110011011101011001" + "1111010110101100111001111101111000101111010011101010001" + "1111010100111000101100111101111011101011000011001010001" + "1110010100100110101111110001001100101111110011001011001" + "1110110100100000101011110001101111101010000011001011101" + "1110100100110011100111001101111010101111000011001001101" + "1110100110110101111110111101111101000100110011001101101" + "1110101110111110010011100101100011111001001011101101101" + "1110101100100001100011001001110111100110010011100101101" + "1110101000110111011111001001110000100011010011000101101" + "1100101000100011010011100001011000100000111011000101001" + "1100101100111010001001110001101000101100000011001101001" + "1100101110111010000001101001011001111100010011011101001" + "1100100110101100011011110001111101101111010011011001001" + "1100110110100001000010000101100010001000011011011001101" + }, + /* 53*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 2, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQ", 0, 26, 55, 1, "2 columns x 26 rows, variant 13", + "1100101000110001111100100101110101011111100011000101001" + "1100101100101001110011100001101000001011000011001101001" + "1100101110101000011111001101001011110010000011011101001" + "1100100110111100010111101001101110110011110011011001001" + "1100110110111101110101100001001100111100111011011001101" + "1110110110100110010111111001111101110011001011011011101" + "1110010110110111110101000001101111100010001011011011001" + "1100010110111101010111100001010011100111000011011010001" + "1100010100111110100010011001010000111110011011010010001" + "1100110100101100111001111101111000101111010011010110001" + "1101110100111000101100111101111011101011000011010111001" + "1101100100100110101111110001001100101111110011010111101" + "1101100110100000101011110001101111101010000011010011101" + "1101101110110011100111001101111010101111000011010011001" + "1101101100110101111110111101111101000100110011010001001" + "1101101000101101100111100001011001110011111011010001101" + "1101001000110010000110111001110001011001111011010000101" + "1101011000111001000001101001111001101100100011011000101" + "1101011100110001111100100101101001000011111011001000101" + "1101011110100100001101100001011100011100010011101000101" + "1101001110100010011110100001111110110100110011101100101" + "1101001100111101011111001101100011101001110011001100101" + "1101000100110111011110011101011100011100010011011100101" + "1101000110100111011011111101110110011101000011011110101" + "1101000010100010111011111101010100011110000011001110101" + "1101100010110001000001011001110101000111000011101110101" + }, + /* 54*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 3, "ABCDEFGHIJ", 0, 6, 82, 1, "3 columns x 6 rows, variant 14", + "1100100010100001100011001001011001110111101010111100001010011100111000011001000101" + "1110100010111110100010011001001001110101000011111001101001011110010000011101000101" + "1110110010110100010001111101001101110110000101001111101001000100111100011101100101" + "1100110010111101101001110001000101110100100011101110001011110011110001011001100101" + "1101110010111010011110011101000100110111011100111100101110100111001100011011100101" + "1101111010100001111010000101000110110100110100000011101100100111111001011011110101" + }, + /* 55*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 3, "ABCDEFGHIJKLMNOPQRSTU", 0, 10, 82, 1, "3 columns x 10 rows, variant 16", + "1100010010110001111100100101001111010111010101111110001010011001111100011000100101" + "1110010010110100000101100001011111010111101101000011101100100010011000011100100101" + "1111010010111011011110011001011110010110110011110010001110010000011010011110100101" + "1111010110110011101000011101011110110110111100101100001100001101001111011110101101" + "1111010100100001100011001001001110110100001100011001001101110001101000011110101001" + "1110010100110000100111010001001110100111010001110110001101011100000100011100101001" + "1110110100110100110011111101001100100110011100001011101000110010000111011101101001" + "1110100100101011110011110001001100110100001001001000001101101000001000011101001001" + "1110100110101011111001100001001000110101110010011111001111101100101000011101001101" + "1110101110110111101100111001001000010110111110000101001001110001101110011101011101" + }, + /* 56*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 3, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCD", 0, 12, 82, 1, "3 columns x 12 rows, variant 17", + "1110101100100001100011001001011000010111101010111100001010011100111000011101011001" + "1110101000111110100010011001011100010101000011111001101001011110010000011101010001" + "1100101000111100010111101001011100110110111011001111001001100001000111011001010001" + "1100101100100110011110011101011100100111001100001001101100011010001000011001011001" + "1100101110110000101111011001011101100111000110011101001111110101011100011001011101" + "1100100110101001100111110001001101100110001111100100101100011111001001011001001101" + "1100110110110011010000100001000101100100011101110010001101100100000010011001101101" + "1110110110111101011000110001000101000111101110111010001111110111010100011101101101" + "1110010110100011010111000001001101000101110000001011001110101111101000011100101101" + "1100010110101100001110001101011101000110111000111001101110001011011110011000101101" + "1100010100111101100011000101011001000110110001111000101100011001111001011000101001" + "1100110100101010000011110001011001100111001111101011001111010111100010011001101001" + }, + /* 57*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 3, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI", 0, 15, 82, 1, "3 columns x 15 rows, variant 18", + "1101110100100001100011001001011000100111101010111100001010011100111000011011101001" + "1101100100111110100010011001011000110101000011111001101001011110010000011011001001" + "1101100110111100010111101001010000110110111011001111001001100001000111011011001101" + "1101101110100110011110011101010001110111001100001001101100011010001000011011011101" + "1101101100110000101111011001010001100111000110011101001111110101011100011011011001" + "1101101000101001100111110001010011100101000001000111101011011001111000011011010001" + "1101001000110110011100111001010011000100001100011001001000011000110010011010010001" + "1101011000101111110101100001010111000101111110101100001011111101011000011010110001" + "1101011100110111100100001101010110000111011010011111001101111001011000011010111001" + "1101011110110011100110000101010010000100010110000011001011110001111001011010111101" + "1101001110111010001100100001011010000100111110100011101011010001111110011010011101" + "1101001100110011110010110001001010000110011111101100101000111000101100011010011001" + "1101000100100001100110010001001011000100000100001010001111010000101111011010001001" + "1101000110111110101101110001001011100101111110101100001111100110100001011010001101" + "1101000010111011101011110001011011100100011100000101101011000110001111011010000101" + }, + /* 58*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 3, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRST", 0, 26, 82, 1, "3 columns x 26 rows, variant 20", + "1100100010100001100011001001000011010111101010111100001010011100111000011110100101" + "1110100010111110100010011001000111010101000011111001101001011110010000011110101101" + "1110110010111100010111101001000110010110111011001111001001100001000111011110101001" + "1100110010100110011110011101000100010111001100001001101100011010001000011100101001" + "1101110010110000101111011001001100010111000110011101001111110101011100011101101001" + "1101111010101001100111110001001110010101000001000111101011011001111000011101001001" + "1100111010110010001001100001001111010110010000110111001110001011001111011101001101" + "1110111010111001000001101001011111010100110101111110001001100101111110011101011101" + "1110011010100000101011110001011110010110111110101000001101111100010001011101011001" + "1111011010111101010111100001011110110101001110011100001101000001011000011101010001" + "1111001010101000011111001101001110110100101111001000001110110111100110011001010001" + "1110001010110111011001111001001110100100110000100011101100111010000111011001011001" + "1100001010111001100001001101001100100100001100011001001000011000110010011001011101" + "1100011010101111110101100001001100110101111110101100001011111101011000011001001101" + "1100010010110001111100100101001000110110001111100100101100011111001001011001101101" + "1110010010100001100011001001001000010101000000100000101001111011110100011101101101" + "1111010010100111001011111001011000010111101101100100001111010111000111011100101101" + "1111010110101101001110000001011100010110011111101101001100011101000111011000101101" + "1111010100111001110001010001011100110100111000111010001111001101000111011000101001" + "1110010100111000101100001001011100100111000110011101001100011011110001011001101001" + "1110110100100111000010011001011101100100000110110111101010011011111000011011101001" + "1110100100110010000110011101001101100111001111011000101110010001011100011011001001" + "1110100110110001011110001101000101100111100001011001101111001101101000011011001101" + "1110101110110011110010001101000101000100111101001000001101111101100110011011011101" + "1110101100100110011010000001001101000111011110001100101100110000100100011011011001" + "1110101000111100010100100001011101000101111101001110001111100100010011011011010001" + }, + /* 59*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 3, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 32, 82, 1, "3 columns x 26 rows, variant 20", + "1110110100110001111100100101011101100111010101111110001010011001111100011011101001" + "1110100100110100000101100001001101100111101101000011101100100010011000011011001001" + "1110100110111011011110011001000101100110110011110010001110010000011010011011001101" + "1110101110110011101000011101000101000110111100101100001000001010111100011011011101" + "1110101100100011001100100001001101000110011100111001101111010101111000011011011001" + "1110101000110101111110111101011101000111110100010011001010000111110011011011010001" + "1100101000101100111001111101011001000111100010111101001101110110011110011010010001" + "1100101100111101110101100001011001100100110011110011101110011000010011011010110001" + "1100101110111110111001100101011000100110000101111011001110001100111010011010111001" + "1100100110111010101111110001011000110101001100111110001010000010001111011010111101" + "1100110110111101101000011101010000110110010001001100001100100001101110011010011101" + "1110110110110110011110010001010001110111001000001101001001101011111100011010011001" + "1110010110110111100101100001010001100100000101011110001101111101010000011010001001" + "1100010110110011100111001101010011100111101010111100001010011100111000011010001101" + "1100010100111110100010011001010011000101000011111001101001011110010000011010000101" + "1100110100111100010111101001010111000110111011001111001001100001000111011011000101" + "1101110100100110011110011101010110000111001100001001101100011010001000011001000101" + "1101100100110000101111011001010010000111000110011101001011111101011000011101000101" + "1101100110110001111100100101011010000110001111100100101100011111001001011101100101" + "1101101110100001100011001001001010000111101111101101001110110000100011011001100101" + "1101101100100001011111001101001011000111010000111001101110011011101000011011100101" + "1101101000110011111101100101001011100101111100011101101100100100111110011011110101" + "1101001000101000010001000001011011100100110111001100001110111010100000011001110101" + "1101011000101011111100111001011011110111110001110110101111110101001110011101110101" + "1101011100100011001001110001011001110100011110101000001100111110010010011100110101" + "1101011110111011100010000101001001110101101111001110001001100111000011011110110101" + "1101001110100111111010011001001101110100011001111101001111000100110011011110010101" + "1101001100100011101011000001000101110111010111110010001000010010011110011100010101" + "1101000100111000010010011101000100110100001011000001101000101111001111011000010101" + "1101000110111110010000101101000110110111001101111001101111110110001011011000110101" + "1101000010110010100001111101000010110100111100110011001111010000111101011000100101" + "1101100010101110011101000001000010010110000100010001101110001101000011011100100101" + }, + /* 60*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 3, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 38, 82, 1, "3 columns x 38 rows, variant 22", + "1100010010110001111100100101000101100111010101111110001010011001111100011010011101" + "1110010010110100000101100001000101000111101101000011101100100010011000011010011001" + "1111010010111011011110011001001101000110110011110010001110010000011010011010001001" + "1111010110110011101000011101011101000110111100101100001000001010111100011010001101" + "1111010100100011001100100001011001000110011100111001101111010101111000011010000101" + "1110010100110101111110111101011001100111110100010011001010000111110011011011000101" + "1110110100101100111001111101011000100111100010111101001101110110011110011001000101" + "1110100100111101110101100001011000110100110011110011101110011000010011011101000101" + "1110100110111110111001100101010000110110000101111011001110001100111010011101100101" + "1110101110111010101111110001010001110101001100111110001010000010001111011001100101" + "1110101100111101101000011101010001100110010001001100001100100001101110011011100101" + "1110101000110110011110010001010011100111001000001101001001101011111100011011110101" + "1100101000110111100101100001010011000100000101011110001101111101010000011001110101" + "1100101100110011100111001101010111000111101010111100001010011100111000011101110101" + "1100101110111110100010011001010110000101000011111001101001011110010000011100110101" + "1100100110111100010111101001010010000110111011001111001001100001000111011110110101" + "1100110110100110011110011101011010000111001100001001101100011010001000011110010101" + "1110110110110000101111011001001010000111000110011101001111110101011100011100010101" + "1110010110101001100111110001001011000101000001000111101011011001111000011000010101" + "1100010110110010001001100001001011100110010000110111001110001011001111011000110101" + "1100010100111001000001101001011011100100110101111110001001100101111110011000100101" + "1100110100100000101011110001011011110110111110101000001101111100010001011100100101" + "1101110100100001100011001001011001110100001100011001001000011000110010011110100101" + "1101100100101111110101100001001001110110110011110001001110000101100100011110101101" + "1101100110101111000001001001001101110111111001011000101000110001011100011110101001" + "1101101110110111000110010001000101110101001111001111001100100101100000011100101001" + "1101101100101100011111000101000100110101111110011011101011100011111101011101101001" + "1101101000101111010000001001000110110101110011101111001001110011101111011101001001" + "1101001000111110111010011101000010110110110011100111001100100001001100011101001101" + "1101011000100101111000010001000010010100111111001011001101001110010000011101011101" + "1101011100100011101000110001000011010110011100001011101011101001100000011101011001" + "1101011110110110000110011001000111010111000011010001101001000100001000011101010001" + "1101001110110101110000001001000110010110010011111011101111010001100110011001010001" + "1101001100111110001011101001000100010100011001001110001011111011100011011001011001" + "1101000100100100001100001101001100010111011000010001101001011100111000011001011101" + "1101000110110000010011100101001110010101100111110001001111010111000111011001001101" + "1101000010110100101111100001001111010101000000100111101011101111011111011001101101" + "1101100010111011101100001101011111010100000101000010001011110111100010011101101101" + }, + /* 61*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 3, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 44, 82, 1, "3 columns x 44 rows, variant 23", + "1100100010100001100011001001011000010111101010111100001010011100111000011010001001" + "1110100010111110100010011001011100010101000011111001101001011110010000011010001101" + "1110110010111100010111101001011100110110111011001111001001100001000111011010000101" + "1100110010100110011110011101011100100111001100001001101100011010001000011011000101" + "1101110010110000101111011001011101100111000110011101001111110101011100011001000101" + "1101111010101001100111110001001101100101000001000111101011011001111000011101000101" + "1100111010110010001001100001000101100110010000110111001110001011001111011101100101" + "1110111010111001000001101001000101000100110101111110001001100101111110011001100101" + "1110011010100000101011110001001101000110111110101000001101111100010001011011100101" + "1111011010111101010111100001011101000101001110011100001101000001011000011011110101" + "1111001010101000011111001101011001000100101111001000001110110111100110011001110101" + "1110001010110111011001111001011001100100110000100011101100111010000111011101110101" + "1100001010111001100001001101011000100110001101000100001000110011001000011100110101" + "1100011010111000110011101001011000110111111010101110001101011111101111011110110101" + "1100010010101000001000111101010000110101101100111100001011001110011111011110010101" + "1110010010110010000110111001010001110111000101100111101111011101011000011100010101" + "1111010010100110101111110001010001100100110010111111001111101110011001011000010101" + "1111010110110111110101000001010011100110111110001000101110101011111100011000110101" + "1111010100101001110011100001010011000110100000101100001111011010000111011000100101" + "1110010100100101111001000001010111000111011011110011001101100111100100011100100101" + "1110110100100110000100011101010110000110011101000011101101111001011000011110100101" + "1110100100110001101000100001010010000100011001100100001100111001110011011110101101" + "1110100110111111010101110001011010000110101111110111101111101000100110011110101001" + "1110101110101101100111100001001010000101100111001111101111000101111010011100101001" + "1110101100111000101100111101001011000111101110101100001001100111100111011101101001" + "1110101000100110010111111001001011100111110111001100101100001011110110011101001001" + "1100101000110111110001000101011011100110001111100100101100011111001001011101001101" + "1100101100100001100011001001011011110111100100100111101110010000101110011101011101" + "1100101110111100010001101101011001110111011100111101001111100010101100011101011001" + "1100100110111001100101111101001001110110010100001111101011000010000111011101010001" + "1100110110100011000110100001001101110101100110001000001110001001000111011001010001" + "1110110110101101001111110001000101110111011000111101101111000101000010011001011001" + "1110010110100111100000100101000100110111000100111110101001100010000111011001011101" + "1100010110100010000100100001000110110111010011001111001000101000010000011001001101" + "1100010100101111000100111101000010110110001011100100001111000001010001011001101101" + "1100110100101110100110000001000010010101111011000011001000110011001111011101101101" + "1101110100110001110110010001000011010100011011100110001001100001100100011100101101" + "1101100100100111110001011101000111010100011110101111001110100110000100011000101101" + "1101100110101100110111100001000110010111001001111100101011110010001000011000101001" + "1101101110111011000001011001000100010101000111000111001001110001110010011001101001" + "1101101100101111101100111101001100010111101000100000101110100111100111011011101001" + "1101101000110111100001011001001110010111110100001110101001100100001110011011001001" + "1101001000111000100010011101001111010110000010010011001111011101000110011011001101" + "1101011000100100011111011001011111010111011100111100101001011110100000011011011101" + }, + /* 62*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 4, "ABCDEFG", 0, 4, 99, 1, "4 columns x 4 rows, variant 24", + "110100111010111111010110000111111010101110001001110110110101111110111101111101000100110011010010001" + "110100110011111001001110010110001111100100101001110100110001111100100101100011111001001011010110001" + "110100010011000110100010000101101111101111001001100100110100110000111001110011100101000011010111001" + "110100011011111011001001000110100111000010001001100110101011111101110001110110111100110011010111101" + }, + /* 63*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 4, "ABCDEFGHIJKLMNOPQRS", 0, 6, 99, 1, "4 columns x 6 rows, variant 25", + "110010001010000110001100100111101010111100001011001110101001110011100001101000001011000011001000101" + "111010001010100001111100110100101111001000001001001110111011011110011001101100111100100011101000101" + "111011001010011000010001110110011101000011101001101110101111001000000101100011111001001011101100101" + "110011001010010001000000100110100001000011001000101110110111011000010001110010111011111011001100101" + "110111001011000110011110010101101111100001001000100110111110001010110001111101100010001011011100101" + "110111101010001110110001110100000100101111001000110110110111100000101101111000101111001011011110101" + }, + /* 64*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 4, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJK", 0, 10, 99, 1, "4 columns x 10 rows, variant 27", + "110001001011000111110010010111010101111110001001111010101001100111110001010000010001111011000100101" + "111001001011110110100001110110010001001100001011111010110010000110111001110001011001111011100100101" + "111101001011100100000110100100110101111110001011110010100110010111111001111101110011001011110100101" + "111101011011011111010100000110111110001000101011110110111010101111110001010011001111100011110101101" + "111101010011010000010110000111101101000011101001110110110010001001100001101100001000010011110101001" + "111001010010111111010110000101111110101100001001110100101111110101100001011111101011000011100101001" + "111011010010001110111011110111110101110001001001100100100110001000011101110010111111011011101101001" + "111010010010001000100000010100100010000100001001100110110110000100010001110001001000111011101001001" + "111010011011101100000111010110111111010111001001000110100010011111011001111010110000110011101001101" + "111010111011001111110110010100011101000011001001000010101111100110010001011100001100111011101011101" + }, + /* 65*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 4, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCD", 0, 12, 99, 1, "4 columns x 12 rows, variant 28", + "111010110010000110001100100111101010111100001011000010101001110011100001101000001011000011101011001" + "111010100010100001111100110100101111001000001011100010111011011110011001101100111100100011101010001" + "110010100010011000010001110110011101000011101011100110110111100101100001000001010111100011001010001" + "110010110010001100110010000110011100111001101011100100111101010111100001010011100111000011001011001" + "110010111011111010001001100101000011111001101011101100100101111001000001110110111100110011001011101" + "110010011011011101100111100100110000100011101001101100110011101000011101101111001011000011001001101" + "110011011011000110100010000100011001100100001000101100110011100111001101111010101111000011001101101" + "111011011011010111111011110101111110101100001000101000111101100111001101011100100011111011101101101" + "111001011011101100100111110100010110001111101001101000111101011110000101110010111110001011100101101" + "110001011011000001000010110111010101110000001011101000111110100101111101101100011100111011000101101" + "110001010010001111001011110111101101100010001011001000111100111011101001111001100011001011000101001" + "110011010011101111110100100101011100111111001011001100100001111000101001001111101110110011001101001" + }, + /* 66*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 4, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI", 0, 15, 99, 1, "4 columns x 15 rows, variant 29", + "110111010010000110001100100111101010111100001011000100101001110011100001101000001011000011011101001" + "110110010010100001111100110100101111001000001011000110111011011110011001101100111100100011011001001" + "110110011010011000010001110110011101000011101010000110110111100101100001000001010111100011011001101" + "110110111010001100110010000110011100111001101010001110111101010111100001010011100111000011011011101" + "110110110011111010001001100101000011111001101010001100100101111001000001110110111100110011011011001" + "110110100011011101100111100100110000100011101010011100110011101000011101101111001011000011011010001" + "110100100011000110100010000100011001100100001010011000110011100111001101111010101111000011010010001" + "110101100011010111111011110111110100010011001010111000101000011111001101111110110100110011010110001" + "110101110011000111110010010110001111100100101010110000110001111100100101100011111001001011010111001" + "110101111010000110001100100100001100011001001010010000100001100011001001110110100110000011010111101" + "110100111010111100101111000100111110100111001011010000111001101110100001011001111100010011010011101" + "110100110010000110010011100111001011111000101001010000110011100100111001110011111101001011010011001" + "110100010011000111011001000110100110000111001001011000111001000010111001111001101000111011010001001" + "110100011010111010000111110110001000111001001001011100111101100000110101100100011101000011010001101" + "110100001010011110100100000100111110011010001011011100111011111101001001011101100011100011010000101" + }, + /* 67*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 4, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 20, 99, 1, "4 columns x 20 rows, variant 30", + "110010001010000110001100100111101010111100001011110010101001110011100001101000001011000011100101101" + "111010001010100001111100110100101111001000001011110110111011011110011001101100111100100011000101101" + "111011001010011000010001110110011101000011101001110110110111100101100001000001010111100011000101001" + "110011001010001100110010000110011100111001101001110100111101010111100001010011100111000011001101001" + "110111001011111010001001100101000011111001101001100100100101111001000001110110111100110011011101001" + "110111101011011101100111100100110000100011101001100110110011101000011101101111001011000011011001001" + "110011101011000110100010000100011001100100001001000110110011100111001101111010101111000011011001101" + "111011101011010111111011110111110100010011001001000010101000011111001101001011110010000011011011101" + "111001101011110001011110100110111011001111001011000010100110000100011101100111010000111011011011001" + "111101101011100110000100110110001101000100001011100010100011001100100001100111001110011011011010001" + "111100101010111111010110000101111110101100001011100110101111110101100001011111101011000011010010001" + "111000101011000111110010010110001111100100101011100100110001111100100101100011111001001011010110001" + "110000101010000110001100100100001100011001001011101100100001100011001001000011000110010011010111001" + "110001101010111111010110000101111110101100001001101100111110110010010001101111101001111011010111101" + "110001001011111101011100110111100010111100101000101100100011011011110001010010000011110011010011101" + "111001001010000100001100110110011100011010001000101000110111101111001101100001001100111011010011001" + "111101001010111101000011110111100011001101001001101000110100001110000101101111110100111011010001001" + "111101011010111100000110110100110001100111101011101000101100010000011101000001111011011011010001101" + "111101010011001100001010000100010001000000101011001000100001100110100001110111001000100011010000101" + "111001010011100101100100000111000110111000101011001100111110010010001101110001011101100011011000101" + }, + /* 68*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 4, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 26, 99, 1, "4 columns x 26 rows, variant 31", + "110010001010000110001100100111101010111100001000011010101001110011100001101000001011000011110100101" + "111010001010100001111100110100101111001000001000111010111011011110011001101100111100100011110101101" + "111011001010011000010001110110011101000011101000110010110111100101100001000001010111100011110101001" + "110011001010001100110010000110011100111001101000100010111101010111100001010011100111000011100101001" + "110111001011111010001001100101000011111001101001100010100101111001000001110110111100110011101101001" + "110111101011011101100111100100110000100011101001110010110011101000011101101111001011000011101001001" + "110011101011000110100010000100011001100100001001111010110011100111001101111010101111000011101001101" + "111011101011010111111011110111110100010011001011111010101000011111001101001011110010000011101011101" + "111001101011110001011110100110111011001111001011110010100110000100011101100111010000111011101011001" + "111101101011100110000100110110001101000100001011110110100011001100100001100111001110011011101010001" + "111100101011111101010111000110101111110111101001110110111110100010011001010000111110011011001010001" + "111000101010110011100111110111100010111101001001110100110111011001111001001100001000111011001011001" + "110000101010011001111001110111001100001001101001100100110001101000100001000110011001000011001011101" + "110001101011100011001110100111111010101110001001100110110101111110111101111101000100110011001001101" + "110001001010110110011110000101100111001111101001000110111100010111101001101110110011110011001101101" + "111001001011110111010110000100110011110011101001000010111001100001001101100011010001000011101101101" + "111101001011000010111101100111000110011101001011000010101111110101100001011111101011000011100101101" + "111101011011000111110010010110001111100100101011100010110001111100100101100011111001001011000101101" + "111101010011000111011000010101100001110011001011100110101100111011000001000010010000100011000101001" + "111001010011100100111000110110000100011100101011100100111100101010000001001111100100111011001101001" + "111011010010110100011100000101101000000111001011101100100000110010011101100111110001010011011101001" + "111010010010010000110000110110000100010110001001101100100001000110011001010011101110000011011001001" + "111010011011110001100110100110001000011100101000101100110000010111010001111101100110011011011001101" + "111010111010011111001100100100010100001111001000101000100111100000101001001111100111011011011011101" + "111010110011000110000100100100100001001000001001101000100000100011001101000011001100001011011011001" + "111010100011110100010010000111000001101110101011101000111001001110011001101111101001111011011010001" + }, + /* 69*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 4, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 32, 99, 1, "4 columns x 32 rows, variant 32", + "111011010011000111110010010111010101111110001011101100101001100111110001010000010001111011011101001" + "111010010011110110100001110110010001001100001001101100110010000110111001110001011001111011011001001" + "111010011011100100000110100100110101111110001000101100100110010111111001111101110011001011011001101" + "111010111011011111010100000110111110001000101000101000111010101111110001010011001111100011011011101" + "111010110011010000010110000111101101000011101001101000110010001001100001100100001101110011011011001" + "111010100011011001111001000111001000001101001011101000100110101111110001001100101111110011011010001" + "110010100010000010101111000110111110101000001011001000110111110001000101110101011111100011010010001" + "110010110010100111001110000110100000101100001011001100111101101000011101100100010011000011010110001" + "110010111011101101111001100110110011110010001011000100111001000001101001001101011111100011010111001" + "110010011011011110010110000100000101011110001011000110110111110101000001101111100010001011010111101" + "110011011011110101011110000101001110011100001010000110110100000101100001111011010000111011010011101" + "111011011010010111100100000111011011110011001010001110110110011110010001110010000011010011010011001" + "111001011011001110100001110110111100101100001010001100100000101011110001101111101010000011010001001" + "110001011011001110011100110111101010111100001010011100101001110011100001101000001011000011010001101" + "110001010010100001111100110100101111001000001010011000111011011110011001101100111100100011010000101" + "110011010010011000010001110110011101000011101010111000110111100101100001000001010111100011011000101" + "110111010010001100110010000110011100111001101010110000111101010111100001010011100111000011001000101" + "110110010011111010001001100101000011111001101010010000100101111001000001110110111100110011101000101" + "110110011011011101100111100100110000100011101011010000110011101000011101101111001011000011101100101" + "110110111011000110100010000100011001100100001001010000110011100111001101000011000110010011001100101" + "110110110010111111010110000101111110101100001001011000101111110101100001011111101011000011011100101" + "110110100011000111110010010110001111100100101001011100110001111100100101100011111001001011011110101" + "110100100010000110001100100100001100011001001011011100110111100111000101100001100010100011001110101" + "110101100011111010000101100111001000001101001011011110111100011011010001111101010001100011101110101" + "110101110010000001110010110101110100001100001011001110101001001111000001111110101100100011100110101" + "110101111011000010110011100101101111100111101001001110110011000100001001001101110110000011110110101" + "110100111011110100011011000100101111100110001001101110100100111100001001111000100100100011110010101" + "110100110011100111101001110111100101111101101000101110100000100100111101111110101100010011100010101" + "110100010010011000011010000100001100011001001000100110100110000110100001101100100100000011000010101" + "110100011010110111111000110111110000101011001000110110111010001100000101111000110110001011000110101" + "110100001010110000100001110101110000011011101000010110101110000010110001101111110011010011000100101" + "110110001010010000001001000110011101100001001000010010111110010101111101110001000100111011100100101" + }, + /* 70*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 4, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 38, 99, 1, "4 columns x 38 rows, variant 33", + "110001001011000111110010010111010101111110001000101100101001100111110001010000010001111011010011101" + "111001001011110110100001110110010001001100001000101000110010000110111001110001011001111011010011001" + "111101001011100100000110100100110101111110001001101000100110010111111001111101110011001011010001001" + "111101011011011111010100000110111110001000101011101000111010101111110001010011001111100011010001101" + "111101010011010000010110000111101101000011101011001000110010001001100001100100001101110011010000101" + "111001010011011001111001000111001000001101001011001100100110101111110001001100101111110011011000101" + "111011010010000010101111000110111110101000001011000100110111110001000101110101011111100011001000101" + "111010010010100111001110000110100000101100001011000110111101101000011101100100010011000011101000101" + "111010011011101101111001100110110011110010001010000110111001000001101001001101011111100011101100101" + "111010111011011110010110000100000101011110001010001110110111110101000001101111100010001011001100101" + "111010110011110101011110000101001110011100001010001100110100000101100001111011010000111011011100101" + "111010100010010111100100000111011011110011001010011100110110011110010001110010000011010011011110101" + "110010100011001110100001110110111100101100001010011000100000101011110001101111101010000011001110101" + "110010110011001110011100110111101010111100001010111000101001110011100001101000001011000011101110101" + "110010111010100001111100110100101111001000001010110000111011011110011001101100111100100011100110101" + "110010011010011000010001110110011101000011101010010000110111100101100001000001010111100011110110101" + "110011011010001100110010000110011100111001101011010000111101010111100001010011100111000011110010101" + "111011011011111010001001100101000011111001101001010000100101111001000001110110111100110011100010101" + "111001011011011101100111100100110000100011101001011000110011101000011101101111001011000011000010101" + "110001011011000110100010000100011001100100001001011100110011100111001101111010101111000011000110101" + "110001010011010111111011110111110100010011001011011100101000011111001101001011110010000011000100101" + "110011010011110001011110100110111011001111001011011110100110000100011101100111010000111011100100101" + "110111010011100110000100110110001101000100001011001110100011001100100001100111001110011011110100101" + "110110010010111111010110000101111110101100001001001110101111110101100001011111101011000011110101101" + "110110011011000111110010010110001111100100101001101110110001111100100101100011111001001011110101001" + "110110111010000110001100100100001100011001001000101110100001100011001001000011000110010011100101001" + "110110110010111111010110000101111110101100001000100110101111110101100001011111101011000011101101001" + "110110100011011111101101000100001100101110001000110110110110010111100001001111011000110011101001001" + "110100100011100011101000100110000010001001101000010110111101111010000101000001000011011011101001101" + "110101100011100010001110110110110001111000101000010010101111101000011101001000011110010011101011101" + "110101110011010100001111100101111101110011001000011010101110000010110001011000100000111011101011001" + "110101111010000100010100000110001101100001101000111010111101110100001101011101111001100011101010001" + "110100111011101001110000110100100111101000001000110010111111001010111001110100000011010011001010001" + "110100110010001111010000100111111010011000101000100010101001000011110001011110010001000011001011001" + "110100010011110111101001000110011110111000101001100010110011001010000001101110110000100011001011101" + "110100011011001011110000110100110001111100101001110010101110011011111101001011110100000011001001101" + "110100001011001111001011000110011111010001001001111010100100101111000001011100000100011011001101101" + "110110001011011101111001110111101101100111101011111010110100011001110001100110100001000011101101101" + }, + /* 71*/ { BARCODE_MICROPDF417, -1, UNICODE_MODE, -1, 4, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 44, 99, 1, "4 columns x 44 rows, variant 34", + "110010001010000110001100100111101010111100001011000010101001110011100001101000001011000011010001001" + "111010001010100001111100110100101111001000001011100010111011011110011001101100111100100011010001101" + "111011001010011000010001110110011101000011101011100110110111100101100001000001010111100011010000101" + "110011001010001100110010000110011100111001101011100100111101010111100001010011100111000011011000101" + "110111001011111010001001100101000011111001101011101100100101111001000001110110111100110011001000101" + "110111101011011101100111100100110000100011101001101100110011101000011101101111001011000011101000101" + "110011101011000110100010000100011001100100001000101100110011100111001101111010101111000011101100101" + "111011101011010111111011110111110100010011001000101000101000011111001101001011110010000011001100101" + "111001101011110001011110100110111011001111001001101000100110000100011101100111010000111011011100101" + "111101101011100110000100110110001101000100001011101000100011001100100001100111001110011011011110101" + "111100101011111101010111000110101111110111101011001000111110100010011001010000111110011011001110101" + "111000101010110011100111110111100010111101001011001100110111011001111001001100001000111011101110101" + "110000101010011001111001110111001100001001101011000100110001101000100001000110011001000011100110101" + "110001101011100011001110100111111010101110001011000110110101111110111101111101000100110011110110101" + "110001001010110110011110000101100111001111101010000110111100010111101001101110110011110011110010101" + "111001001011110111010110000100110011110011101010001110111001100001001101100011010001000011100010101" + "111101001011000010111101100111000110011101001010001100111111010101110001101011111101111011000010101" + "111101011010100000100011110101101100111100001010011100101100111001111101111000101111010011000110101" + "111101010011100010110011110111101110101100001010011000100110011110011101110011000010011011000100101" + "111001010011111011100110010110000101111011001010111000111000110011101001111110101011100011100100101" + "111011010010100110011111000101000001000111101010110000101101100111100001011001110011111011110100101" + "111010010011001000011011100111000101100111101010010000111101110101100001001100111100111011110101101" + "111010011010011001011111100111110111001100101011010000110000101111011001110001100111010011110101001" + "111010111011101010111111000101001100111110001001010000101000001000111101011011001111000011100101001" + "111010110011001000100110000110010000110111001001011000111000101100111101111011101011000011101101001" + "111010100010011010111111000100110010111111001001011100111110111001100101100001011110110011101001001" + "110010100011011111000100010111010101111110001011011100101001100111110001010000010001111011101001101" + "110010110011110110100001110110010001001100001011011110110010000110111001110001011001111011101011101" + "110010111011100100000110100100110101111110001011001110100110010111111001111101110011001011101011001" + "110010011011011111010100000110111110001000101001001110110001111100100101100011111001001011101010001" + "110011011010000110001100100100001100011001001001101110100001100011001001000011000110010011001010001" + "111011011010111111010110000101111110101100001000101110111000100001101001111011110111101011001011001" + "111001011010101100011111000101111000010010001000100110101000100011110001101110110011110011001011101" + "110001011010001011000110000111001000110111101000110110111101010111100001011000011100110011001001101" + "110001010011001001110100000111100010100000101000010110111100111011101001111001010000001011001101101" + "110011010010011110110001100100011101101110001000010010100101000001111001111010111110110011101101101" + "110111010011100011001011000110000110110011001000011010101111001111010001100001001100111011100101101" + "110110010011110001000110110111101001000010001000111010110001001110100001011111010000111011000101101" + "110110011010001101001110000101110000010001101000110010100111000110011101000011010000111011000101001" + "110110111010000010100010000110001110110000101000100010110110110110000001000011000110100011001101001" + "110110110011110001100110010111101001110111001001100010111000100110100001001110100111110011011101001" + "110110100011000101101111110100100001101111101001110010110000011101011101001011011111000011011001001" + "110100100011100011101100110111010111001111101001111010100001000110110001110100110111100011011001101" + "110101100011001000011101000111110100101100001011111010110101111101110001101101111010000011011011101" + }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; diff --git a/backend/tests/test_postal.c b/backend/tests/test_postal.c index 5eab3c77..92dfd49f 100644 --- a/backend/tests/test_postal.c +++ b/backend/tests/test_postal.c @@ -167,6 +167,8 @@ static void test_japanpost(int index, int debug) { /* 0*/ { "123", 0, 0, 8, 3, 133, "Check 3" }, /* 1*/ { "123456-AB", 0, 0, 8, 3, 133, "Check 10" }, /* 2*/ { "123456", 0, 0, 8, 3, 133, "Check 11" }, + /* 3*/ { "999980-KZ", 0, 0, 8, 3, 133, "Check 18" }, + /* 4*/ { "987654-TU", 0, 0, 8, 3, 133, "Check 0" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -205,50 +207,57 @@ static void test_input(int index, int debug) { struct item { int symbology; + int option_2; + float height; char *data; int ret; int expected_rows; int expected_width; + float expected_height; }; // s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<")) struct item data[] = { - /* 0*/ { BARCODE_FLAT, "1234567890", 0, 1, 90 }, - /* 1*/ { BARCODE_FLAT, "A", ZINT_ERROR_INVALID_DATA, -1, -1 }, - /* 2*/ { BARCODE_POSTNET, "12345", 0, 2, 63 }, - /* 3*/ { BARCODE_POSTNET, "123457689", 0, 2, 103 }, - /* 4*/ { BARCODE_POSTNET, "12345768901", 0, 2, 123 }, - /* 5*/ { BARCODE_POSTNET, "0", ZINT_WARN_NONCOMPLIANT, 2, 23 }, - /* 6*/ { BARCODE_POSTNET, "1234", ZINT_WARN_NONCOMPLIANT, 2, 53 }, - /* 7*/ { BARCODE_POSTNET, "123456", ZINT_WARN_NONCOMPLIANT, 2, 73 }, - /* 8*/ { BARCODE_POSTNET, "123456789012", ZINT_WARN_NONCOMPLIANT, 2, 133 }, - /* 9*/ { BARCODE_POSTNET, "1234A", ZINT_ERROR_INVALID_DATA, -1, -1 }, - /* 10*/ { BARCODE_FIM, "a", 0, 1, 17 }, - /* 11*/ { BARCODE_FIM, "b", 0, 1, 17 }, - /* 12*/ { BARCODE_FIM, "c", 0, 1, 17 }, - /* 13*/ { BARCODE_FIM, "d", 0, 1, 17 }, - /* 14*/ { BARCODE_FIM, "ad", ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 15*/ { BARCODE_FIM, "e", ZINT_ERROR_INVALID_DATA, -1, -1 }, - /* 16*/ { BARCODE_RM4SCC, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 3, 299 }, - /* 17*/ { BARCODE_RM4SCC, "a", 0, 3, 19 }, // Converts to upper - /* 18*/ { BARCODE_RM4SCC, ",", ZINT_ERROR_INVALID_DATA, -1, -1 }, - /* 19*/ { BARCODE_JAPANPOST, "1234567890-ABCDEFGH", 0, 3, 133 }, - /* 20*/ { BARCODE_JAPANPOST, "a", 0, 3, 133 }, // Converts to upper - /* 21*/ { BARCODE_JAPANPOST, ",", ZINT_ERROR_INVALID_DATA, -1, -1 }, - /* 22*/ { BARCODE_KOREAPOST, "123456", 0, 1, 167 }, - /* 23*/ { BARCODE_KOREAPOST, "A", ZINT_ERROR_INVALID_DATA, -1, -1 }, - /* 24*/ { BARCODE_PLANET, "12345678901", 0, 2, 123 }, - /* 25*/ { BARCODE_PLANET, "1234567890123", 0, 2, 143 }, - /* 26*/ { BARCODE_PLANET, "0", ZINT_WARN_NONCOMPLIANT, 2, 23 }, - /* 27*/ { BARCODE_PLANET, "1234567890", ZINT_WARN_NONCOMPLIANT, 2, 113 }, - /* 28*/ { BARCODE_PLANET, "123456789012", ZINT_WARN_NONCOMPLIANT, 2, 133 }, - /* 29*/ { BARCODE_PLANET, "12345678901234", ZINT_WARN_NONCOMPLIANT, 2, 153 }, - /* 30*/ { BARCODE_PLANET, "1234567890A", ZINT_ERROR_INVALID_DATA, -1, -1 }, - /* 31*/ { BARCODE_KIX, "0123456789ABCDEFGH", 0, 3, 143 }, - /* 32*/ { BARCODE_KIX, "a", 0, 3, 7 }, // Converts to upper - /* 33*/ { BARCODE_KIX, ",", ZINT_ERROR_INVALID_DATA, -1, -1 }, - /* 34*/ { BARCODE_DAFT, "DAFT", 0, 3, 7 }, - /* 35*/ { BARCODE_DAFT, "a", 0, 3, 1 }, // Converts to upper - /* 36*/ { BARCODE_DAFT, "B", ZINT_ERROR_INVALID_DATA, -1, -1 }, + /* 0*/ { BARCODE_FLAT, -1, 0, "1234567890", 0, 1, 90, 50 }, + /* 1*/ { BARCODE_FLAT, -1, 0, "A", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, + /* 2*/ { BARCODE_POSTNET, -1, 0, "12345", 0, 2, 63, 12 }, + /* 3*/ { BARCODE_POSTNET, -1, 0, "123457689", 0, 2, 103, 12 }, + /* 4*/ { BARCODE_POSTNET, -1, 0, "12345768901", 0, 2, 123, 12 }, + /* 5*/ { BARCODE_POSTNET, -1, 0, "0", ZINT_WARN_NONCOMPLIANT, 2, 23, 12 }, + /* 6*/ { BARCODE_POSTNET, -1, 0, "1234", ZINT_WARN_NONCOMPLIANT, 2, 53, 12 }, + /* 7*/ { BARCODE_POSTNET, -1, 0, "123456", ZINT_WARN_NONCOMPLIANT, 2, 73, 12 }, + /* 8*/ { BARCODE_POSTNET, -1, 0, "123456789012", ZINT_WARN_NONCOMPLIANT, 2, 133, 12 }, + /* 9*/ { BARCODE_POSTNET, -1, 0, "1234A", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, + /* 10*/ { BARCODE_POSTNET, -1, 0.9, "12345", 0, 2, 63, 1 }, + /* 11*/ { BARCODE_FIM, -1, 0, "a", 0, 1, 17, 50 }, + /* 12*/ { BARCODE_FIM, -1, 0, "b", 0, 1, 17, 50 }, + /* 13*/ { BARCODE_FIM, -1, 0, "c", 0, 1, 17, 50 }, + /* 14*/ { BARCODE_FIM, -1, 0, "d", 0, 1, 17, 50 }, + /* 15*/ { BARCODE_FIM, -1, 0, "ad", ZINT_ERROR_TOO_LONG, -1, -1, -1 }, + /* 16*/ { BARCODE_FIM, -1, 0, "e", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, + /* 17*/ { BARCODE_RM4SCC, -1, 0, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 3, 299, 8 }, + /* 18*/ { BARCODE_RM4SCC, -1, 0, "a", 0, 3, 19, 8 }, // Converts to upper + /* 19*/ { BARCODE_RM4SCC, -1, 0, ",", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, + /* 20*/ { BARCODE_JAPANPOST, -1, 0, "1234567890-ABCDEFGH", 0, 3, 133, 8 }, + /* 21*/ { BARCODE_JAPANPOST, -1, 0, "a", 0, 3, 133, 8 }, // Converts to upper + /* 22*/ { BARCODE_JAPANPOST, -1, 0, ",", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, + /* 23*/ { BARCODE_KOREAPOST, -1, 0, "123456", 0, 1, 167, 50 }, + /* 24*/ { BARCODE_KOREAPOST, -1, 0, "A", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, + /* 25*/ { BARCODE_PLANET, -1, 0, "12345678901", 0, 2, 123, 12 }, + /* 26*/ { BARCODE_PLANET, -1, 0, "1234567890123", 0, 2, 143, 12 }, + /* 27*/ { BARCODE_PLANET, -1, 0, "0", ZINT_WARN_NONCOMPLIANT, 2, 23, 12 }, + /* 28*/ { BARCODE_PLANET, -1, 0, "1234567890", ZINT_WARN_NONCOMPLIANT, 2, 113, 12 }, + /* 29*/ { BARCODE_PLANET, -1, 0, "123456789012", ZINT_WARN_NONCOMPLIANT, 2, 133, 12 }, + /* 30*/ { BARCODE_PLANET, -1, 0, "12345678901234", ZINT_WARN_NONCOMPLIANT, 2, 153, 12 }, + /* 31*/ { BARCODE_PLANET, -1, 0, "1234567890A", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, + /* 32*/ { BARCODE_KIX, -1, 0, "0123456789ABCDEFGH", 0, 3, 143, 8 }, + /* 33*/ { BARCODE_KIX, -1, 0, "a", 0, 3, 7, 8 }, // Converts to upper + /* 34*/ { BARCODE_KIX, -1, 0, ",", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, + /* 35*/ { BARCODE_DAFT, -1, 0, "DAFT", 0, 3, 7, 8 }, + /* 36*/ { BARCODE_DAFT, -1, 0, "a", 0, 3, 1, 8 }, // Converts to upper + /* 37*/ { BARCODE_DAFT, -1, 0, "B", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, + /* 38*/ { BARCODE_DAFT, -1, 1.9, "DAFT", 0, 3, 7, 2 }, + /* 39*/ { BARCODE_DAFT, 500, 0.9, "DAFT", 0, 3, 7, 2 }, // 50% ratio + /* 40*/ { BARCODE_DAFT, 500, 0.4, "DAFT", 0, 3, 7, 8 }, // 50% ratio }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -263,7 +272,10 @@ static void test_input(int index, int debug) { symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - length = testUtilSetSymbol(symbol, data[i].symbology, -1 /*input_mode*/, -1 /*eci*/, -1 /*option_1*/, -1, -1, -1 /*output_options*/, data[i].data, -1, debug); + length = testUtilSetSymbol(symbol, data[i].symbology, -1 /*input_mode*/, -1 /*eci*/, -1 /*option_1*/, data[i].option_2, -1, -1 /*output_options*/, data[i].data, -1, debug); + if (data[i].height) { + symbol->height = data[i].height; + } ret = ZBarcode_Encode(symbol, (unsigned char *) 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); @@ -271,6 +283,7 @@ static void test_input(int index, int debug) { if (ret < ZINT_ERROR) { assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows); assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width); + assert_equal(symbol->height, data[i].expected_height, "i:%d symbol->height %g != %g\n", i, symbol->height, data[i].expected_height); } ZBarcode_Delete(symbol); @@ -334,39 +347,42 @@ static void test_encode(int index, int generate, int debug) { /* 9*/ { BARCODE_KOREAPOST, "010230", 0, 1, 167, "Verified manually against tec-it", "10001000100000000000100010000000000010001000100000001000000010001000100010001000100000000000100000000001000100010001000100010001000000000001000000010001000000010001000" }, - /* 10*/ { BARCODE_PLANET, "4012345235636", 0, 2, 143, "USPS Publication 197 (2004) Exhibit 4; verified manually against tec-it", + /* 10*/ { BARCODE_KOREAPOST, "923457", 0, 1, 168, "Verified manually against tec-it", + "000010001000100000001000100000001000000010001000000010001000000010001000100000000000100010001000000010000000100010001000100010000000100000001000100010001000000000001000" + }, + /* 11*/ { BARCODE_PLANET, "4012345235636", 0, 2, 143, "USPS Publication 197 (2004) Exhibit 4; verified manually against tec-it", "10100010100000001010101010100000101000100010100000101000101000100010001010100010001010000010100010001010000010101010000010100000101010000010101" "10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101" }, - /* 11*/ { BARCODE_PLANET, "40123452356", 0, 2, 123, "Verified manually against tec-it", + /* 12*/ { BARCODE_PLANET, "40123452356", 0, 2, 123, "Verified manually against tec-it", "101000101000000010101010101000001010001000101000001010001010001000100010101000100010100000101000100010100000101010001000101" "101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101" }, - /* 12*/ { BARCODE_PLANET, "5020140235635", 0, 2, 143, "USPS Publication 197 (2004) Exhibit 6; verified manually against tec-it", + /* 13*/ { BARCODE_PLANET, "5020140235635", 0, 2, 143, "USPS Publication 197 (2004) Exhibit 6; verified manually against tec-it", "10100010001000001010101010001000000010101010101000001000101000000010101010100010001010000010100010001010000010101010000010100010001010001010001" "10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101" }, - /* 13*/ { BARCODE_KIX, "2500GG30250", 0, 3, 87, "PostNL Handleiding KIX code Section 2.1 Example 1", + /* 14*/ { BARCODE_KIX, "2500GG30250", 0, 3, 87, "PostNL Handleiding KIX code Section 2.1 Example 1", "000010100000101000001010000010100010100000101000000010100000101000001010000010100000101" "101010101010101010101010101010101010101010101010101010101010101010101010101010101010101" "001010001010000000001010000010101000100010001000100000100000101000101000101000000000101" }, - /* 14*/ { BARCODE_KIX, "2130VA80430", 0, 3, 87, "PostNL Handleiding KIX code Section 2.1 Example 2", + /* 15*/ { BARCODE_KIX, "2130VA80430", 0, 3, 87, "PostNL Handleiding KIX code Section 2.1 Example 2", "000010100000101000001010000010101010000000100010001000100000101000001010000010100000101" "101010101010101010101010101010101010101010101010101010101010101010101010101010101010101" "001010000010001010000010000010100010001010001000001010000000101010001000100000100000101" }, - /* 15*/ { BARCODE_KIX, "1231GF156X2", 0, 3, 87, "PostNL Handleiding KIX code Section 2.1 Example 3", + /* 16*/ { BARCODE_KIX, "1231GF156X2", 0, 3, 87, "PostNL Handleiding KIX code Section 2.1 Example 3", "000010100000101000001010000010100010100000101000000010100000101000100010101000000000101" "101010101010101010101010101010101010101010101010101010101010101010101010101010101010101" "001000100010100010000010001000101000100010000010001000101010000000001010100000100010100" }, - /* 16*/ { BARCODE_KIX, "1231FZ13Xhs", 0, 3, 87, "PostNL Handleiding KIX code Section 2.1 Example 4", + /* 17*/ { BARCODE_KIX, "1231FZ13Xhs", 0, 3, 87, "PostNL Handleiding KIX code Section 2.1 Example 4", "000010100000101000001010000010100010100010100000000010100000101010100000001010001000100" "101010101010101010101010101010101010101010101010101010101010101010101010101010101010101" "001000100010100010000010001000101000001010100000001000101000001010000010101000001000100" }, - /* 17*/ { BARCODE_DAFT, "DAFTTFADFATDTATFT", 0, 3, 33, "Verified manually against tec-it", + /* 18*/ { BARCODE_DAFT, "DAFTTFADFATDTATFT", 0, 3, 33, "Verified manually against tec-it", "001010000010100010100000001000100" "101010101010101010101010101010101" "100010000010001010000010000000100" diff --git a/backend/tests/test_qr.c b/backend/tests/test_qr.c index 63656abb..91cdfeb8 100644 --- a/backend/tests/test_qr.c +++ b/backend/tests/test_qr.c @@ -269,6 +269,7 @@ static void test_qr_input(int index, int generate, int debug) { /*123*/ { UNICODE_MODE, 170, -1, "?", 0, 170, "78 0A A4 01 3F 00 EC 11 EC", "ECI-170 B1 (ASCII invariant)" }, /*124*/ { DATA_MODE, 899, -1, "\200", 0, 899, "78 38 34 01 80 00 EC 11 EC", "ECI-899 B1 (8-bit binary)" }, /*125*/ { UNICODE_MODE, 900, -1, "é", 0, 900, "78 38 44 02 C3 A9 00 EC 11", "ECI-900 B2 (no conversion)" }, + /*126*/ { UNICODE_MODE, 16384, -1, "é", 0, 16384, "7C 04 00 04 02 C3 A9 00 EC", "ECI-16384 B2 (no conversion)" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -333,6 +334,7 @@ static void test_qr_gs1(int index, int generate, int debug) { /* 9*/ { GS1_MODE, "[91]%%%[20]12", 0, "52 06 99 6D A9 B5 36 A6 B0 00 21 00 EC", "A10(13)" }, /* 10*/ { GS1_MODE, "[91]A%%%%1234567890123AA%", 0, "52 05 99 63 D1 B5 36 A6 D4 98 40 D1 ED C8 C5 40 C3 20 21 CC DA 80", "A7(11) N13 A3(4)" }, /* 11*/ { GS1_MODE, "[91]%23%%6789%%%34567%%%%234%%%%%", 0, "(34) 52 17 19 6D A8 17 76 A6 D4 22 A5 C7 6A 6D 4D A8 22 C7 39 61 DA 9B 53 6A 6B 01 17 B5", "A31(46)" }, + /* 12*/ { GS1_MODE, "[91]ABCDEFGHI[92]ABCDEF", 0, "52 0A 19 63 9A 8A 54 2A E1 6A 06 5C E6 A2 95 0A", "A20(23)" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -1450,6 +1452,7 @@ static void test_microqr_options(int index, int debug) { /* 46*/ { "ABCDEFGHIJABCDEFGH", 2, 4, 0, 0, 17, -1 }, // 18 alphanumerics, ECC 2, version 4 /* 47*/ { "ABCDEFGHIJABCDEFGH", 3, 4, ZINT_ERROR_TOO_LONG, -1, 0, -1 }, /* 48*/ { "ABCDEFGHIJABC", 3, 4, 0, 0, 17, -1 }, // 13 alphanumerics, ECC 3 (Q), version 4 + /* 49*/ { "123456789012345678901234567890123456", -1, -1, ZINT_ERROR_TOO_LONG, -1, 0, -1 }, // 35 absolute max }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -2139,6 +2142,8 @@ static void test_upnqr_input(int index, int generate, int debug) { /* 0*/ { UNICODE_MODE, "ĄŔ", 0, "(415) 70 44 00 02 A1 C0 00 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC", "ECI-4 B2 (ISO 8859-2)" }, /* 1*/ { UNICODE_MODE, "é", 0, "(415) 70 44 00 01 E9 00 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11", "ECI-4 B1 (ISO 8859-2)" }, /* 2*/ { UNICODE_MODE, "β", ZINT_ERROR_INVALID_DATA, "Error 572: Invalid character in input data for ECI 4", "β not in ISO 8859-2" }, + /* 3*/ { DATA_MODE, "\300\241", 0, "(415) 70 44 00 02 C0 A1 00 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC", "ŔĄ" }, + /* 4*/ { GS1_MODE, "[20]12", ZINT_ERROR_INVALID_OPTION, "Error 220: Selected symbology does not support GS1 mode", "" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -2161,7 +2166,9 @@ static void test_upnqr_input(int index, int generate, int debug) { ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d\n", i, ret, data[i].ret); - assert_equal(symbol->eci, 4, "i:%d ZBarcode_Encode symbol->eci %d != 4\n", i, symbol->eci); + if (ret < ZINT_ERROR) { + assert_equal(symbol->eci, 4, "i:%d ZBarcode_Encode symbol->eci %d != 4\n", i, symbol->eci); + } if (generate) { printf(" /*%3d*/ { %s, \"%s\", %s, \"%s\", \"%s\" },\n", diff --git a/backend/tests/testcommon.c b/backend/tests/testcommon.c index 29726992..d232da5f 100644 --- a/backend/tests/testcommon.c +++ b/backend/tests/testcommon.c @@ -2428,8 +2428,10 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int } else { bwipp_row_height[r] = symbol->row_height[r] ? symbol->row_height[r] : linear_row_height; } - /*fprintf(stderr, "bwipp_row_height[%d] %d, symbol->row_height[%d] %d\n", - r, bwipp_row_height[r], r, symbol->row_height[r]);*/ + if ((symbol->debug & ZINT_DEBUG_TEST_PRINT) && !(symbol->debug & ZINT_DEBUG_TEST_LESS_NOISY)) { + fprintf(stderr, "bwipp_row_height[%d] %d, symbol->row_height[%d] %g\n", + r, bwipp_row_height[r], r, symbol->row_height[r]); + } } if ((symbol->input_mode & 0x07) == UNICODE_MODE && ZBarcode_Cap(symbology, ZINT_CAP_ECI) diff --git a/backend/tests/tools/bwipp_dump-barcode.ps.diff b/backend/tests/tools/bwipp_dump-barcode.ps.diff index 9ceeeade..0b62606b 100644 --- a/backend/tests/tools/bwipp_dump-barcode.ps.diff +++ b/backend/tests/tools/bwipp_dump-barcode.ps.diff @@ -1,6 +1,6 @@ ---- ../../../../postscriptbarcode/build/monolithic/barcode.ps 2021-03-22 15:06:47.498155878 +0000 -+++ ../tools/bwipp_dump.ps 2021-03-27 03:44:50.998203506 +0000 -@@ -26198,34 +26198,80 @@ +--- /home/mburke/code/bwipp/postscriptbarcode/build/monolithic/barcode.ps 2021-08-05 14:58:19.638816396 +0100 ++++ backend/tests/tools/bwipp_dump.ps 2021-08-05 14:59:04.030459474 +0100 +@@ -26289,34 +26289,80 @@ pop } ifelse @@ -100,7 +100,7 @@ end -@@ -26284,7 +26330,7 @@ +@@ -26375,7 +26421,7 @@ pop } ifelse @@ -109,7 +109,7 @@ % Get the result of encoding with ean8 and gs1-cc options (lintype) (ean8) put -@@ -26292,29 +26338,75 @@ +@@ -26383,29 +26429,75 @@ options (dontdraw) true put % Plot the linear part @@ -205,7 +205,7 @@ end -@@ -26373,34 +26465,80 @@ +@@ -26464,34 +26556,80 @@ pop } ifelse @@ -305,7 +305,7 @@ end -@@ -26474,34 +26612,80 @@ +@@ -26565,34 +26703,80 @@ /opt options >> def @@ -405,7 +405,7 @@ end -@@ -26560,7 +26744,7 @@ +@@ -26651,7 +26835,7 @@ pop } ifelse @@ -414,7 +414,7 @@ options (lintype) (databaromni) put options (linkage) true put -@@ -26571,7 +26755,7 @@ +@@ -26662,7 +26846,7 @@ linear options //databaromni exec dup (sbs) get /linsbs exch def dup (bhs) get 0 get 72 mul /linheight exch def @@ -423,7 +423,7 @@ % Plot the separator /sepfinder { -@@ -26602,20 +26786,66 @@ +@@ -26693,20 +26877,66 @@ sep 0 [0 0 0] putinterval sep sep length 4 sub [0 0 0 0] putinterval 18 sepfinder 64 sepfinder @@ -502,7 +502,7 @@ end -@@ -26673,7 +26903,7 @@ +@@ -26764,7 +26994,7 @@ pop } ifelse @@ -511,7 +511,7 @@ options (lintype) (databarstacked) put options (linkage) true put -@@ -26684,7 +26914,7 @@ +@@ -26775,7 +27005,7 @@ linear options //databarstacked exec dup (pixs) get 0 2 index (pixx) get getinterval /bot exch def dup (pixy) get /linheight exch def @@ -520,7 +520,7 @@ % Plot the separator /sepfinder { -@@ -26712,20 +26942,52 @@ +@@ -26803,20 +27033,52 @@ sep 0 [ 0 0 0 0 ] putinterval sep sep length 4 sub [ 0 0 0 0 ] putinterval 18 sepfinder @@ -585,7 +585,7 @@ end -@@ -26783,7 +27045,7 @@ +@@ -26874,7 +27136,7 @@ pop } ifelse @@ -594,7 +594,7 @@ options (lintype) (databarstackedomni) put options (linkage) true put -@@ -26794,7 +27056,7 @@ +@@ -26885,7 +27147,7 @@ linear options //databarstackedomni exec dup (pixs) get 0 2 index (pixx) get getinterval /bot exch def dup (pixy) get /linheight exch def @@ -603,7 +603,7 @@ % Plot the separator /sepfinder { -@@ -26822,20 +27084,52 @@ +@@ -26913,20 +27175,52 @@ sep 0 [ 0 0 0 0 ] putinterval sep sep length 4 sub [ 0 0 0 0 ] putinterval 18 sepfinder @@ -668,7 +668,7 @@ end -@@ -27008,7 +27302,7 @@ +@@ -27099,7 +27393,7 @@ pop } ifelse @@ -677,7 +677,7 @@ options (lintype) (databarlimited) put options (linkage) true put -@@ -27019,7 +27313,7 @@ +@@ -27110,7 +27404,7 @@ linear options //databarlimited exec dup (sbs) get /linsbs exch def dup (bhs) get 0 get 72 mul /linheight exch def @@ -686,7 +686,7 @@ % Plot the separator mark -@@ -27027,22 +27321,68 @@ +@@ -27118,22 +27412,68 @@ counttomark 1 sub array astore /sep exch def pop pop sep 0 [0 0 0] putinterval sep sep length 9 sub [0 0 0 0 0 0 0 0 0] putinterval % 4 + 5 right guard spaces @@ -769,7 +769,7 @@ end -@@ -27101,7 +27441,7 @@ +@@ -27192,7 +27532,7 @@ pop } ifelse @@ -778,7 +778,7 @@ options (lintype) (databarexpanded) put options (linkage) true put -@@ -27112,7 +27452,7 @@ +@@ -27203,7 +27543,7 @@ linear options //databarexpanded exec dup (sbs) get /linsbs exch def dup (bhs) get 0 get 72 mul /linheight exch def @@ -787,7 +787,7 @@ % Plot the separator /sepfinder { -@@ -27141,20 +27481,60 @@ +@@ -27232,20 +27572,60 @@ 18 98 bot length 13 sub {} for 69 98 bot length 13 sub {} for ] {sepfinder} forall @@ -860,7 +860,7 @@ end -@@ -27212,7 +27592,7 @@ +@@ -27303,7 +27683,7 @@ pop } ifelse @@ -869,7 +869,7 @@ options (lintype) (databarexpandedstacked) put options (linkage) true put -@@ -27223,7 +27603,7 @@ +@@ -27314,7 +27694,7 @@ linear options //databarexpandedstacked exec dup (pixs) get 0 2 index (pixx) get getinterval /bot exch def dup (pixy) get /linheight exch def @@ -878,7 +878,7 @@ % Plot the separator /sepfinder { -@@ -27249,21 +27629,49 @@ +@@ -27340,21 +27720,49 @@ 19 98 bot length 13 sub {} for 70 98 bot length 13 sub {} for ] {sepfinder} forall @@ -941,7 +941,7 @@ end -@@ -27322,7 +27730,7 @@ +@@ -27413,7 +27821,7 @@ pop } ifelse @@ -950,7 +950,7 @@ options (inkspread) (0) put options (dontdraw) true put -@@ -27349,35 +27757,87 @@ +@@ -27440,35 +27848,87 @@ linear << options {} forall >> //gs1-128 exec dup (sbs) get /linsbs exch def dup (bhs) get 0 get 72 mul /linheight exch def @@ -1052,7 +1052,7 @@ end -@@ -28810,3 +29270,189 @@ +@@ -28901,3 +29361,189 @@ % --END ENCODER hibcazteccode-- % --END TEMPLATE-- diff --git a/backend/tests/tools/bwipp_dump.ps.tar.xz b/backend/tests/tools/bwipp_dump.ps.tar.xz index b276afffd016c38dba29f3544c0e77e0a825679c..00132dff80444cfc38eb20a30c6a15d935553d62 100644 GIT binary patch literal 123640 zcmV(nK=Qx+H+ooF000E$*0e?f03iV!0000G&sfap8G!HqT>vp1$yUEJ0H%@u`y9Po z7M&UcT)M1GaJ=_k5-&EC?9&y3oPq(wllihGBaFZtocn0n#A!gnZiQBTx`jpI(CvX@I!Mf$I5ZeUS1~^xGG$e~yq zLQ`oM&pVF5aZ$$>e2}Kmz#TX{s1fc%4Yhq%v~IuFH)h`9ZE-DrlL z@D-~_LH?%@y5PyrQV5OLrmH#=sao@YtLAAnrHV_OKYaY2N;uy8DVi_XYYyiJtBtN$hJ?8CIbQaj`p z>+ykj+wsl|`CIXcQ-XUZd^3=2#H_ecHSHtyTa!^873LQqKUm-?8}-#EgLt)k`&R#A zp1`q01LA>h0Pzp!1Po}5BrY~W)5$AX@x8^{*Hn`Qw>t3=z#+ZYcP z;XuQ?Rw%C54vo1Qc=auD<=!>o<{jQh*Li&bkDPl^8j^yfY^@QyzSgOjOG^X%Cf2m1 zZM{czh@I#mbYClVc;fE3ZEwmT;}(<^hnl~C-nt(0y&>4J@I8A}IKN*w$u|w{tV^~^ z_}7z>2oNKZw9f^hu2*4V6MM9~yqp1@fehEAk54ZK=1Ox(@1!%~R`b-Y+2d}4J}SD2 z(^fb+q&*EM%o_G%stvnNhG<1VFGhsGNG~B+UImmz0T-;hWZZmUOhZ z;U>>oizbTQZYPcI;r}0z>;iKPQpT$FWW>e$#`Q2xM%ZFS;wH6)K-3tq=GXIaEqqg* z5ZjcFi$U@Oog;E!?)FnAF2ZQ352@K(K%85kq=72wOwl=}ZhZmD*I$%Vqx-2kFFvsY z)_@SG1HuD*R37`w0@h7X8OM%X74#I@%A`BMnJ>bsZjcWDgCmi8IlB5T1jz@gjOAoq zWyoLzN_==Qom0X8fHc@>U_(A4g)X4wN2B_y@@gNl38K`gRoeHF37zK91;XbD2{

jQ~lnrKP@RWQ_fB_80Yj_g^j`#b)0&xvIU# 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®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 ISO/IEC 16022:2006 Information technology - Automatic identification and data capture techniques - Data Matrix ECC200 bar code symbology specification > ISO/IEC 16023:2000 Information technology - International symbology - specification – MaxiCode + specification - MaxiCode > ISO/IEC 16388:2007 Information technology - Automatic identification and data capture techniques - Code 39 bar code symbology specification > ISO/IEC 18004:2015 Information technology - Automatic identification and data @@ -3093,6 +3093,9 @@ international standards: (rMQR) bar code symbology specification > ISO/IEC 16390:2007 Information technology - Automatic identification and data capture techniques - Interleaved 2 of 5 bar code symbology specification +> ISO/IEC 21471:2020 Information technology - Automatic identification and data + capture techniques - Extended rectangular data matrix (DMRE) bar code + symbology specification > Uniform Symbology Specification Code One (AIM Inc., 1994) > ANSI/AIM BC12-1998 - Uniform Symbology Specification Channel Code > ANSI/AIM BC6-2000 - Uniform Symbology Specification Code 49 @@ -3100,19 +3103,19 @@ international standards: > ANSI/HIBC 2.6-2016 - The Health Industry Bar Code (HIBC) Supplier Labeling Standard > AIM ISS-X-24 - Uniform Symbology Specification Codablock-F -> AIMD013 (v 1.34a) – Information technology – Automatic identification and data - capture techniques – Bar code symbology specification – DotCode (Revised - 19th Feb 2009) +> AIM TSC1705001 (v 4.0 Draft 0.15) - Information technology - Automatic + identification and data capture techniques - Bar code symbology + specification - DotCode (Revised 28th May 2019) > AIMD014 (v 1.63) - Information technology, Automatic identification and data capture techniques - Bar code symbology specification - Grid Matrix (Released 9th Dec 2008) -> AIMD/TSC15032-43 (v 0.99c) - International Technical Specification – +> AIMD/TSC15032-43 (v 0.99c) - International Technical Specification - Ultracode Symbology (Draft) (Released 4th Nov 2015) > GS1 General Specifications Release 21.0.1 (Jan 2021) -> AIM ITS/04-001 International Technical Standard – Extended Channel +> AIM ITS/04-001 International Technical Standard - Extended Channel Interpretations Part 1: Identification Schemes and Protocol (Released 24th May 2004) -> AIM ITS/04-023 International Technical Standard – Extended Channel +> AIM ITS/04-023 International Technical Standard - Extended Channel Interpretations Part 3: Register (Released 15th July 2004) diff --git a/frontend_qt/mainWindow.ui b/frontend_qt/mainWindow.ui index 201bbfc8..722982ee 100644 --- a/frontend_qt/mainWindow.ui +++ b/frontend_qt/mainWindow.ui @@ -22,7 +22,7 @@ 400 - 480 + 485 @@ -109,13 +109,13 @@ 0 - 320 + 325 16777215 - 320 + 325 diff --git a/win32/README b/win32/README index eda28bd2..ddb1743c 100644 --- a/win32/README +++ b/win32/README @@ -128,7 +128,8 @@ To build lpng use -DPNG_STATIC=ON -DPNG_SHARED=OFF -B build Recent versions of Qt no longer supply a specific component for Visual Studio -2015, but you can use "MSVC 2017 32-bit" instead as it's compatible. +2015 32-bit, but you can use "MSVC 2017 32-bit" or "MSVC 2019 32-bit" instead as +they're compatible. For information on building a standalone version of Zint Studio using Visual Studio 2015, see "frontend_qt\howto_build_qzint_using_msvs2015.txt"