Mercurial > hgrepos > Python2 > PyMuPDF
comparison mupdf-source/thirdparty/zint/backend/tests/test_qr.c @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1:1d09e1dec1d9 | 2:b50eed0cc0ef |
|---|---|
| 1 /* | |
| 2 libzint - the open source barcode library | |
| 3 Copyright (C) 2019-2024 Robin Stuart <rstuart114@gmail.com> | |
| 4 | |
| 5 Redistribution and use in source and binary forms, with or without | |
| 6 modification, are permitted provided that the following conditions | |
| 7 are met: | |
| 8 | |
| 9 1. Redistributions of source code must retain the above copyright | |
| 10 notice, this list of conditions and the following disclaimer. | |
| 11 2. Redistributions in binary form must reproduce the above copyright | |
| 12 notice, this list of conditions and the following disclaimer in the | |
| 13 documentation and/or other materials provided with the distribution. | |
| 14 3. Neither the name of the project nor the names of its contributors | |
| 15 may be used to endorse or promote products derived from this software | |
| 16 without specific prior written permission. | |
| 17 | |
| 18 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |
| 19 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| 20 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| 21 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE | |
| 22 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
| 23 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
| 24 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
| 25 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
| 26 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
| 27 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
| 28 SUCH DAMAGE. | |
| 29 */ | |
| 30 /* SPDX-License-Identifier: BSD-3-Clause */ | |
| 31 | |
| 32 #include "testcommon.h" | |
| 33 | |
| 34 static void test_qr_large(const testCtx *const p_ctx) { | |
| 35 int debug = p_ctx->debug; | |
| 36 | |
| 37 struct item { | |
| 38 int option_1; | |
| 39 int option_2; | |
| 40 int option_3; | |
| 41 char *pattern; | |
| 42 int length; | |
| 43 int ret; | |
| 44 int expected_rows; | |
| 45 int expected_width; | |
| 46 char *expected_errtxt; | |
| 47 }; | |
| 48 /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ | |
| 49 static const struct item data[] = { | |
| 50 /* 0*/ { 1, 32, -1, "A", 2840, 0, 145, 145, "" }, | |
| 51 /* 1*/ { 1, 32, -1, "A", 2841, ZINT_ERROR_TOO_LONG, -1, -1, "Error 569: Input too long for Version 32-L, requires 1956 codewords (maximum 1955)" }, | |
| 52 /* 2*/ { 1, 33, -1, "A", 3009, 0, 149, 149, "" }, | |
| 53 /* 3*/ { 1, 33, -1, "A", 3010, ZINT_ERROR_TOO_LONG, -1, -1, "Error 569: Input too long for Version 33-L, requires 2072 codewords (maximum 2071)" }, | |
| 54 /* 4*/ { 1, 34, -1, "A", 3183, 0, 153, 153, "" }, | |
| 55 /* 5*/ { 1, 34, -1, "A", 3184, ZINT_ERROR_TOO_LONG, -1, -1, "Error 569: Input too long for Version 34-L, requires 2192 codewords (maximum 2191)" }, | |
| 56 /* 6*/ { 1, 35, -1, "A", 3351, 0, 157, 157, "" }, | |
| 57 /* 7*/ { 1, 35, -1, "A", 3352, ZINT_ERROR_TOO_LONG, -1, -1, "Error 569: Input too long for Version 35-L, requires 2307 codewords (maximum 2306)" }, | |
| 58 /* 8*/ { 1, 36, -1, "A", 3537, 0, 161, 161, "" }, | |
| 59 /* 9*/ { 1, 36, -1, "A", 3538, ZINT_ERROR_TOO_LONG, -1, -1, "Error 569: Input too long for Version 36-L, requires 2435 codewords (maximum 2434)" }, | |
| 60 /* 10*/ { 1, 37, -1, "A", 3729, 0, 165, 165, "" }, | |
| 61 /* 11*/ { 1, 37, -1, "A", 3730, ZINT_ERROR_TOO_LONG, -1, -1, "Error 569: Input too long for Version 37-L, requires 2567 codewords (maximum 2566)" }, | |
| 62 /* 12*/ { 1, 38, -1, "A", 3927, 0, 169, 169, "" }, | |
| 63 /* 13*/ { 1, 38, -1, "A", 3928, ZINT_ERROR_TOO_LONG, -1, -1, "Error 569: Input too long for Version 38-L, requires 2703 codewords (maximum 2702)" }, | |
| 64 /* 14*/ { 1, 39, -1, "A", 4087, 0, 173, 173, "" }, | |
| 65 /* 15*/ { 1, 39, -1, "A", 4088, ZINT_ERROR_TOO_LONG, -1, -1, "Error 569: Input too long for Version 39-L, requires 2813 codewords (maximum 2812)" }, | |
| 66 /* 16*/ { 1, 40, -1, "A", 4296, 0, 177, 177, "" }, /* ISO/IEC 18004:2015 Section 6.1 (e) (2) */ | |
| 67 /* 17*/ { 1, 40, -1, "A", 4297, ZINT_ERROR_TOO_LONG, -1, -1, "Error 567: Input too long, requires 2957 codewords (maximum 2956)" }, | |
| 68 }; | |
| 69 const int data_size = ARRAY_SIZE(data); | |
| 70 int i, length, ret; | |
| 71 struct zint_symbol *symbol = NULL; | |
| 72 | |
| 73 char data_buf[ZINT_MAX_DATA_LEN]; | |
| 74 | |
| 75 char escaped[ZINT_MAX_DATA_LEN]; | |
| 76 char cmp_buf[177 * 177 + 1]; | |
| 77 char cmp_msg[1024]; | |
| 78 | |
| 79 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 80 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 81 | |
| 82 testStartSymbol("test_qr_large", &symbol); | |
| 83 | |
| 84 for (i = 0; i < data_size; i++) { | |
| 85 | |
| 86 if (testContinue(p_ctx, i)) continue; | |
| 87 | |
| 88 symbol = ZBarcode_Create(); | |
| 89 assert_nonnull(symbol, "Symbol not created\n"); | |
| 90 | |
| 91 testUtilStrCpyRepeat(data_buf, data[i].pattern, data[i].length); | |
| 92 assert_equal(data[i].length, (int) strlen(data_buf), "i:%d length %d != strlen(data_buf) %d\n", i, data[i].length, (int) strlen(data_buf)); | |
| 93 | |
| 94 length = testUtilSetSymbol(symbol, BARCODE_QRCODE, -1 /*input_mode*/, -1 /*eci*/, data[i].option_1, data[i].option_2, data[i].option_3 | FAST_MODE, -1 /*output_options*/, data_buf, data[i].length, debug); | |
| 95 | |
| 96 ret = ZBarcode_Encode(symbol, (unsigned char *) data_buf, length); | |
| 97 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 98 assert_equal(symbol->errtxt[0] == '\0', ret == 0, "i:%d symbol->errtxt not %s (%s)\n", i, ret ? "set" : "empty", symbol->errtxt); | |
| 99 assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected_errtxt); | |
| 100 | |
| 101 if (ret < ZINT_ERROR) { | |
| 102 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows); | |
| 103 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width); | |
| 104 } | |
| 105 | |
| 106 symbol->input_mode |= FAST_MODE; | |
| 107 ret = ZBarcode_Encode(symbol, (unsigned char *) data_buf, length); | |
| 108 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 109 assert_equal(symbol->errtxt[0] == '\0', ret == 0, "i:%d symbol->errtxt not %s (%s)\n", i, ret ? "set" : "empty", symbol->errtxt); | |
| 110 assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected_errtxt); | |
| 111 | |
| 112 if (ret < ZINT_ERROR) { | |
| 113 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows); | |
| 114 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width); | |
| 115 | |
| 116 if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, debug)) { | |
| 117 char modules_dump[177 * 177 + 1]; | |
| 118 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 119 ret = testUtilBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, data_buf, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); | |
| 120 assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 121 | |
| 122 ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); | |
| 123 assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", | |
| 124 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); | |
| 125 } | |
| 126 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data_buf, length, debug)) { | |
| 127 int cmp_len, ret_len; | |
| 128 char modules_dump[177 * 177 + 1]; | |
| 129 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 130 ret = testUtilZXingCPP(i, symbol, data_buf, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 131 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 132 | |
| 133 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data_buf, length, NULL /*primary*/, escaped, &ret_len); | |
| 134 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 135 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 136 } | |
| 137 } | |
| 138 | |
| 139 ZBarcode_Delete(symbol); | |
| 140 } | |
| 141 | |
| 142 testFinish(); | |
| 143 } | |
| 144 | |
| 145 static void test_qr_options(const testCtx *const p_ctx) { | |
| 146 int debug = p_ctx->debug; | |
| 147 | |
| 148 struct item { | |
| 149 int input_mode; | |
| 150 int eci; | |
| 151 int option_1; | |
| 152 int option_2; | |
| 153 struct zint_structapp structapp; | |
| 154 char *data; | |
| 155 int ret_encode; | |
| 156 int ret_vector; | |
| 157 int expected_size; | |
| 158 int compare_previous; | |
| 159 char *expected; | |
| 160 }; | |
| 161 /* 貫 U+8CAB kanji, in Shift JIS 0x8AD1 (\212\321), UTF-8 E8B2AB */ | |
| 162 /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ | |
| 163 static const struct item data[] = { | |
| 164 /* 0*/ { -1, -1, -1, -1, { 0, 0, "" }, "12345", 0, 0, 21, -1, "" }, /* ECC auto-set to 1 (L), version auto-set to 1 */ | |
| 165 /* 1*/ { -1, -1, 5, -1, { 0, 0, "" }, "12345", 0, 0, 21, 0, "" }, /* ECC > 4 ignored */ | |
| 166 /* 2*/ { -1, -1, -1, 41, { 0, 0, "" }, "12345", 0, 0, 21, 0, "" }, /* Version > 40 ignored */ | |
| 167 /* 3*/ { -1, -1, -1, 2, { 0, 0, "" }, "12345", 0, 0, 25, -1, "" }, /* ECC auto-set to 4 (Q), version 2 */ | |
| 168 /* 4*/ { -1, -1, 4, 2, { 0, 0, "" }, "12345", 0, 0, 25, 0, "" }, /* ECC 4 (Q), version 2 */ | |
| 169 /* 5*/ { -1, -1, 1, 2, { 0, 0, "" }, "12345", 0, 0, 25, 1, "" }, /* ECC 1 (L), version 2 */ | |
| 170 /* 6*/ { -1, -1, -1, -1, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 21, -1, "" }, /* ECC auto-set to 1 (L), version auto-set to 1 */ | |
| 171 /* 7*/ { -1, -1, 1, -1, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 21, 0, "" }, /* Version auto-set to 1 */ | |
| 172 /* 8*/ { -1, -1, -1, 1, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 21, 0, "" }, /* ECC auto-set to 1 (L) */ | |
| 173 /* 9*/ { -1, -1, 1, 1, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 21, 0, "" }, | |
| 174 /* 10*/ { -1, -1, 2, 1, { 0, 0, "" }, "貫やぐ識禁", ZINT_ERROR_TOO_LONG, -1, 0, -1, "Error 569: Input too long for Version 1-M, requires 17 codewords (maximum 16)" }, /* ECC 2 (M), version 1 */ | |
| 175 /* 11*/ { -1, -1, 2, -1, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 25, -1, "" }, /* Version auto-set to 2 */ | |
| 176 /* 12*/ { -1, -1, 2, 2, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 25, 0, "" }, | |
| 177 /* 13*/ { -1, -1, 1, 2, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 25, 1, "" }, | |
| 178 /* 14*/ { -1, -1, -1, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 29, -1, "" }, /* ECC auto-set to 1 (L), version auto-set to 3 */ | |
| 179 /* 15*/ { -1, -1, 1, 3, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 29, 0, "" }, | |
| 180 /* 16*/ { -1, -1, 2, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 33, -1, "" }, /* ECC 2 (M), version auto-set to 4 */ | |
| 181 /* 17*/ { -1, -1, 2, 4, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 33, 0, "" }, | |
| 182 /* 18*/ { -1, -1, 3, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 37, -1, "" }, /* ECC 3 (Q), version auto-set to 5 */ | |
| 183 /* 19*/ { -1, -1, 3, 5, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 37, 0, "" }, | |
| 184 /* 20*/ { -1, -1, 4, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 41, -1, "" }, /* ECC 4 (H), version auto-set to 6 */ | |
| 185 /* 21*/ { -1, -1, 4, 6, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 41, 0, "" }, | |
| 186 /* 22*/ { -1, -1, -1, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。", 0, 0, 69, -1, "" }, /* ECC auto-set to 1, version auto-set to 13 */ | |
| 187 /* 23*/ { -1, -1, 1, 13, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。", 0, 0, 69, 0, "" }, | |
| 188 /* 24*/ { -1, -1, 4, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。", 0, 0, 101, -1, "" }, /* ECC 4, version auto-set to 21 */ | |
| 189 /* 25*/ { -1, -1, 4, 21, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。", 0, 0, 101, 0, "" }, | |
| 190 /* 26*/ { -1, -1, -1, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。社ト可化モマ試音ばじご育青康演ぴぎ権型固スで能麩ぜらもほ河都しちほラ収90作の年要とだむ部動ま者断チ第41一1米索焦茂げむしれ。測フ物使だて目月国スリカハ夏検にいへ児72告物ゆは載核ロアメヱ登輸どべゃ催行アフエハ議歌ワ河倫剖だ。記タケウ因載ヒイホヤ禁3輩彦関トえび肝区勝ワリロ成禁ぼよ界白ウヒキレ中島べせぜい各安うしぽリ覧生テ基一でむしゃ中新トヒキソ声碁スしび起田ア信大未ゅもばち。", 0, 0, 105, -1, "" }, /* ECC auto-set to 1, version auto-set to 22 */ | |
| 191 /* 27*/ { -1, -1, 1, 22, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。社ト可化モマ試音ばじご育青康演ぴぎ権型固スで能麩ぜらもほ河都しちほラ収90作の年要とだむ部動ま者断チ第41一1米索焦茂げむしれ。測フ物使だて目月国スリカハ夏検にいへ児72告物ゆは載核ロアメヱ登輸どべゃ催行アフエハ議歌ワ河倫剖だ。記タケウ因載ヒイホヤ禁3輩彦関トえび肝区勝ワリロ成禁ぼよ界白ウヒキレ中島べせぜい各安うしぽリ覧生テ基一でむしゃ中新トヒキソ声碁スしび起田ア信大未ゅもばち。", 0, 0, 105, 0, "" }, | |
| 192 /* 28*/ { -1, -1, 4, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。社ト可化モマ試音ばじご育青康演ぴぎ権型固スで能麩ぜらもほ河都しちほラ収90作の年要とだむ部動ま者断チ第41一1米索焦茂げむしれ。測フ物使だて目月国スリカハ夏検にいへ児72告物ゆは載核ロアメヱ登輸どべゃ催行アフエハ議歌ワ河倫剖だ。記タケウ因載ヒイホヤ禁3輩彦関トえび肝区勝ワリロ成禁ぼよ界白ウヒキレ中島べせぜい各安うしぽリ覧生テ基一でむしゃ中新トヒキソ声碁スしび起田ア信大未ゅもばち。", 0, 0, 153, 1, "" }, /* ECC 4, version auto-set 34 */ | |
| 193 /* 29*/ { -1, -1, 4, 34, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。社ト可化モマ試音ばじご育青康演ぴぎ権型固スで能麩ぜらもほ河都しちほラ収90作の年要とだむ部動ま者断チ第41一1米索焦茂げむしれ。測フ物使だて目月国スリカハ夏検にいへ児72告物ゆは載核ロアメヱ登輸どべゃ催行アフエハ議歌ワ河倫剖だ。記タケウ因載ヒイホヤ禁3輩彦関トえび肝区勝ワリロ成禁ぼよ界白ウヒキレ中島べせぜい各安うしぽリ覧生テ基一でむしゃ中新トヒキソ声碁スしび起田ア信大未ゅもばち。", 0, 0, 153, 0, "" }, | |
| 194 /* 30*/ { -1, -1, 4, -1, { 0, 0, "" }, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", 0, 0, 177, -1, "" }, /* 1852 alphanumerics max for ECC 4 (H) */ | |
| 195 /* 31*/ { -1, -1, 1, -1, { 0, 0, "" }, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", 0, 0, 177, -1, "" }, /* 4296 alphanumerics max for ECC 1 (L) */ | |
| 196 /* 32*/ { -1, -1, 4, -1, { 0, 0, "" }, "貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫", 0, -1, 0, -1, "" }, /* 424 Kanji, ECC 4 (Q), version 1 */ | |
| 197 /* 33*/ { -1, -1, 4, -1, { 0, 0, "" }, "貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫", ZINT_ERROR_TOO_LONG, -1, 0, -1, "Error 561: Input too long for ECC level H, requires 1278 codewords (maximum 1276)" }, /* 425 Kanji, ECC 4 (H), version 1 */ | |
| 198 /* 34*/ { -1, -1, 4, 1, { 0, 0, "" }, "12345678901234567", 0, 0, 21, -1, "" }, | |
| 199 /* 35*/ { -1, -1, 4, 1, { 1, 2, "" }, "12345678901234567", ZINT_ERROR_TOO_LONG, -1, 0, -1, "Error 569: Input too long for Version 1-H, requires 12 codewords (maximum 9)" }, | |
| 200 /* 36*/ { -1, -1, 4, 1, { 1, 2, "" }, "123456789012", ZINT_ERROR_TOO_LONG, -1, 0, -1, "Error 569: Input too long for Version 1-H, requires 10 codewords (maximum 9)" }, | |
| 201 /* 37*/ { -1, -1, 4, 1, { 1, 2, "" }, "12345678901", 0, 0, 21, -1, "" }, | |
| 202 /* 38*/ { -1, -1, 4, 1, { 3, 16, "123" }, "12345678901", 0, 0, 21, -1, "" }, | |
| 203 /* 39*/ { -1, -1, 4, 1, { 3, 17, "123" }, "12345678901", ZINT_ERROR_INVALID_OPTION, -1, 0, -1, "Error 750: Structured Append count '17' out of range (2 to 16)" }, | |
| 204 /* 40*/ { -1, -1, 4, 1, { 3, 2, "123" }, "12345678901", ZINT_ERROR_INVALID_OPTION, -1, 0, -1, "Error 751: Structured Append index '3' out of range (1 to count 2)" }, | |
| 205 /* 41*/ { -1, -1, 4, 1, { 1, 2, "1234" }, "12345678901", ZINT_ERROR_INVALID_OPTION, -1, 0, -1, "Error 752: Structured Append ID length 4 too long (3 digit maximum)" }, | |
| 206 /* 42*/ { -1, -1, 4, 1, { 1, 2, "12A" }, "12345678901", ZINT_ERROR_INVALID_OPTION, -1, 0, -1, "Error 753: Invalid Structured Append ID (digits only)" }, | |
| 207 /* 43*/ { -1, -1, 4, 1, { 1, 2, "256" }, "12345678901", ZINT_ERROR_INVALID_OPTION, -1, 0, -1, "Error 754: Structured Append ID value '256' out of range (0 to 255)" }, | |
| 208 /* 44*/ { GS1_MODE, 3, -1, -1, { 0, 0, "" }, "[20]12", ZINT_WARN_NONCOMPLIANT, 0, 21, -1, "Warning 755: Using ECI in GS1 mode not supported by GS1 standards" }, | |
| 209 /* 45*/ { GS1_MODE, -1, -1, -1, { 1, 2, "" }, "[20]12", ZINT_WARN_NONCOMPLIANT, 0, 21, -1, "Warning 756: Using Structured Append in GS1 mode not supported by GS1 standards" }, | |
| 210 /* 46*/ { GS1_MODE, 3, -1, -1, { 1, 2, "" }, "[20]12", ZINT_WARN_NONCOMPLIANT, 0, 21, -1, "Warning 755: Using ECI in GS1 mode not supported by GS1 standards" }, /* ECI trumps Structured Append */ | |
| 211 }; | |
| 212 const int data_size = ARRAY_SIZE(data); | |
| 213 int i, length, ret; | |
| 214 struct zint_symbol *symbol = NULL; | |
| 215 | |
| 216 struct zint_symbol previous_symbol; | |
| 217 | |
| 218 testStartSymbol("test_qr_options", &symbol); | |
| 219 | |
| 220 for (i = 0; i < data_size; i++) { | |
| 221 | |
| 222 if (testContinue(p_ctx, i)) continue; | |
| 223 | |
| 224 symbol = ZBarcode_Create(); | |
| 225 assert_nonnull(symbol, "Symbol not created\n"); | |
| 226 | |
| 227 length = testUtilSetSymbol(symbol, BARCODE_QRCODE, data[i].input_mode, data[i].eci, data[i].option_1, data[i].option_2, -1, -1 /*output_options*/, data[i].data, -1, debug); | |
| 228 if (data[i].structapp.count) { | |
| 229 symbol->structapp = data[i].structapp; | |
| 230 } | |
| 231 | |
| 232 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 233 assert_equal(ret, data[i].ret_encode, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret_encode, symbol->errtxt); | |
| 234 assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); | |
| 235 if (p_ctx->index == -1 && data[i].compare_previous != -1) { | |
| 236 ret = testUtilSymbolCmp(symbol, &previous_symbol); | |
| 237 assert_equal(!ret, !data[i].compare_previous, "i:%d testUtilSymbolCmp !ret %d != %d\n", i, ret, data[i].compare_previous); | |
| 238 } | |
| 239 memcpy(&previous_symbol, symbol, sizeof(previous_symbol)); | |
| 240 | |
| 241 if (data[i].ret_vector != -1) { | |
| 242 ret = ZBarcode_Buffer_Vector(symbol, 0); | |
| 243 assert_equal(ret, data[i].ret_vector, "i:%d ZBarcode_Buffer_Vector ret %d != %d\n", i, ret, data[i].ret_vector); | |
| 244 assert_equal(symbol->width, data[i].expected_size, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_size); | |
| 245 assert_equal(symbol->rows, data[i].expected_size, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_size); | |
| 246 } | |
| 247 | |
| 248 ZBarcode_Delete(symbol); | |
| 249 } | |
| 250 | |
| 251 testFinish(); | |
| 252 } | |
| 253 | |
| 254 static void test_qr_input(const testCtx *const p_ctx) { | |
| 255 int debug = p_ctx->debug; | |
| 256 | |
| 257 struct item { | |
| 258 int input_mode; | |
| 259 int eci; | |
| 260 int option_1; | |
| 261 int option_3; | |
| 262 char *data; | |
| 263 int ret; | |
| 264 int expected_eci; | |
| 265 char *expected; | |
| 266 int bwipp_cmp; | |
| 267 int zxingcpp_cmp; | |
| 268 char *comment; | |
| 269 }; | |
| 270 /* é U+00E9 in ISO 8859-1 plus other ISO 8859 (but not in ISO 8859-7 or ISO 8859-11), Win 1250 plus other Win, not in Shift JIS, UTF-8 C3A9 */ | |
| 271 /* β U+03B2 in ISO 8859-7 Greek (but not other ISO 8859 or Win page), in Shift JIS 0x83C0, UTF-8 CEB2 */ | |
| 272 /* ก U+0E01 in ISO 8859-11 Thai (but not other ISO 8859 or Win page), not in Shift JIS, UTF-8 E0B881 */ | |
| 273 /* Ж U+0416 in ISO 8859-5 Cyrillic (but not other ISO 8859), Win 1251, in Shift JIS 0x8447, UTF-8 D096 */ | |
| 274 /* ກ U+0E81 Lao not in any ISO 8859 (or Win page) or Shift JIS, UTF-8 E0BA81 */ | |
| 275 /* ¥ U+00A5 in ISO 8859-1 0xA5 (\245), in Shift JIS single-byte 0x5C (\134) (backslash); 0xA5 same codepoint as single-byte half-width katakana ・ (U+FF65) in Shift JIS (below), UTF-8 C2A5 */ | |
| 276 /* ・ U+FF65 half-width katakana, not in ISO/Win, in Shift JIS single-byte 0xA5 (\245), UTF-8 EFBDA5 */ | |
| 277 /* ¿ U+00BF in ISO 8859-1 0xBF (\277), not in Shift JIS; 0xBF same codepoint as single-byte half-width katakana ソ (U+FF7F) in Shift JIS (below), UTF-8 C2BF */ | |
| 278 /* ソ U+FF7F half-width katakana, not in ISO/Win, in Shift JIS single-byte 0xBF (\277), UTF-8 EFBDBF */ | |
| 279 /* ‾ U+203E overline, not in ISO/Win, in Shift JIS single-byte 0x7E (\176) (tilde), UTF-8 E280BE */ | |
| 280 /* 点 U+70B9 kanji, in Shift JIS 0x935F (\223\137), UTF-8 E782B9 */ | |
| 281 /* 茗 U+8317 kanji, in Shift JIS 0xE4AA (\344\252), UTF-8 E88C97 */ | |
| 282 /* テ U+30C6 katakana, in Shift JIS 0x8365 (\203\145), UTF-8 E38386 */ | |
| 283 /* Á U+00C1, UTF-8 C381; ȁ U+0201, UTF-8 C881; Ȃ U+0202, UTF-8 C882; ¢ U+00A2, UTF-8 C2A2; á U+00E1, UTF-8 C3A1 */ | |
| 284 static const struct item data[] = { | |
| 285 /* 0*/ { UNICODE_MODE, 0, 4, 6 << 8, "é", 0, 0, "40 1E 90 EC 11 EC 11 EC 11", 1, 1, "B1 (ISO 8859-1)" }, | |
| 286 /* 1*/ { UNICODE_MODE, 3, 4, -1, "é", 0, 3, "70 34 01 E9 00 EC 11 EC 11", 1, 1, "ECI-3 B1 (ISO 8859-1)" }, | |
| 287 /* 2*/ { UNICODE_MODE, 20, -1, -1, "é", ZINT_ERROR_INVALID_DATA, -1, "Error 800: Invalid character in input", 1, 1, "é not in Shift JIS" }, | |
| 288 /* 3*/ { UNICODE_MODE, 26, 4, -1, "é", 0, 26, "71 A4 02 C3 A9 00 EC 11 EC", 1, 1, "ECI-26 B2 (UTF-8)" }, | |
| 289 /* 4*/ { DATA_MODE, 0, 4, 7 << 8, "é", 0, 0, "40 2C 3A 90 EC 11 EC 11 EC", 1, 0, "B2 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 290 /* 5*/ { DATA_MODE, 0, 4, 6 << 8, "\351", 0, 0, "40 1E 90 EC 11 EC 11 EC 11", 1, 1, "B1 (ISO 8859-1)" }, | |
| 291 /* 6*/ { UNICODE_MODE, 0, 4, 2 << 8, "β", ZINT_WARN_NONCOMPLIANT, 0, "Warning 80 11 00 00 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS)" }, | |
| 292 /* 7*/ { UNICODE_MODE, 9, 4, 7 << 8, "β", 0, 9, "70 94 01 E2 00 EC 11 EC 11", 1, 1, "ECI-9 B1 (ISO 8859-7)" }, | |
| 293 /* 8*/ { UNICODE_MODE, 20, 4, -1, "β", 0, 20, "71 48 01 10 00 00 EC 11 EC", 1, 1, "ECI-20 K1 (Shift JIS)" }, | |
| 294 /* 9*/ { UNICODE_MODE, 26, 4, 5 << 8, "β", 0, 26, "71 A4 02 CE B2 00 EC 11 EC", 1, 1, "ECI-26 B2 (UTF-8)" }, | |
| 295 /* 10*/ { DATA_MODE, 0, 4, 4 << 8, "β", 0, 0, "40 2C EB 20 EC 11 EC 11 EC", 1, 0, "B2 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 296 /* 11*/ { UNICODE_MODE, 0, 4, 5 << 8, "ก", ZINT_WARN_USES_ECI, 13, "Warning 70 D4 01 A1 00 EC 11 EC 11", 1, 1, "ECI-13 B1 (ISO 8859-11)" }, | |
| 297 /* 12*/ { UNICODE_MODE, 13, 4, 5 << 8, "ก", 0, 13, "70 D4 01 A1 00 EC 11 EC 11", 1, 1, "ECI-13 B1 (ISO 8859-11)" }, | |
| 298 /* 13*/ { UNICODE_MODE, 20, -1, -1, "ก", ZINT_ERROR_INVALID_DATA, -1, "Error 800: Invalid character in input", 1, 1, "ก not in Shift JIS" }, | |
| 299 /* 14*/ { UNICODE_MODE, 26, 4, 8 << 8, "ก", 0, 26, "71 A4 03 E0 B8 81 00 EC 11", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 300 /* 15*/ { DATA_MODE, 0, 4, 3 << 8, "ก", 0, 0, "40 3E 0B 88 10 EC 11 EC 11", 1, 0, "B3 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 301 /* 16*/ { UNICODE_MODE, 0, 4, 8 << 8, "Ж", ZINT_WARN_NONCOMPLIANT, 0, "Warning 80 11 23 80 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS)" }, | |
| 302 /* 17*/ { UNICODE_MODE, 7, 4, -1, "Ж", 0, 7, "70 74 01 B6 00 EC 11 EC 11", 1, 1, "ECI-7 B1 (ISO 8859-5)" }, | |
| 303 /* 18*/ { UNICODE_MODE, 20, 4, 7 << 8, "Ж", 0, 20, "71 48 01 12 38 00 EC 11 EC", 1, 1, "ECI-20 K1 (Shift JIS)" }, | |
| 304 /* 19*/ { UNICODE_MODE, 26, 4, -1, "Ж", 0, 26, "71 A4 02 D0 96 00 EC 11 EC", 1, 1, "ECI-26 B2 (UTF-8)" }, | |
| 305 /* 20*/ { DATA_MODE, 0, 4, -1, "Ж", 0, 0, "40 2D 09 60 EC 11 EC 11 EC", 1, 0, "B2 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 306 /* 21*/ { UNICODE_MODE, 0, 4, -1, "ກ", ZINT_WARN_USES_ECI, 26, "Warning 71 A4 03 E0 BA 81 00 EC 11", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 307 /* 22*/ { UNICODE_MODE, 20, -1, -1, "ກ", ZINT_ERROR_INVALID_DATA, -1, "Error 800: Invalid character in input", 1, 1, "ກ not in Shift JIS" }, | |
| 308 /* 23*/ { UNICODE_MODE, 26, 4, -1, "ກ", 0, 26, "71 A4 03 E0 BA 81 00 EC 11", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 309 /* 24*/ { DATA_MODE, 0, 4, 8 << 8, "ກ", 0, 0, "40 3E 0B A8 10 EC 11 EC 11", 1, 0, "B3 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 310 /* 25*/ { UNICODE_MODE, 0, 4, 2 << 8, "\\", 0, 0, "40 15 C0 EC 11 EC 11 EC 11", 1, 1, "B1 (ASCII)" }, | |
| 311 /* 26*/ { UNICODE_MODE, 20, 4, 4 << 8, "\\", 0, 20, "71 48 01 00 F8 00 EC 11 EC", 1, 0, "ECI-20 K1 (Shift JIS); ZXing-C++ doesn't map Shift JIS ASCII" }, | |
| 312 /* 27*/ { UNICODE_MODE, 20, 4, -1, "[", 0, 20, "71 44 01 5B 00 EC 11 EC 11", 1, 1, "B1 (ASCII)" }, | |
| 313 /* 28*/ { UNICODE_MODE, 20, 4, 3 << 8, "\177", 0, 20, "71 44 01 7F 00 EC 11 EC 11", 1, 1, "ECI-20 B1 (ASCII)" }, | |
| 314 /* 29*/ { UNICODE_MODE, 0, 4, 2 << 8, "¥", 0, 0, "40 1A 50 EC 11 EC 11 EC 11", 1, 1, "B1 (ISO 8859-1) (same bytes as ・ Shift JIS below, so ambiguous)" }, | |
| 315 /* 30*/ { UNICODE_MODE, 3, 4, 3 << 8, "¥", 0, 3, "70 34 01 A5 00 EC 11 EC 11", 1, 1, "ECI-3 B1 (ISO 8859-1)" }, | |
| 316 /* 31*/ { UNICODE_MODE, 20, 4, 5 << 8, "¥", 0, 20, "71 44 01 5C 00 EC 11 EC 11", 1, 0, "ECI-20 B1 (Shift JIS) (to single-byte backslash codepoint 5C, so byte mode); ZXing-C++ doesn't map Shift JIS ASCII" }, | |
| 317 /* 32*/ { UNICODE_MODE, 26, 4, 6 << 8, "¥", 0, 26, "71 A4 02 C2 A5 00 EC 11 EC", 1, 1, "ECI-26 B2 (UTF-8)" }, | |
| 318 /* 33*/ { DATA_MODE, 0, 4, 2 << 8, "¥", 0, 0, "40 2C 2A 50 EC 11 EC 11 EC", 1, 0, "B2 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 319 /* 34*/ { UNICODE_MODE, 0, 4, 2 << 8, "・", ZINT_WARN_NONCOMPLIANT, 0, "Warning 40 1A 50 EC 11 EC 11 EC 11", 1, 1, "B1 (Shift JIS) single-byte codepoint A5 (same bytes as ¥ ISO 8859-1 above, so ambiguous)" }, | |
| 320 /* 35*/ { UNICODE_MODE, 3, -1, -1, "・", ZINT_ERROR_INVALID_DATA, -1, "Error 575: Invalid character in input for ECI '3'", 1, 1, "" }, | |
| 321 /* 36*/ { UNICODE_MODE, 20, 4, 7 << 8, "・", 0, 20, "71 44 01 A5 00 EC 11 EC 11", 1, 1, "ECI-20 B1 (Shift JIS) single-byte codepoint A5" }, | |
| 322 /* 37*/ { UNICODE_MODE, 26, 4, -1, "・", 0, 26, "71 A4 03 EF BD A5 00 EC 11", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 323 /* 38*/ { DATA_MODE, 0, 4, 8 << 8, "・", 0, 0, "40 3E FB DA 50 EC 11 EC 11", 1, 0, "B3 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 324 /* 39*/ { UNICODE_MODE, 0, 4, -1, "¿", 0, 0, "40 1B F0 EC 11 EC 11 EC 11", 1, 1, "B1 (ISO 8859-1) (same bytes as ソ Shift JIS below, so ambiguous)" }, | |
| 325 /* 40*/ { UNICODE_MODE, 3, 4, 8 << 8, "¿", 0, 3, "70 34 01 BF 00 EC 11 EC 11", 1, 1, "ECI-3 B1 (ISO 8859-1)" }, | |
| 326 /* 41*/ { UNICODE_MODE, 20, -1, -1, "¿", ZINT_ERROR_INVALID_DATA, -1, "Error 800: Invalid character in input", 1, 1, "¿ not in Shift JIS" }, | |
| 327 /* 42*/ { UNICODE_MODE, 26, 4, 2 << 8, "¿", 0, 26, "71 A4 02 C2 BF 00 EC 11 EC", 1, 1, "ECI-26 B2 (UTF-8)" }, | |
| 328 /* 43*/ { DATA_MODE, 0, 4, 3 << 8, "¿", 0, 0, "40 2C 2B F0 EC 11 EC 11 EC", 1, 0, "B2 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 329 /* 44*/ { UNICODE_MODE, 0, 4, -1, "ソ", ZINT_WARN_NONCOMPLIANT, 0, "Warning 40 1B F0 EC 11 EC 11 EC 11", 1, 1, "B1 (Shift JIS) single-byte codepoint BF (same bytes as ¿ ISO 8859-1 above, so ambiguous)" }, | |
| 330 /* 45*/ { UNICODE_MODE, 3, -1, -1, "ソ", ZINT_ERROR_INVALID_DATA, -1, "Error 575: Invalid character in input for ECI '3'", 1, 1, "" }, | |
| 331 /* 46*/ { UNICODE_MODE, 20, 4, 6 << 8, "ソ", 0, 20, "71 44 01 BF 00 EC 11 EC 11", 1, 1, "ECI-20 B1 (Shift JIS) single-byte codepoint BF" }, | |
| 332 /* 47*/ { UNICODE_MODE, 26, 4, 4 << 8, "ソ", 0, 26, "71 A4 03 EF BD BF 00 EC 11", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 333 /* 48*/ { DATA_MODE, 0, 4, -1, "ソ", 0, 0, "40 3E FB DB F0 EC 11 EC 11", 1, 0, "B3 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 334 /* 49*/ { UNICODE_MODE, 0, 4, -1, "~", 0, 0, "40 17 E0 EC 11 EC 11 EC 11", 1, 1, "B1 (ASCII) (same bytes as ‾ Shift JIS below, so ambiguous)" }, | |
| 335 /* 50*/ { UNICODE_MODE, 3, 4, -1, "~", 0, 3, "70 34 01 7E 00 EC 11 EC 11", 1, 1, "ECI-3 B1 (ASCII)" }, | |
| 336 /* 51*/ { UNICODE_MODE, 20, -1, -1, "~", ZINT_ERROR_INVALID_DATA, -1, "Error 800: Invalid character in input", 1, 1, "tilde not in Shift JIS (codepoint used for overline)" }, | |
| 337 /* 52*/ { UNICODE_MODE, 0, 4, -1, "‾", ZINT_WARN_NONCOMPLIANT, 0, "Warning 40 17 E0 EC 11 EC 11 EC 11", 1, 0, "B1 (Shift JIS) single-byte codepoint 7E (same bytes as ~ ASCII above, so ambiguous); ZXing-C++ doesn't map Shift JIS ASCII" }, | |
| 338 /* 53*/ { UNICODE_MODE, 3, -1, -1, "‾", ZINT_ERROR_INVALID_DATA, -1, "Error 575: Invalid character in input for ECI '3'", 1, 1, "" }, | |
| 339 /* 54*/ { UNICODE_MODE, 20, 4, 7 << 8, "‾", 0, 20, "71 44 01 7E 00 EC 11 EC 11", 1, 0, "ECI-20 B1 (Shift JIS) (to single-byte tilde codepoint 7E, so byte mode); ZXing-C++ doesn't map Shift JIS ASCII" }, | |
| 340 /* 55*/ { UNICODE_MODE, 26, 4, 1 << 8, "‾", 0, 26, "71 A4 03 E2 80 BE 00 EC 11", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 341 /* 56*/ { DATA_MODE, 0, 4, -1, "‾", 0, 0, "40 3E 28 0B E0 EC 11 EC 11", 1, 0, "B3 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 342 /* 57*/ { UNICODE_MODE, 0, 4, -1, "点", ZINT_WARN_NONCOMPLIANT, 0, "Warning 80 16 CF 80 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS)" }, | |
| 343 /* 58*/ { UNICODE_MODE, 3, -1, -1, "点", ZINT_ERROR_INVALID_DATA, -1, "Error 575: Invalid character in input for ECI '3'", 1, 1, "" }, | |
| 344 /* 59*/ { UNICODE_MODE, 20, 4, 3 << 8, "点", 0, 20, "71 48 01 6C F8 00 EC 11 EC", 1, 1, "ECI-20 K1 (Shift JIS)" }, | |
| 345 /* 60*/ { UNICODE_MODE, 26, 4, -1, "点", 0, 26, "71 A4 03 E7 82 B9 00 EC 11", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 346 /* 61*/ { DATA_MODE, 0, 4, 6 << 8, "点", 0, 0, "40 3E 78 2B 90 EC 11 EC 11", 1, 0, "B3 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 347 /* 62*/ { DATA_MODE, 0, 4, 4 << 8, "\223\137", 0, 0, "40 29 35 F0 EC 11 EC 11 EC", 0, 0, "B2 (Shift JIS) (not full multibyte); BWIPP same as FULL_MULTIBYTE; ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 348 /* 63*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\223\137", 0, 0, "80 16 CF 80 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS)" }, | |
| 349 /* 64*/ { UNICODE_MODE, 0, 4, -1, "¥・点", ZINT_WARN_NONCOMPLIANT, 0, "Warning 40 45 CA 59 35 F0 EC 11 EC", 1, 0, "B4 (Shift JIS) (optimized to byte mode only); ZXing-C++ doesn't map Shift JIS ASCII" }, | |
| 350 /* 65*/ { UNICODE_MODE, 3, -1, -1, "¥・点", ZINT_ERROR_INVALID_DATA, -1, "Error 575: Invalid character in input for ECI '3'", 1, 1, "" }, | |
| 351 /* 66*/ { UNICODE_MODE, 20, 4, 4 << 8, "¥・点", 0, 20, "71 44 04 5C A5 93 5F 00 EC", 1, 0, "ECI-20 B4 (Shift JIS); ZXing-C++ doesn't map Shift JIS ASCII" }, | |
| 352 /* 67*/ { UNICODE_MODE, 26, 3, 7 << 8, "¥・点", 0, 26, "71 A4 08 C2 A5 EF BD A5 E7 82 B9 00 EC", 1, 1, "ECI-26 B8 (UTF-8)" }, | |
| 353 /* 68*/ { DATA_MODE, 0, 4, -1, "\134\245\223\137", 0, 0, "40 45 CA 59 35 F0 EC 11 EC", 1, 0, "B8 (Shift JIS); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 354 /* 69*/ { DATA_MODE, 0, 3, -1, "¥・点", 0, 0, "40 8C 2A 5E FB DA 5E 78 2B 90 EC 11 EC", 1, 0, "B8 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 355 /* 70*/ { UNICODE_MODE, 0, 4, 8 << 8, "点茗", ZINT_WARN_NONCOMPLIANT, 0, "Warning 80 26 CF EA A8 00 EC 11 EC", 1, 1, "K2 (Shift JIS)" }, | |
| 356 /* 71*/ { UNICODE_MODE, 0, 4, -1, "点茗テ", ZINT_WARN_NONCOMPLIANT, 0, "Warning 80 36 CF EA A8 34 A0 EC 11", 1, 1, "K3 (Shift JIS)" }, | |
| 357 /* 72*/ { UNICODE_MODE, 0, 4, -1, "点茗テ点", ZINT_WARN_NONCOMPLIANT, 0, "Warning 80 46 CF EA A8 34 AD 9F 00", 1, 1, "K4 (Shift JIS)" }, | |
| 358 /* 73*/ { UNICODE_MODE, 0, 3, -1, "点茗テ点茗", ZINT_WARN_NONCOMPLIANT, 0, "Warning 80 56 CF EA A8 34 AD 9F D5 50 00 EC 11", 1, 1, "K5 (Shift JIS)" }, | |
| 359 /* 74*/ { UNICODE_MODE, 0, 3, 1 << 8, "点茗テ点茗テ", ZINT_WARN_NONCOMPLIANT, 0, "Warning 80 66 CF EA A8 34 AD 9F D5 50 69 40 EC", 1, 1, "K6 (Shift JIS)" }, | |
| 360 /* 75*/ { UNICODE_MODE, 0, 2, 4 << 8, "点茗テ点茗テソ", ZINT_WARN_NONCOMPLIANT, 0, "Warning 80 66 CF EA A8 34 AD 9F D5 50 69 50 06 FC 00 EC", 1, 1, "K6 B1 (Shift JIS)" }, | |
| 361 /* 76*/ { DATA_MODE, 0, 2, 8 << 8, "\223\137\344\252\203\145\223\137\344\252\203\145\277", 0, 0, "40 D9 35 FE 4A A8 36 59 35 FE 4A A8 36 5B F0 EC", 0, 0, "B13 (Shift JIS); BWIPP same as FULL_MULTIBYTE; ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 362 /* 77*/ { DATA_MODE, 0, 2, ZINT_FULL_MULTIBYTE | (4 << 8), "\223\137\344\252\203\145\223\137\344\252\203\145\277", 0, 0, "80 66 CF EA A8 34 AD 9F D5 50 69 50 06 FC 00 EC", 1, 1, "K6 B1 (Shift JIS) (full multibyte)" }, | |
| 363 /* 78*/ { DATA_MODE, 0, 2, 2 << 8, "点茗テ点茗テソ", 0, 0, "41 5E 78 2B 9E 88 C9 7E 38 38 6E 78 2B 9E 88 C9 7E 38 38 6E FB DB F0 EC 11 EC 11 EC", 1, 0, "B21 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 364 /* 79*/ { DATA_MODE, 0, 3, 8 << 8, "ÁȁȁȁȁȁȁȂ¢", 0, 0, "41 2C 38 1C 88 1C 88 1C 88 1C 88 1C 88 1C 88 1C 88 2C 2A 20 EC 11", 1, 0, "B18 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 365 /* 80*/ { DATA_MODE, 0, 3, ZINT_FULL_MULTIBYTE | (8 << 8), "ÁȁȁȁȁȁȁȂ¢", 0, 0, "41 2C 38 1C 88 1C 88 1C 88 1C 88 1C 88 1C 88 1C 88 2C 2A 20 EC 11", 1, 1, "B18 (UTF-8) (full multibyte)" }, | |
| 366 /* 81*/ { DATA_MODE, 0, 3, 4 << 8, "ÁȁȁȁȁȁȁȁȂ¢", 0, 0, "41 4C 38 1C 88 1C 88 1C 88 1C 88 1C 88 1C 88 1C 88 1C 88 2C 2A 20", 0, 0, "B20 (UTF-8); BWIPP same as FULL_MULTIBYTE; ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 367 /* 82*/ { DATA_MODE, 0, 3, ZINT_FULL_MULTIBYTE | (4 << 8), "ÁȁȁȁȁȁȁȁȂ¢", 0, 0, "40 1C 38 09 04 40 22 01 10 08 80 44 02 20 11 00 88 0A 12 00 D1 00", 1, 1, "B1 K9 B1 (UTF-8) (full multibyte)" }, | |
| 368 /* 83*/ { UNICODE_MODE, 0, 3, 8 << 8, "ÁȁȁȁȁȁȁȂ¢", ZINT_WARN_USES_ECI, 26, "Warning 71 A4 12 C3 81 C8 81 C8 81 C8 81 C8 81 C8 81 C8 81 C8 82 C2 A2 00", 1, 1, "B18 (UTF-8)" }, | |
| 369 /* 84*/ { UNICODE_MODE, 0, 3, ZINT_FULL_MULTIBYTE | (8 << 8), "ÁȁȁȁȁȁȁȂ¢", ZINT_WARN_USES_ECI, 26, "Warning 71 A4 12 C3 81 C8 81 C8 81 C8 81 C8 81 C8 81 C8 81 C8 82 C2 A2 00", 1, 1, "B18 (UTF-8)" }, | |
| 370 /* 85*/ { UNICODE_MODE, 0, 2, 1 << 8, "ÁȁȁȁȁȁȁȁȂ¢", ZINT_WARN_USES_ECI, 26, "Warning 71 A4 14 C3 81 C8 81 C8 81 C8 81 C8 81 C8 81 C8 81 C8 81 C8 82 C2 A2 00 EC 11 EC 11", 0, 1, "B20 (UTF-8); BWIPP same as FULL_MULTIBYTE" }, | |
| 371 /* 86*/ { UNICODE_MODE, 0, 2, ZINT_FULL_MULTIBYTE | (1 << 8), "ÁȁȁȁȁȁȁȁȂ¢", ZINT_WARN_USES_ECI, 26, "Warning 71 A4 01 C3 80 90 44 02 20 11 00 88 04 40 22 01 10 08 80 A1 20 0D 10 00 EC 11 EC 11", 1, 1, "B1 K9 B1 (UTF-8) (full multibyte)" }, | |
| 372 /* 87*/ { UNICODE_MODE, 0, 4, -1, "áA", 0, 0, "40 2E 14 10 EC 11 EC 11 EC", 0, 1, "B2 (ISO 8859-1); BWIPP same as FULL_MULTIBYTE" }, | |
| 373 /* 88*/ { UNICODE_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "áA", 0, 0, "80 1C 00 80 EC 11 EC 11 EC", 1, 1, "K1 (ISO 8859-1) (full multibyte)" }, | |
| 374 /* 89*/ { UNICODE_MODE, 0, 1, -1, "A0B1C2D3E4F5G6H7I8J9KLMNOPQRSTUVWXYZ $%*+-./:", 0, 0, "(34) 21 69 C2 3E 08 79 26 27 A5 50 B5 98 23 32 6C 0E 65 FA C5 19 5B 42 6B 2D C1 C3 B9 E7", 1, 1, "A45" }, | |
| 375 /* 90*/ { UNICODE_MODE, 0, 4, 7 << 8, "˘", ZINT_WARN_USES_ECI, 4, "Warning 70 44 01 A2 00 EC 11 EC 11", 1, 1, "ECI-4 B1 (ISO 8859-2)" }, | |
| 376 /* 91*/ { UNICODE_MODE, 4, 4, 7 << 8, "˘", 0, 4, "70 44 01 A2 00 EC 11 EC 11", 1, 1, "ECI-4 B1 (ISO 8859-2)" }, | |
| 377 /* 92*/ { UNICODE_MODE, 0, 4, 7 << 8, "Ħ", ZINT_WARN_USES_ECI, 5, "Warning 70 54 01 A1 00 EC 11 EC 11", 1, 1, "ECI-5 B1 (ISO 8859-3)" }, | |
| 378 /* 93*/ { UNICODE_MODE, 5, 4, 7 << 8, "Ħ", 0, 5, "70 54 01 A1 00 EC 11 EC 11", 1, 1, "ECI-5 B1 (ISO 8859-3)" }, | |
| 379 /* 94*/ { UNICODE_MODE, 0, 4, -1, "ĸ", ZINT_WARN_USES_ECI, 6, "Warning 70 64 01 A2 00 EC 11 EC 11", 1, 1, "ECI-6 B1 (ISO 8859-4)" }, | |
| 380 /* 95*/ { UNICODE_MODE, 6, 4, -1, "ĸ", 0, 6, "70 64 01 A2 00 EC 11 EC 11", 1, 1, "ECI-6 B1 (ISO 8859-4)" }, | |
| 381 /* 96*/ { UNICODE_MODE, 0, 4, 8 << 8, "Ș", ZINT_WARN_USES_ECI, 18, "Warning 71 24 01 AA 00 EC 11 EC 11", 1, 1, "ECI-18 B1 (ISO 8859-16)" }, | |
| 382 /* 97*/ { UNICODE_MODE, 18, 4, 8 << 8, "Ș", 0, 18, "71 24 01 AA 00 EC 11 EC 11", 1, 1, "ECI-18 B1 (ISO 8859-16)" }, | |
| 383 /* 98*/ { UNICODE_MODE, 0, 4, 2 << 8, "テ", ZINT_WARN_NONCOMPLIANT, 0, "Warning 80 10 D2 80 EC 11 EC 11 EC", 1, 1, "K1 (SHIFT JIS)" }, | |
| 384 /* 99*/ { UNICODE_MODE, 20, 4, 2 << 8, "テ", 0, 20, "71 48 01 0D 28 00 EC 11 EC", 1, 1, "ECI-20 K1 (SHIFT JIS)" }, | |
| 385 /*100*/ { UNICODE_MODE, 20, 4, 4 << 8, "テテ", 0, 20, "71 48 02 0D 28 69 40 EC 11", 1, 1, "ECI-20 K2 (SHIFT JIS)" }, | |
| 386 /*101*/ { UNICODE_MODE, 20, 4, -1, "\\\\", 0, 20, "71 48 02 00 F8 07 C0 EC 11", 1, 0, "ECI-20 K2 (SHIFT JIS); ZXing-C++ doesn't map Shift JIS ASCII" }, | |
| 387 /*102*/ { UNICODE_MODE, 0, 4, -1, "…", ZINT_WARN_NONCOMPLIANT, 0, "Warning 80 10 11 80 EC 11 EC 11 EC", 1, 1, "K1 (SHIFT JIS)" }, | |
| 388 /*103*/ { UNICODE_MODE, 21, 4, -1, "…", 0, 21, "71 54 01 85 00 EC 11 EC 11", 1, 1, "ECI-21 B1 (Win 1250)" }, | |
| 389 /*104*/ { UNICODE_MODE, 0, 4, 7 << 8, "Ґ", ZINT_WARN_USES_ECI, 22, "Warning 71 64 01 A5 00 EC 11 EC 11", 1, 1, "ECI-22 B1 (Win 1251)" }, | |
| 390 /*105*/ { UNICODE_MODE, 22, 4, 7 << 8, "Ґ", 0, 22, "71 64 01 A5 00 EC 11 EC 11", 1, 1, "ECI-22 B1 (Win 1251)" }, | |
| 391 /*106*/ { UNICODE_MODE, 0, 4, 6 << 8, "˜", ZINT_WARN_USES_ECI, 23, "Warning 71 74 01 98 00 EC 11 EC 11", 1, 1, "ECI-23 B1 (Win 1252)" }, | |
| 392 /*107*/ { UNICODE_MODE, 23, 4, 6 << 8, "˜", 0, 23, "71 74 01 98 00 EC 11 EC 11", 1, 1, "ECI-23 B1 (Win 1252)" }, | |
| 393 /*108*/ { UNICODE_MODE, 24, 4, 5 << 8, "پ", 0, 24, "71 84 01 81 00 EC 11 EC 11", 1, 1, "ECI-24 B1 (Win 1256)" }, | |
| 394 /*109*/ { UNICODE_MODE, 0, 4, 7 << 8, "က", ZINT_WARN_USES_ECI, 26, "Warning 71 A4 03 E1 80 80 00 EC 11", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 395 /*110*/ { UNICODE_MODE, 25, 4, -1, "က", 0, 25, "71 94 02 10 00 00 EC 11 EC", 1, 1, "ECI-25 B2 (UCS-2BE)" }, | |
| 396 /*111*/ { UNICODE_MODE, 25, 4, 4 << 8, "ကက", 0, 25, "71 94 04 10 00 10 00 00 EC", 1, 1, "ECI-25 B4 (UCS-2BE)" }, | |
| 397 /*112*/ { UNICODE_MODE, 25, 4, -1, "12", 0, 25, "71 94 04 00 31 00 32 00 EC", 1, 1, "ECI-25 B4 (UCS-2BE ASCII)" }, | |
| 398 /*113*/ { UNICODE_MODE, 27, 4, 4 << 8, "@", 0, 27, "71 B4 01 40 00 EC 11 EC 11", 1, 1, "ECI-27 B1 (ASCII)" }, | |
| 399 /*114*/ { UNICODE_MODE, 0, 4, -1, "龘", ZINT_WARN_USES_ECI, 26, "Warning 71 A4 03 E9 BE 98 00 EC 11", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 400 /*115*/ { UNICODE_MODE, 28, 4, 3 << 8, "龘", 0, 28, "71 C4 02 F9 D5 00 EC 11 EC", 1, 1, "ECI-28 B2 (Big5)" }, | |
| 401 /*116*/ { UNICODE_MODE, 28, 4, 4 << 8, "龘龘", 0, 28, "71 C4 04 F9 D5 F9 D5 00 EC", 1, 1, "ECI-28 B4 (Big5)" }, | |
| 402 /*117*/ { UNICODE_MODE, 0, 4, 8 << 8, "齄", ZINT_WARN_USES_ECI, 26, "Warning 71 A4 03 E9 BD 84 00 EC 11", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 403 /*118*/ { UNICODE_MODE, 29, 4, -1, "齄", 0, 29, "71 D4 02 F7 FE 00 EC 11 EC", 1, 1, "ECI-29 B2 (GB 2312)" }, | |
| 404 /*119*/ { UNICODE_MODE, 29, 4, 4 << 8, "齄齄", 0, 29, "71 D4 04 F7 FE F7 FE 00 EC", 1, 1, "ECI-29 B4 (GB 2312)" }, | |
| 405 /*120*/ { UNICODE_MODE, 0, 4, 8 << 8, "가", ZINT_WARN_USES_ECI, 26, "Warning 71 A4 03 EA B0 80 00 EC 11", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 406 /*121*/ { UNICODE_MODE, 30, 4, -1, "가", 0, 30, "71 E4 02 B0 A1 00 EC 11 EC", 1, 1, "ECI-30 B2 (EUC-KR)" }, | |
| 407 /*122*/ { UNICODE_MODE, 30, 4, -1, "가가", 0, 30, "71 E4 04 B0 A1 B0 A1 00 EC", 1, 1, "ECI-30 B4 (EUC-KR)" }, | |
| 408 /*123*/ { UNICODE_MODE, 170, 4, 2 << 8, "?", 0, 170, "78 0A A4 01 3F 00 EC 11 EC", 1, 1, "ECI-170 B1 (ASCII invariant)" }, | |
| 409 /*124*/ { DATA_MODE, 899, 4, 3 << 8, "\200", 0, 899, "78 38 34 01 80 00 EC 11 EC", 1, 1, "ECI-899 B1 (8-bit binary)" }, | |
| 410 /*125*/ { UNICODE_MODE, 900, 4, 8 << 8, "é", 0, 900, "78 38 44 02 C3 A9 00 EC 11", 1, 1, "ECI-900 B2 (no conversion)" }, | |
| 411 /*126*/ { UNICODE_MODE, 16384, 4, 8 << 8, "é", 0, 16384, "7C 04 00 04 02 C3 A9 00 EC", 1, 1, "ECI-16384 B2 (no conversion)" }, | |
| 412 /*127*/ { UNICODE_MODE, 3, 4, -1, "product:Google Pixel 4a - 128 GB of Storage - Black;price:$439.97", 0, 3, "(86) 70 34 39 70 72 6F 64 75 63 74 3A 47 6F 6F 67 6C 65 20 50 69 78 65 6C 20 34 61 20 2D", 0, 1, "ECI-3 B57 A8; BWIPP different encodation (B65)" }, | |
| 413 /*128*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\201\176", 0, 0, "80 10 1F 00 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS 0x817E)" }, | |
| 414 /*129*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\201\177", 0, 0, "40 28 17 F0 EC 11 EC 11 EC", 1, 1, "B2 (0x817F previously used Kanji mode, now excludes trailing 0x7F)" }, | |
| 415 /*130*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\201\200", 0, 0, "80 10 20 00 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS 0x8180)" }, | |
| 416 /*131*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\237\176", 0, 0, "80 1B 5F 00 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS 0x9F7E)" }, | |
| 417 /*132*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (1 << 8), "\237\177", 0, 0, "40 29 F7 F0 EC 11 EC 11 EC", 1, 1, "B2 (0x9F7F previously used Kanji mode, now excludes trailing 0x7F)" }, | |
| 418 /*133*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (5 << 8), "\340\176", 0, 0, "80 1B BF 00 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS 0xE07E)" }, | |
| 419 /*134*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\340\177", 0, 0, "40 2E 07 F0 EC 11 EC 11 EC", 1, 1, "B2 (0xE07F previously used Kanji mode, now excludes trailing 0x7F)" }, | |
| 420 /*135*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (4 << 8), "\352\244", 0, 0, "80 1F 92 00 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS 0xEAA4, last valid codepoint)" }, | |
| 421 /*136*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (6 << 8), "\353\277", 0, 0, "80 1F FF 80 EC 11 EC 11 EC", 1, 1, "K1 (0xEBBF undefined in Shift JIS but not checked and uses Kanji mode)" }, | |
| 422 /*137*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\353\300", 0, 0, "40 2E BC 00 EC 11 EC 11 EC", 1, 1, "B2 (0xEBC0 was always excluded)" }, | |
| 423 /*138*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\201\300", 0, 0, "80 10 40 00 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS 0x81C0)" }, | |
| 424 /*139*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (2 << 8), "\201\374", 0, 0, "80 10 5E 00 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS 0x81FC)" }, | |
| 425 /*140*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (8 << 8), "\201\375", 0, 0, "40 28 1F D0 EC 11 EC 11 EC", 1, 1, "B2 (0x81FD previously used Kanji mode, now excludes trailing 0xFD)" }, | |
| 426 /*141*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (4 << 8), "\201\376", 0, 0, "40 28 1F E0 EC 11 EC 11 EC", 1, 1, "B2 (0x81FE previously used Kanji mode, now excludes trailing 0xFE)" }, | |
| 427 /*142*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (6 << 8), "\201\377", 0, 0, "40 28 1F F0 EC 11 EC 11 EC", 1, 1, "B2 (0x81FF previously used Kanji mode, now excludes trailing 0xFF)" }, | |
| 428 /*143*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (6 << 8), "\201\377", 0, 0, "40 28 1F F0 EC 11 EC 11 EC", 1, 1, "B2 (0x81FF previously used Kanji mode, now excludes trailing 0xFF)" }, | |
| 429 /*144*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (7 << 8), "\201\255", 0, 0, "80 10 36 80 EC 11 EC 11 EC", 1, 1, "K1 (0x81AD undefined in Shift JIS but not checked and uses Kanji mode)" }, | |
| 430 }; | |
| 431 const int data_size = ARRAY_SIZE(data); | |
| 432 int i, length, ret; | |
| 433 struct zint_symbol *symbol = NULL; | |
| 434 | |
| 435 char escaped[4096]; | |
| 436 char cmp_buf[32768]; | |
| 437 char cmp_msg[1024]; | |
| 438 | |
| 439 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 440 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 441 | |
| 442 testStartSymbol("test_qr_input", &symbol); | |
| 443 | |
| 444 for (i = 0; i < data_size; i++) { | |
| 445 | |
| 446 if (testContinue(p_ctx, i)) continue; | |
| 447 | |
| 448 symbol = ZBarcode_Create(); | |
| 449 assert_nonnull(symbol, "Symbol not created\n"); | |
| 450 | |
| 451 debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ | |
| 452 | |
| 453 length = testUtilSetSymbol(symbol, BARCODE_QRCODE, data[i].input_mode, data[i].eci, data[i].option_1, -1, data[i].option_3, -1 /*output_options*/, data[i].data, -1, debug); | |
| 454 | |
| 455 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 456 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 457 | |
| 458 if (p_ctx->generate) { | |
| 459 printf(" /*%3d*/ { %s, %d, %d, %s, \"%s\", %s, %d, \"%s\", %d, %d, \"%s\" },\n", | |
| 460 i, testUtilInputModeName(data[i].input_mode), data[i].eci, data[i].option_1, | |
| 461 testUtilOption3Name(BARCODE_QRCODE, data[i].option_3), | |
| 462 testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), | |
| 463 testUtilErrorName(data[i].ret), ret < ZINT_ERROR ? symbol->eci : -1, symbol->errtxt, | |
| 464 data[i].bwipp_cmp, data[i].zxingcpp_cmp, data[i].comment); | |
| 465 } else { | |
| 466 if (ret < ZINT_ERROR) { | |
| 467 assert_equal(symbol->eci, data[i].expected_eci, "i:%d eci %d != %d\n", i, symbol->eci, data[i].expected_eci); | |
| 468 } | |
| 469 assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); | |
| 470 | |
| 471 if (ret < ZINT_ERROR) { | |
| 472 if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, -1, data[i].option_3 | ZINT_FULL_MULTIBYTE, debug)) { | |
| 473 if (!data[i].bwipp_cmp) { | |
| 474 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 475 } else { | |
| 476 char modules_dump[177 * 177 + 1]; | |
| 477 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 478 ret = testUtilBwipp(i, symbol, data[i].option_1, -1, data[i].option_3 | ZINT_FULL_MULTIBYTE, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); | |
| 479 assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 480 | |
| 481 ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); | |
| 482 assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", | |
| 483 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); | |
| 484 } | |
| 485 } | |
| 486 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { | |
| 487 if (!data[i].zxingcpp_cmp) { | |
| 488 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not ZXing-C++ compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 489 } else { | |
| 490 int cmp_len, ret_len; | |
| 491 char modules_dump[177 * 177 + 1]; | |
| 492 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 493 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 494 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 495 | |
| 496 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); | |
| 497 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 498 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 499 } | |
| 500 } | |
| 501 } | |
| 502 } | |
| 503 | |
| 504 ZBarcode_Delete(symbol); | |
| 505 } | |
| 506 | |
| 507 testFinish(); | |
| 508 } | |
| 509 | |
| 510 static void test_qr_gs1(const testCtx *const p_ctx) { | |
| 511 int debug = p_ctx->debug; | |
| 512 | |
| 513 struct item { | |
| 514 int input_mode; | |
| 515 int option_1; | |
| 516 int option_3; | |
| 517 char *data; | |
| 518 int ret; | |
| 519 char *expected; | |
| 520 int bwipp_cmp; | |
| 521 char *comment; | |
| 522 }; | |
| 523 static const struct item data[] = { | |
| 524 /* 0*/ { GS1_MODE, 4, 7 << 8, "[01]12345678901231", 0, "51 04 00 B3 AA 37 DE 87 B1", 1, "N16" }, | |
| 525 /* 1*/ { GS1_MODE | GS1PARENS_MODE, 4, 7 << 8, "(01)12345678901231", 0, "51 04 00 B3 AA 37 DE 87 B1", 1, "N16" }, | |
| 526 /* 2*/ { GS1_MODE, 2, 4 << 8, "[01]04912345123459[15]970331[30]128[10]ABC123", 0, "51 07 40 A7 AC EA 80 15 9E 4F CA 52 D2 D3 84 09 D5 E0 28 FD 82 F0 C0 EC 11 EC 11 EC", 1, "N29 A9" }, | |
| 527 /* 3*/ { GS1_MODE | GS1PARENS_MODE, 2, 4 << 8, "(01)04912345123459(15)970331(30)128(10)ABC123", 0, "51 07 40 A7 AC EA 80 15 9E 4F CA 52 D2 D3 84 09 D5 E0 28 FD 82 F0 C0 EC 11 EC 11 EC", 1, "N29 A9" }, | |
| 528 /* 4*/ { GS1_MODE, 3, -1, "[91]12%[20]12", 0, "52 05 99 60 5F B5 35 80 01 08 00 EC 11", 1, "A10(11)" }, | |
| 529 /* 5*/ { GS1_MODE, 3, 1 << 8, "[91]123%[20]12", 0, "52 06 19 60 5E 2B 76 A0 5A 05 E0 EC 11", 1, "A11(12)" }, | |
| 530 /* 6*/ { GS1_MODE, 3, 6 << 8, "[91]1234%[20]12", 0, "52 06 99 60 5E 22 F6 A6 B0 00 21 00 EC", 1, "A12(13)" }, | |
| 531 /* 7*/ { GS1_MODE, 3, -1, "[91]12345%[20]12", 0, "51 01 F8 F3 A9 48 0F B5 35 80 01 08 00", 1, "N7 A6(7) (same bit count as A13(14))" }, | |
| 532 /* 8*/ { GS1_MODE, 3, 8 << 8, "[91]%%[20]12", 0, "52 05 99 6D A9 B5 35 80 01 08 00 EC 11", 1, "A9(11)" }, | |
| 533 /* 9*/ { GS1_MODE, 3, 6 << 8, "[91]%%%[20]12", 0, "52 06 99 6D A9 B5 36 A6 B0 00 21 00 EC", 1, "A10(13)" }, | |
| 534 /* 10*/ { GS1_MODE, 3, 6 << 8, "[91]A%%%%1234567890123AA%", 0, "54 07 39 31 41 25 25 25 25 10 34 7B 72 31 50 30 C8 08 73 36 A0 00", 0, "B7 N13 A3(4); BWIPP different encoding (same no. codewords)" }, | |
| 535 /* 11*/ { GS1_MODE, 1, -1, "[91]%23%%6789%%%34567%%%%234%%%%%", 0, "(34) 52 0C 99 6D A8 17 76 A6 D4 22 A5 C7 6A 6D 4D A8 22 C7 38 E8 18 4A 4A 4A 4A 64 66 68", 0, "A19(25) B12; BWIPP different encoding (same no. codewords, less padding)" }, | |
| 536 /* 12*/ { GS1_MODE, 2, 5 << 8, "[91]ABCDEFGHI[92]ABCDEF", 0, "52 0A 19 63 9A 8A 54 2A E1 6A 06 5C E6 A2 95 0A", 1, "A20(23)" }, | |
| 537 /* 13*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]%", 0, "54 01 25 00 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11", 0, "B1; BWIPP different encoding (A2)" }, | |
| 538 /* 14*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]%A", 0, "54 02 25 41 00 EC 11 EC 11 EC 11 EC 11 EC 11 EC", 0, "B2; BWIPP different encoding (A3)" }, | |
| 539 /* 15*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]A%", 0, "54 02 41 25 00 EC 11 EC 11 EC 11 EC 11 EC 11 EC", 0, "B2; BWIPP different encoding (A3)" }, | |
| 540 /* 16*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]%AA", 0, "52 02 6D 43 98 00 EC 11 EC 11 EC 11 EC 11 EC 11", 1, "A3(4)" }, | |
| 541 /* 17*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]A%A", 0, "52 02 1E 8D 70 00 EC 11 EC 11 EC 11 EC 11 EC 11", 1, "A3(4)" }, | |
| 542 /* 18*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]AA%", 0, "52 02 1C CD A8 00 EC 11 EC 11 EC 11 EC 11 EC 11", 1, "A3(4)" }, | |
| 543 /* 19*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]%%", 0, "54 02 25 25 00 EC 11 EC 11 EC 11 EC 11 EC 11 EC", 0, "B2; BWIPP different encoding (A4)" }, | |
| 544 /* 20*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]%%A", 0, "54 03 25 25 41 00 EC 11 EC 11 EC 11 EC 11 EC 11", 0, "B3; BWIPP different encoding (A5)" }, | |
| 545 /* 21*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]%A%", 0, "54 03 25 41 25 00 EC 11 EC 11 EC 11 EC 11 EC 11", 0, "B3; BWIPP different encoding (A5)" }, | |
| 546 /* 22*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]A%%", 0, "54 03 41 25 25 00 EC 11 EC 11 EC 11 EC 11 EC 11", 0, "B3; BWIPP different encoding (A5)" }, | |
| 547 /* 23*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]%AAA", 0, "52 02 ED 43 98 50 00 EC 11 EC 11 EC 11 EC 11 EC", 1, "A4(5)" }, | |
| 548 /* 24*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]A%AA", 0, "52 02 9E 8D 70 50 00 EC 11 EC 11 EC 11 EC 11 EC", 1, "A4(5)" }, | |
| 549 /* 25*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]A%AA", 0, "52 02 9E 8D 70 50 00 EC 11 EC 11 EC 11 EC 11 EC", 1, "A4(5)" }, | |
| 550 /* 26*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]AA%A", 0, "52 02 9C CD A8 50 00 EC 11 EC 11 EC 11 EC 11 EC", 1, "A4(5)" }, | |
| 551 /* 27*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]AAA%", 0, "52 02 9C C3 D1 30 00 EC 11 EC 11 EC 11 EC 11 EC", 1, "A4(5)" }, | |
| 552 /* 28*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]%%AA", 0, "54 04 25 25 41 41 00 EC 11 EC 11 EC 11 EC 11 EC", 0, "B4; BWIPP different encoding (A6) (same no. codewords)" }, | |
| 553 /* 29*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]%A%A", 0, "54 04 25 41 25 41 00 EC 11 EC 11 EC 11 EC 11 EC", 0, "B4; BWIPP different encoding (A6) (same no. codewords)" }, | |
| 554 /* 30*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]A%%A", 0, "54 04 41 25 25 41 00 EC 11 EC 11 EC 11 EC 11 EC", 0, "B4; BWIPP different encoding (A6) (same no. codewords)" }, | |
| 555 /* 31*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]A%A%", 0, "54 04 41 25 41 25 00 EC 11 EC 11 EC 11 EC 11 EC", 0, "B4; BWIPP different encoding (A6) (same no. codewords)" }, | |
| 556 /* 32*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 5 << 8, "[]AA%%", 0, "54 04 41 41 25 25 00 EC 11 EC 11 EC 11 EC 11 EC", 0, "B4; BWIPP different encoding (A6) (same no. codewords)" }, | |
| 557 /* 33*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%AAA", 0, "52 03 ED 4D A8 73 0A 00 EC 11 EC 11 EC 11 EC 11", 1, "A5(7)" }, | |
| 558 /* 34*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%A%AA", 0, "52 03 ED 43 D1 AE 0A 00 EC 11 EC 11 EC 11 EC 11", 1, "A5(7)" }, | |
| 559 /* 35*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]A%%AA", 0, "52 03 9E 8D A9 AE 0A 00 EC 11 EC 11 EC 11 EC 11", 1, "A5(7)" }, | |
| 560 /* 36*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]A%A%A", 0, "52 03 9E 8D 71 B5 0A 00 EC 11 EC 11 EC 11 EC 11", 1, "A5(7)" }, | |
| 561 /* 37*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AA%%A", 0, "52 03 9C CD A9 B5 0A 00 EC 11 EC 11 EC 11 EC 11", 1, "A5(7)" }, | |
| 562 /* 38*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AA%A%", 0, "52 03 9C CD A8 7A 26 00 EC 11 EC 11 EC 11 EC 11", 1, "A5(7)" }, | |
| 563 /* 39*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AAA%%", 0, "52 03 9C C3 D1 B5 26 00 EC 11 EC 11 EC 11 EC 11", 1, "A5(7)" }, | |
| 564 /* 40*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%%", 0, "54 03 25 25 25 00 EC 11 EC 11 EC 11 EC 11 EC 11", 0, "B3; BWIPP different encoding (A6)" }, | |
| 565 /* 41*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%%A", 0, "54 04 25 25 25 41 00 EC 11 EC 11 EC 11 EC 11 EC", 0, "B4; BWIPP different encoding (A7)" }, | |
| 566 /* 42*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%A%", 0, "54 04 25 25 41 25 00 EC 11 EC 11 EC 11 EC 11 EC", 0, "B4; BWIPP different encoding (A7)" }, | |
| 567 /* 43*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%A%%", 0, "54 04 25 41 25 25 00 EC 11 EC 11 EC 11 EC 11 EC", 0, "B4; BWIPP different encoding (A7)" }, | |
| 568 /* 44*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]A%%%", 0, "54 04 41 25 25 25 00 EC 11 EC 11 EC 11 EC 11 EC", 0, "B4; BWIPP different encoding (A7)" }, | |
| 569 /* 45*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%%AA", 0, "54 05 25 25 25 41 41 00 EC 11 EC 11 EC 11 EC 11", 0, "B5; BWIPP different encoding (A8)" }, | |
| 570 /* 46*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AA%%%", 0, "54 05 41 41 25 25 25 00 EC 11 EC 11 EC 11 EC 11", 0, "B5; BWIPP different encoding (A8)" }, | |
| 571 /* 47*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%%AAA", 0, "54 06 25 25 25 41 41 41 00 EC 11 EC 11 EC 11 EC", 0, "B6; BWIPP different encoding (A9)" }, | |
| 572 /* 48*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]A%A%A%", 0, "54 06 41 25 41 25 41 25 00 EC 11 EC 11 EC 11 EC", 0, "B6; BWIPP different encoding (A9)" }, | |
| 573 /* 49*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%AAAA", 0, "52 04 6D 4D A8 73 0E 60 00 EC 11 EC 11 EC 11 EC", 1, "A6(8)" }, | |
| 574 /* 50*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%A%AAA", 0, "52 04 6D 43 D1 AE 0E 60 00 EC 11 EC 11 EC 11 EC", 1, "A6(8)" }, | |
| 575 /* 51*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AA%AA", 0, "52 04 6D 43 99 B5 0E 60 00 EC 11 EC 11 EC 11 EC", 1, "A6(8)" }, | |
| 576 /* 52*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AAA%A", 0, "52 04 6D 43 98 7A 35 C0 00 EC 11 EC 11 EC 11 EC", 1, "A6(8)" }, | |
| 577 /* 53*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AAAA%", 0, "52 04 6D 43 98 73 36 A0 00 EC 11 EC 11 EC 11 EC", 1, "A6(8)" }, | |
| 578 /* 54*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]A%%AAA", 0, "52 04 1E 8D A9 AE 0E 60 00 EC 11 EC 11 EC 11 EC", 1, "A6(8)" }, | |
| 579 /* 55*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AA%%AA", 0, "52 04 1C CD A9 B5 0E 60 00 EC 11 EC 11 EC 11 EC", 1, "A6(8)" }, | |
| 580 /* 56*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AAA%%A", 0, "52 04 1C C3 D1 B5 35 C0 00 EC 11 EC 11 EC 11 EC", 1, "A6(8)" }, | |
| 581 /* 57*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AAAA%%", 0, "52 04 1C C3 99 B5 36 A0 00 EC 11 EC 11 EC 11 EC", 1, "A6(8)" }, | |
| 582 /* 58*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%AAAAA", 0, "52 04 ED 4D A8 73 0E 61 40 EC 11 EC 11 EC 11 EC", 1, "A7(9)" }, | |
| 583 /* 59*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%A%AAAA", 0, "52 04 ED 43 D1 AE 0E 61 40 EC 11 EC 11 EC 11 EC", 1, "A7(9)" }, | |
| 584 /* 60*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AA%AAA", 0, "52 04 ED 43 99 B5 0E 61 40 EC 11 EC 11 EC 11 EC", 1, "A7(9)" }, | |
| 585 /* 61*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AAA%AA", 0, "52 04 ED 43 98 7A 35 C1 40 EC 11 EC 11 EC 11 EC", 1, "A7(9)" }, | |
| 586 /* 62*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AAAA%A", 0, "52 04 ED 43 98 73 36 A1 40 EC 11 EC 11 EC 11 EC", 1, "A7(9)" }, | |
| 587 /* 63*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AAAAA%", 0, "52 04 ED 43 98 73 0F 44 C0 EC 11 EC 11 EC 11 EC", 1, "A7(9)" }, | |
| 588 /* 64*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%%AAAAA", 0, "52 05 ED 4D A9 B5 0E 61 CC 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 589 /* 65*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%A%AAAA", 0, "52 05 ED 4D A8 7A 35 C1 CC 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 590 /* 66*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%AA%AAA", 0, "52 05 ED 4D A8 73 36 A1 CC 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 591 /* 67*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%AAA%AA", 0, "52 05 ED 4D A8 73 0F 46 B8 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 592 /* 68*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%AAAA%A", 0, "52 05 ED 4D A8 73 0E 66 D4 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 593 /* 69*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%AAAAA%", 0, "52 05 ED 4D A8 73 0E 61 E8 98 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 594 /* 70*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%A%%AAAA", 0, "52 05 ED 43 D1 B5 35 C1 CC 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 595 /* 71*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AA%%AAA", 0, "52 05 ED 43 99 B5 36 A1 CC 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 596 /* 72*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AAA%%AA", 0, "52 05 ED 43 98 7A 36 A6 B8 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 597 /* 73*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AAAA%%A", 0, "52 05 ED 43 98 73 36 A6 D4 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 598 /* 74*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AAAAA%%", 0, "52 05 ED 43 98 73 0F 46 D4 98 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 599 /* 75*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]A%%%AAAA", 0, "52 05 9E 8D A9 B5 35 C1 CC 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 600 /* 76*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AA%%%AAA", 0, "52 05 9C CD A9 B5 36 A1 CC 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 601 /* 77*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AAA%%%AA", 0, "52 05 9C C3 D1 B5 36 A6 B8 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 602 /* 78*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AAAA%%%A", 0, "52 05 9C C3 99 B5 36 A6 D4 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 603 /* 79*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AAAAA%%%", 0, "52 05 9C C3 98 7A 36 A6 D4 98 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 604 /* 80*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]A%A%A%AA", 0, "52 05 9E 8D 71 B5 0F 46 B8 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 605 /* 81*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]A%A%AA%A", 0, "52 05 9E 8D 71 B5 0E 66 D4 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 606 /* 82*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]A%A%AAA%", 0, "52 05 9E 8D 71 B5 0E 61 E8 98 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 607 /* 83*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%A%A%AAA", 0, "52 05 ED 43 D1 AE 36 A1 CC 28 00 EC 11 EC 11 EC", 1, "A8(11)" }, | |
| 608 /* 84*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%%%AAAAAA", 0, "52 07 6D 4D A9 B5 36 A1 CC 39 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 609 /* 85*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%%A%AAAAA", 0, "52 07 6D 4D A9 B5 0F 46 B8 39 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 610 /* 86*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%%AA%AAAA", 0, "52 07 6D 4D A9 B5 0E 66 D4 39 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 611 /* 87*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%%AAA%AAA", 0, "52 07 6D 4D A9 B5 0E 61 E8 D7 07 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 612 /* 88*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%%AAAA%AA", 0, "52 07 6D 4D A9 B5 0E 61 CC DA 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 613 /* 89*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%%AAAAA%A", 0, "52 07 6D 4D A9 B5 0E 61 CC 3D 1A E0 00 EC 11 EC", 1, "A10(14)" }, | |
| 614 /* 90*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%%AAAAAA%", 0, "52 07 6D 4D A9 B5 0E 61 CC 39 9B 50 00 EC 11 EC", 1, "A10(14)" }, | |
| 615 /* 91*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%A%%AAAAA", 0, "52 07 6D 4D A8 7A 36 A6 B8 39 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 616 /* 92*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%AA%%AAAA", 0, "52 07 6D 4D A8 73 36 A6 D4 39 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 617 /* 93*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%AAA%%AAA", 0, "52 07 6D 4D A8 73 0F 46 D4 D7 07 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 618 /* 94*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%AAAA%%AA", 0, "52 07 6D 4D A8 73 0E 66 D4 DA 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 619 /* 95*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%AAAAA%%A", 0, "52 07 6D 4D A8 73 0E 61 E8 DA 9A E0 00 EC 11 EC", 1, "A10(14)" }, | |
| 620 /* 96*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%%AAAAAA%%", 0, "52 07 6D 4D A8 73 0E 61 CC DA 9B 50 00 EC 11 EC", 1, "A10(14)" }, | |
| 621 /* 97*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%A%%%AAAAA", 0, "52 07 6D 43 D1 B5 36 A6 B8 39 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 622 /* 98*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AA%%%AAAA", 0, "52 07 6D 43 99 B5 36 A6 D4 39 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 623 /* 99*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AAA%%%AAA", 0, "52 07 6D 43 98 7A 36 A6 D4 D7 07 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 624 /*100*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AAAA%%%AA", 0, "52 07 6D 43 98 73 36 A6 D4 DA 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 625 /*101*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AAAAA%%%A", 0, "52 07 6D 43 98 73 0F 46 D4 DA 9A E0 00 EC 11 EC", 1, "A10(14)" }, | |
| 626 /*102*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%AAAAAA%%%", 0, "52 07 6D 43 98 73 0E 66 D4 DA 9B 50 00 EC 11 EC", 1, "A10(14)" }, | |
| 627 /*103*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]A%%%%AAAAA", 0, "52 07 1E 8D A9 B5 36 A6 B8 39 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 628 /*104*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AA%%%%AAAA", 0, "52 07 1C CD A9 B5 36 A6 D4 39 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 629 /*105*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AAA%%%%AAA", 0, "52 07 1C C3 D1 B5 36 A6 D4 D7 07 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 630 /*106*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AAAA%%%%AA", 0, "52 07 1C C3 99 B5 36 A6 D4 DA 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 631 /*107*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AAAAA%%%%A", 0, "52 07 1C C3 98 7A 36 A6 D4 DA 9A E0 00 EC 11 EC", 1, "A10(14)" }, | |
| 632 /*108*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]AAAAAA%%%%", 0, "52 07 1C C3 98 73 36 A6 D4 DA 9B 50 00 EC 11 EC", 1, "A10(14)" }, | |
| 633 /*109*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]A%A%A%A%AA", 0, "52 07 1E 8D 71 B5 0F 46 B8 DA 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 634 /*110*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]A%A%A%AA%A", 0, "52 07 1E 8D 71 B5 0F 46 B8 3D 1A E0 00 EC 11 EC", 1, "A10(14)" }, | |
| 635 /*111*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]A%A%A%AAA%", 0, "52 07 1E 8D 71 B5 0F 46 B8 39 9B 50 00 EC 11 EC", 1, "A10(14)" }, | |
| 636 /*112*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%A%A%A%AAA", 0, "52 07 6D 43 D1 AE 36 A1 E8 D7 07 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 637 /*113*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]A%%AA%A%AA", 0, "52 07 1E 8D A9 AE 0F 46 B8 DA 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 638 /*114*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%A%%AA%AAA", 0, "52 07 6D 43 D1 B5 35 C1 E8 D7 07 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 639 /*115*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%A%%AAA%AA", 0, "52 07 6D 43 D1 B5 35 C1 CC DA 87 30 00 EC 11 EC", 1, "A10(14)" }, | |
| 640 /*116*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%A%%AAAA%A", 0, "52 07 6D 43 D1 B5 35 C1 CC 3D 1A E0 00 EC 11 EC", 1, "A10(14)" }, | |
| 641 /*117*/ { GS1_MODE | GS1NOCHECK_MODE, 2, 3 << 8, "[]%A%%AAAAA%", 0, "52 07 6D 43 D1 B5 35 C1 CC 39 9B 50 00 EC 11 EC", 1, "A10(14)" }, | |
| 642 }; | |
| 643 const int data_size = ARRAY_SIZE(data); | |
| 644 int i, length, ret; | |
| 645 struct zint_symbol *symbol = NULL; | |
| 646 | |
| 647 char escaped[4096]; | |
| 648 char cmp_buf[32768]; | |
| 649 char cmp_msg[1024]; | |
| 650 | |
| 651 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 652 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 653 | |
| 654 testStartSymbol("test_qr_gs1", &symbol); | |
| 655 | |
| 656 for (i = 0; i < data_size; i++) { | |
| 657 | |
| 658 if (testContinue(p_ctx, i)) continue; | |
| 659 | |
| 660 symbol = ZBarcode_Create(); | |
| 661 assert_nonnull(symbol, "Symbol not created\n"); | |
| 662 | |
| 663 debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ | |
| 664 | |
| 665 length = testUtilSetSymbol(symbol, BARCODE_QRCODE, data[i].input_mode, -1 /*eci*/, data[i].option_1, -1, data[i].option_3, -1 /*output_options*/, data[i].data, -1, debug); | |
| 666 | |
| 667 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 668 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 669 | |
| 670 if (p_ctx->generate) { | |
| 671 printf(" /*%3d*/ { %s, %d, %s, \"%s\", %s, \"%s\", %d, \"%s\" },\n", | |
| 672 i, testUtilInputModeName(data[i].input_mode), data[i].option_1, | |
| 673 testUtilOption3Name(BARCODE_QRCODE, data[i].option_3), | |
| 674 testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), testUtilErrorName(data[i].ret), | |
| 675 symbol->errtxt, data[i].bwipp_cmp, data[i].comment); | |
| 676 } else { | |
| 677 assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); | |
| 678 | |
| 679 if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, -1, data[i].option_3, debug)) { | |
| 680 if (!data[i].bwipp_cmp) { | |
| 681 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 682 } else { | |
| 683 char modules_dump[177 * 177 + 1]; | |
| 684 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 685 ret = testUtilBwipp(i, symbol, data[i].option_1, -1, data[i].option_3, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); | |
| 686 assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 687 | |
| 688 ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); | |
| 689 assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", | |
| 690 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); | |
| 691 } | |
| 692 } | |
| 693 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { | |
| 694 if (0 /*!data[i].zxingcpp_cmp*/) { | |
| 695 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not ZXing-C++ compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 696 } else { | |
| 697 int cmp_len, ret_len; | |
| 698 char modules_dump[177 * 177 + 1]; | |
| 699 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 700 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 701 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 702 | |
| 703 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); | |
| 704 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 705 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 706 } | |
| 707 } | |
| 708 } | |
| 709 | |
| 710 ZBarcode_Delete(symbol); | |
| 711 } | |
| 712 | |
| 713 testFinish(); | |
| 714 } | |
| 715 | |
| 716 static void test_qr_optimize(const testCtx *const p_ctx) { | |
| 717 int debug = p_ctx->debug; | |
| 718 | |
| 719 struct item { | |
| 720 int input_mode; | |
| 721 int option_1; | |
| 722 int option_3; /* OR-ed with ZINT_FULL_MULTIBYTE */ | |
| 723 char *data; | |
| 724 int ret; | |
| 725 char *expected; | |
| 726 int bwipp_cmp; | |
| 727 char *comment; | |
| 728 }; | |
| 729 static const struct item data[] = { | |
| 730 /* 0*/ { UNICODE_MODE, 4, -1, "1", 0, "10 04 40 EC 11 EC 11 EC 11", 1, "N1" }, | |
| 731 /* 1*/ { UNICODE_MODE, 4, 5 << 8, "AAA", 0, "20 19 CC 28 00 EC 11 EC 11", 1, "A3" }, | |
| 732 /* 2*/ { UNICODE_MODE, 4, 1 << 8, "0123456789", 0, "10 28 0C 56 6A 69 00 EC 11", 1, " N10 (nayuki.io - pure numeric)" }, | |
| 733 /* 3*/ { UNICODE_MODE, 4, -1, "ABCDEF", 0, "20 31 CD 45 2A 14 00 EC 11", 1, "A6 (nayuki.io - pure alphanumeric)" }, | |
| 734 /* 4*/ { UNICODE_MODE, 4, -1, "wxyz", 0, "40 47 77 87 97 A0 EC 11 EC", 1, "B4 (nayuki.io - pure byte)" }, | |
| 735 /* 5*/ { UNICODE_MODE, 1, -1, "「魔法少女まどか☆マギカ」って、 ИАИ desu κα?", ZINT_WARN_NONCOMPLIANT, "Warning (55) 81 D0 1A C0 09 F8 0A ED 56 B8 57 02 8E 12 90 2C 86 F4 31 A1 8A 01 B0 50 42 88 00 10", 1, "K29 (nayuki.io - pure kanji)" }, | |
| 736 /* 6*/ { UNICODE_MODE, 4, 1 << 8, "012345A", 0, "20 38 01 0B A2 E4 A0 EC 11", 1, "A7 (nayuki.io - alpha/numeric)" }, | |
| 737 /* 7*/ { UNICODE_MODE, 4, -1, "0123456A", 0, "10 1C 0C 56 58 80 25 00 EC", 1, "N7 A1 (nayuki.io - alpha/numeric) (note same bits as A8)" }, | |
| 738 /* 8*/ { UNICODE_MODE, 4, 1 << 8, "012a", 0, "40 43 03 13 26 10 EC 11 EC", 1, "B4 (nayuki.io - numeric/byte)" }, | |
| 739 /* 9*/ { UNICODE_MODE, 4, 4 << 8, "0123a", 0, "10 10 0C 34 01 61 00 EC 11", 1, "N4 B1 (nayuki.io - numeric/byte)" }, | |
| 740 /* 10*/ { UNICODE_MODE, 4, 4 << 8, "ABCDEa", 0, "40 64 14 24 34 44 56 10 EC", 1, "B6 (nayuki.io - alphanumeric/byte)" }, | |
| 741 /* 11*/ { UNICODE_MODE, 4, -1, "ABCDEFa", 0, "20 31 CD 45 2A 15 00 58 40", 1, "A6 B1 (nayuki.io - alphanumeric/byte)" }, | |
| 742 /* 12*/ { UNICODE_MODE, 1, 1 << 8, "THE SQUARE ROOT OF 2 IS 1.41421356237309504880168872420969807856967187537694807317667973799", 0, "(55) 20 D5 2A 53 54 1A A8 4C DC DF 14 29 EC 47 CA D9 9A 88 05 71 10 59 E3 56 32 5D 45 F0", 1, " A26 N65 (nayuki.io - alpha/numeric)" }, | |
| 743 /* 13*/ { UNICODE_MODE, 1, -1, "Golden ratio φ = 1.6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911374......", ZINT_WARN_NONCOMPLIANT, "Warning (80) 41 44 76 F6 C6 46 56 E2 07 26 17 46 96 F2 08 3D 32 03 D2 03 12 E1 19 26 A0 87 DC BB", 1, "B20 N100 A6 (nayuki.io - alpha/numeric/byte)" }, | |
| 744 /* 14*/ { UNICODE_MODE, 1, -1, "こんにちwa、世界! αβγδ", ZINT_WARN_NONCOMPLIANT, "Warning (34) 41 B8 2B 18 2F 18 2C 98 2B F7 76 18 14 19 0A 28 A4 58 14 92 08 3B F8 3C 08 3C 18 3C", 1, "B27 (nayuki.io - kanji/european **NOT SAME** K4 B2 K4 A1 K4, less bits as nayuki (1.5.0) miscounting byte-mode input as UTF-8)" }, | |
| 745 /* 15*/ { UNICODE_MODE, 1, 2 << 8, "こんにちテwa、世界! αβγδ", ZINT_WARN_NONCOMPLIANT, "Warning (34) 80 50 98 85 C4 29 21 3F 0D 2A 09 BB B0 C0 A0 C8 51 45 22 C0 A4 90 41 DF C1 E0 41 E0", 1, "K5 B19 (nayuki.io - kanji/european + extra leading kanji **NOT SAME** K5 B2 K4 A1 K4, same reason as above)" }, | |
| 746 /* 16*/ { UNICODE_MODE, 1, 8 << 8, "67128177921547861663com.acme35584af52fa3-88d0-093b-6c14-b37ddafb59c528908608sg.com.dash.www0530329356521790265903SG.COM.NETS46968696003522G33250183309051017567088693441243693268766948304B2AE13344004SG.SGQR209710339366720B439682.63667470805057501195235502733744600368027857918629797829126902859SG8236HELLO FOO2517Singapore3272B815", 0, "(232) 10 52 9F 46 70 B3 5D DE 9A 1F A1 7B 1B 7B 69 73 0B 1B 6B 29 99 A9 A9 C1 A3 0B 31 A9", 1, "N20 B47 N9 B15 N22 A11 N14 A1 N47 A19 N15 A8 N65 A20 B8 A8 (nayuki.io - SGQR alpha/numeric/byte)" }, | |
| 747 /* 17*/ { UNICODE_MODE, 4, 1 << 8, "纪", ZINT_WARN_USES_ECI, "Warning 71 A4 03 E7 BA AA 00 EC 11", 1, "ECI-26 B3 (UTF-8 E7BAAA, U+7EAA, not in Shift JIS)" }, | |
| 748 /* 18*/ { DATA_MODE, 4, 1 << 8, "纪", 0, "40 3E 7B AA A0 EC 11 EC 11", 1, "B3 (UTF-8 or Shift JIS, note ambiguous as 0xE7BA 0xAA happens to be valid Shift JIS 郤ェ as well)" }, | |
| 749 /* 19*/ { UNICODE_MODE, 4, 1 << 8, "郤ェ", ZINT_WARN_NONCOMPLIANT, "Warning 40 3E 7B AA A0 EC 11 EC 11", 1, "B3 (Shift JIS or UTF-8 E7BAAA 纪, see above)" }, | |
| 750 /* 20*/ { UNICODE_MODE, 1, -1, "2004年大西洋颶風季是有纪录以来造成人员伤亡和财产损失最为惨重的大西洋飓风季之一,于2004年6月1日正式开始,同年11月30日结束,传统上这样的日期界定了一年中绝大多数热带气旋在大西洋形成的时间段lll ku", ZINT_WARN_USES_ECI, "Warning (324) 71 A1 00 43 21 10 04 4B 96 E6 D3 96 92 9F A2 96 FF 9A D2 2F A6 8A DB A6 8A A3 96 B6", 0, "ECI-26 N4 B274 (nayuki.io - kanji/byte/numeric **NOT SAME* N4 K9 B6 K5 etc mixing Shift JIS and UTF-8); BWIPP different encodation (N4 K1 B272)" }, | |
| 751 /* 21*/ { UNICODE_MODE, 4, 1 << 8, "AB123456A", 0, "20 49 CD 05 E2 2C 73 94 00", 1, "A9" }, | |
| 752 /* 22*/ { UNICODE_MODE, 3, -1, "AB1234567890A", 0, "20 69 CD 05 E2 2C 73 94 33 2A 50 00 EC", 1, "A13" }, | |
| 753 /* 23*/ { UNICODE_MODE, 3, -1, "AB123456789012A", 0, "20 79 CD 05 E2 2C 73 94 33 2A 0B CA 00", 1, "A15" }, | |
| 754 /* 24*/ { UNICODE_MODE, 3, -1, "AB1234567890123A", 0, "20 11 CD 10 34 7B 72 31 50 30 C8 02 50", 1, "A2 N13 A1" }, | |
| 755 /* 25*/ { UNICODE_MODE, 3, 2 << 8, "テaABCD1", ZINT_WARN_NONCOMPLIANT, "Warning 40 88 36 56 14 14 24 34 43 10 EC 11 EC", 1, "B8" }, | |
| 756 /* 26*/ { UNICODE_MODE, 3, -1, "テaABCDE1", ZINT_WARN_NONCOMPLIANT, "Warning 40 38 36 56 12 03 1C D4 52 9D C0 EC 11", 0, "B3 A6; BWIPP different encodation (B9)" }, | |
| 757 /* 27*/ { UNICODE_MODE, 2, -1, "テéaABCDE1", ZINT_WARN_USES_ECI, "Warning 71 A4 06 E3 83 86 C3 A9 61 20 31 CD 45 29 DC 00", 1, "B6 A6" }, | |
| 758 /* 28*/ { UNICODE_MODE, 2, -1, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", ZINT_WARN_NONCOMPLIANT, "Warning (44) 80 83 A8 85 88 25 CA 2F 40 B0 53 C2 44 98 41 00 4A 02 0E A8 F8 F5 0D 30 4C 35 A1 CC", 0, "K8 N1 K8 B3; BWIPP different encodation (K8 N1 K8 N1 K1)" }, | |
| 759 /* 29*/ { UNICODE_MODE, 1, -1, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。社ト可化モマ試音ばじご育青康演ぴぎ権型固スで能麩ぜらもほ河都しちほラ収90作の年要とだむ部動ま者断チ第41一1米索焦茂げむしれ。測フ物使だて目月国スリカハ夏検にいへ児72告物ゆは載核ロアメヱ登輸どべゃ催行アフエハ議歌ワ河倫剖だ。記タケウ因載ヒイホヤ禁3輩彦関トえび肝区勝ワリロ成禁ぼよ界白ウヒキレ中島べせぜい各安うしぽリ覧生テ基一でむしゃ中新トヒキソ声碁スしび起田ア信大未ゅもばち。", ZINT_WARN_NONCOMPLIANT, "Warning (589) 80 20 EA 21 62 09 72 8B D0 2C 14 F0 91 26 10 40 04 A0 08 3A A3 E3 D4 34 C1 30 D6 87", 0, "K8 N1 K8 N1 K10 N2 K33 N2 K16 N1 K89 N2 K14 B5 K28 N2 K40 N1 K65; BWIPP different encodation (same except A2 B6 instead of B5)" }, | |
| 760 }; | |
| 761 const int data_size = ARRAY_SIZE(data); | |
| 762 int i, length, ret; | |
| 763 struct zint_symbol *symbol = NULL; | |
| 764 | |
| 765 char escaped[4096]; | |
| 766 char cmp_buf[32768]; | |
| 767 char cmp_msg[1024]; | |
| 768 | |
| 769 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 770 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 771 | |
| 772 testStartSymbol("test_qr_optimize", &symbol); | |
| 773 | |
| 774 for (i = 0; i < data_size; i++) { | |
| 775 | |
| 776 if (testContinue(p_ctx, i)) continue; | |
| 777 | |
| 778 symbol = ZBarcode_Create(); | |
| 779 assert_nonnull(symbol, "Symbol not created\n"); | |
| 780 | |
| 781 debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ | |
| 782 | |
| 783 length = testUtilSetSymbol(symbol, BARCODE_QRCODE, data[i].input_mode, -1 /*eci*/, data[i].option_1, -1, data[i].option_3 | ZINT_FULL_MULTIBYTE, -1 /*output_options*/, data[i].data, -1, debug); | |
| 784 | |
| 785 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 786 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 787 | |
| 788 if (p_ctx->generate) { | |
| 789 printf(" /*%3d*/ { %s, %d, %d, \"%s\", %s, \"%s\", %d, \"%s\" },\n", | |
| 790 i, testUtilInputModeName(data[i].input_mode), data[i].option_1, data[i].option_3, testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), | |
| 791 testUtilErrorName(data[i].ret), symbol->errtxt, data[i].bwipp_cmp, data[i].comment); | |
| 792 } else { | |
| 793 assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); | |
| 794 | |
| 795 if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, -1, data[i].option_3 | ZINT_FULL_MULTIBYTE, debug)) { | |
| 796 if (!data[i].bwipp_cmp) { | |
| 797 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 798 } else { | |
| 799 char modules_dump[177 * 177 + 1]; | |
| 800 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 801 ret = testUtilBwipp(i, symbol, data[i].option_1, -1, data[i].option_3 | ZINT_FULL_MULTIBYTE, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); | |
| 802 assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 803 | |
| 804 ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); | |
| 805 assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", | |
| 806 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); | |
| 807 } | |
| 808 } | |
| 809 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { | |
| 810 int cmp_len, ret_len; | |
| 811 char modules_dump[177 * 177 + 1]; | |
| 812 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 813 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 814 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 815 | |
| 816 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); | |
| 817 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 818 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 819 } | |
| 820 } | |
| 821 | |
| 822 ZBarcode_Delete(symbol); | |
| 823 } | |
| 824 | |
| 825 testFinish(); | |
| 826 } | |
| 827 | |
| 828 static void test_qr_encode(const testCtx *const p_ctx) { | |
| 829 int debug = p_ctx->debug; | |
| 830 | |
| 831 struct item { | |
| 832 int symbology; | |
| 833 int input_mode; | |
| 834 int eci; | |
| 835 int option_1; | |
| 836 int option_2; | |
| 837 int option_3; | |
| 838 struct zint_structapp structapp; | |
| 839 char *data; | |
| 840 int length; | |
| 841 int ret; | |
| 842 | |
| 843 int expected_rows; | |
| 844 int expected_width; | |
| 845 int bwipp_cmp; | |
| 846 char *comment; | |
| 847 char *expected; | |
| 848 }; | |
| 849 /* や U+3084 kanji, in Shift JIS 0x82E2 (\202\342), UTF-8 E38284; its 2nd byte 0xE2 + 0x40-FC also form Shift JIS */ | |
| 850 static const struct item data[] = { | |
| 851 /* 0*/ { BARCODE_QRCODE, UNICODE_MODE, -1, -1, -1, -1, { 0, 0, "" }, "QR Code Symbol", -1, 0, 21, 21, 0, "ISO 18004 Figure 1 **NOT SAME** uses mask 110 instead of 101; BWIPP uses 101", | |
| 852 "111111101001101111111" | |
| 853 "100000101001101000001" | |
| 854 "101110101100101011101" | |
| 855 "101110100010001011101" | |
| 856 "101110101001101011101" | |
| 857 "100000100001101000001" | |
| 858 "111111101010101111111" | |
| 859 "000000000100100000000" | |
| 860 "100111111101010010111" | |
| 861 "100010001110001000111" | |
| 862 "010100110000101101011" | |
| 863 "110111001000010111110" | |
| 864 "011111111110001011011" | |
| 865 "000000001000011010101" | |
| 866 "111111101101101010100" | |
| 867 "100000101010011011100" | |
| 868 "101110101001110001110" | |
| 869 "101110101111001001100" | |
| 870 "101110100100101010011" | |
| 871 "100000100001101111111" | |
| 872 "111111101001011000000" | |
| 873 }, | |
| 874 /* 1*/ { BARCODE_QRCODE, UNICODE_MODE, -1, -1, -1, 6 << 8, { 0, 0, "" }, "QR Code Symbol", -1, 0, 21, 21, 1, "ISO 18004 Figure 1, explicit mask 101, same", | |
| 875 "111111100001101111111" | |
| 876 "100000101001101000001" | |
| 877 "101110101110101011101" | |
| 878 "101110101010001011101" | |
| 879 "101110100000101011101" | |
| 880 "100000100010101000001" | |
| 881 "111111101010101111111" | |
| 882 "000000001100100000000" | |
| 883 "100000101111011001110" | |
| 884 "100010001110001000111" | |
| 885 "011101111001100100010" | |
| 886 "110100001011010100110" | |
| 887 "011111111110001011011" | |
| 888 "000000001000000010110" | |
| 889 "111111100111111000110" | |
| 890 "100000100010011011100" | |
| 891 "101110100000111000111" | |
| 892 "101110100100001010100" | |
| 893 "101110100100101010011" | |
| 894 "100000100001110111100" | |
| 895 "111111101011001010010" | |
| 896 }, | |
| 897 /* 2*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 33, 33, 1, "ISO 18004 Figure 29 (top), same (mask 100)", | |
| 898 "111111101100110010010010101111111" | |
| 899 "100000100010111010111000101000001" | |
| 900 "101110100000001101101100001011101" | |
| 901 "101110101010000111000110001011101" | |
| 902 "101110101101100011010010001011101" | |
| 903 "100000101100010100001101101000001" | |
| 904 "111111101010101010101010101111111" | |
| 905 "000000001010000000011100100000000" | |
| 906 "100010111100001100100011011111001" | |
| 907 "100101000111001001000110000101100" | |
| 908 "010001100011111010101000011011001" | |
| 909 "101101011101010010000010010000000" | |
| 910 "001111110011010110010011101001100" | |
| 911 "011001000101001000111100110101001" | |
| 912 "101001111001111101001111000110111" | |
| 913 "100100010001000111100101111100000" | |
| 914 "110010111101110000011110111111100" | |
| 915 "010000010111100010001000010000111" | |
| 916 "111111111111010101000110010001111" | |
| 917 "001100010000000111100101010101110" | |
| 918 "111101111011101000111001010010001" | |
| 919 "100110000101001010010111000100001" | |
| 920 "000110111110111010010001011001000" | |
| 921 "001011010011101000011111011101111" | |
| 922 "111011111000010111001001111110000" | |
| 923 "000000001110110011111100100010100" | |
| 924 "111111101000110100101000101010011" | |
| 925 "100000100001010010001011100010000" | |
| 926 "101110101111011010000010111111100" | |
| 927 "101110100000111000111100000000101" | |
| 928 "101110100101010100001000010110100" | |
| 929 "100000100010110111000110101001001" | |
| 930 "111111101101101011010000111100011" | |
| 931 }, | |
| 932 /* 3*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, -1, -1, { 1, 4, "1" }, "ABCDEFGHIJKLMN", -1, 0, 21, 21, 1, "ISO 18004 Figure 29 (bottom 1st), same", | |
| 933 "111111100110001111111" | |
| 934 "100000101001101000001" | |
| 935 "101110100010001011101" | |
| 936 "101110100110001011101" | |
| 937 "101110101110101011101" | |
| 938 "100000100110101000001" | |
| 939 "111111101010101111111" | |
| 940 "000000000011100000000" | |
| 941 "101010100011000010010" | |
| 942 "100011011111010011011" | |
| 943 "100010111110101110101" | |
| 944 "010110000101011000000" | |
| 945 "110000111110110111001" | |
| 946 "000000001011010001010" | |
| 947 "111111100101110011101" | |
| 948 "100000100100001110101" | |
| 949 "101110101101011000101" | |
| 950 "101110100110100110110" | |
| 951 "101110101011010011101" | |
| 952 "100000100101110000001" | |
| 953 "111111101000110110101" | |
| 954 }, | |
| 955 /* 4*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, -1, 8 << 8, { 2, 4, "1" }, "OPQRSTUVWXYZ0123", -1, 0, 21, 21, 1, "ISO 18004 Figure 29 (bottom 2nd), same with explicit mask 111 (auto 011)", | |
| 956 "111111100011101111111" | |
| 957 "100000100001101000001" | |
| 958 "101110100001101011101" | |
| 959 "101110100101101011101" | |
| 960 "101110100100101011101" | |
| 961 "100000101000001000001" | |
| 962 "111111101010101111111" | |
| 963 "000000000111000000000" | |
| 964 "100101101001010100000" | |
| 965 "010111001001110011011" | |
| 966 "011110101011010010111" | |
| 967 "010100011110100110101" | |
| 968 "011100101100111110101" | |
| 969 "000000001011011100000" | |
| 970 "111111100110100011100" | |
| 971 "100000101001010100001" | |
| 972 "101110100100101101111" | |
| 973 "101110101100000010001" | |
| 974 "101110100110101001101" | |
| 975 "100000100111100011111" | |
| 976 "111111101011011110100" | |
| 977 }, | |
| 978 /* 5*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, -1, -1, { 3, 4, "1" }, "456789ABCDEFGHIJ", -1, 0, 21, 21, 1, "ISO 18004 Figure 29 (bottom 3rd), same", | |
| 979 "111111100101001111111" | |
| 980 "100000100011101000001" | |
| 981 "101110100010101011101" | |
| 982 "101110100111101011101" | |
| 983 "101110100010101011101" | |
| 984 "100000101110001000001" | |
| 985 "111111101010101111111" | |
| 986 "000000000001000000000" | |
| 987 "100101101101010100000" | |
| 988 "011011000001100111011" | |
| 989 "101010111101010110111" | |
| 990 "011001000101010100101" | |
| 991 "011111100110000110101" | |
| 992 "000000001010000111000" | |
| 993 "111111100100101101100" | |
| 994 "100000101101011001101" | |
| 995 "101110100010001101011" | |
| 996 "101110101101101110110" | |
| 997 "101110100100011001101" | |
| 998 "100000100011100101011" | |
| 999 "111111101011000011000" | |
| 1000 }, | |
| 1001 /* 6*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, -1, -1, { 4, 4, "1" }, "KLMNOPQRSTUVWXYZ", -1, 0, 21, 21, 1, "ISO 18004 Figure 29 (bottom 4th), same", | |
| 1002 "111111101011101111111" | |
| 1003 "100000101010101000001" | |
| 1004 "101110100011001011101" | |
| 1005 "101110101100001011101" | |
| 1006 "101110100111001011101" | |
| 1007 "100000100110001000001" | |
| 1008 "111111101010101111111" | |
| 1009 "000000001101000000000" | |
| 1010 "101101110110101001011" | |
| 1011 "010001011000010000101" | |
| 1012 "010000111010100101001" | |
| 1013 "110101001110001000100" | |
| 1014 "001101100000110000100" | |
| 1015 "000000001010101001001" | |
| 1016 "111111101111010111110" | |
| 1017 "100000101000101000011" | |
| 1018 "101110100101011000001" | |
| 1019 "101110101001111100101" | |
| 1020 "101110101001101111100" | |
| 1021 "100000100010110010010" | |
| 1022 "111111101110110101110" | |
| 1023 }, | |
| 1024 /* 7*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, 1, -1, { 0, 0, "" }, "01234567", -1, 0, 21, 21, 0, "ISO 18004 Annex I I.2, same (mask 010); BWIPP uses mask 000", | |
| 1025 "111111100101101111111" | |
| 1026 "100000100111101000001" | |
| 1027 "101110101000001011101" | |
| 1028 "101110101100001011101" | |
| 1029 "101110101011101011101" | |
| 1030 "100000101000101000001" | |
| 1031 "111111101010101111111" | |
| 1032 "000000001001100000000" | |
| 1033 "101111100100101111100" | |
| 1034 "000101011010100101100" | |
| 1035 "001000110101010011111" | |
| 1036 "000010000100000111100" | |
| 1037 "000111111001010010000" | |
| 1038 "000000001011111001100" | |
| 1039 "111111100110101100000" | |
| 1040 "100000101011111000101" | |
| 1041 "101110101000100101100" | |
| 1042 "101110101100100100000" | |
| 1043 "101110101011010010100" | |
| 1044 "100000100000000110110" | |
| 1045 "111111101111010010100" | |
| 1046 }, | |
| 1047 /* 8*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, 1, 1 << 8, { 0, 0, "" }, "01234567", -1, 0, 21, 21, 1, "ISO 18004 Annex I Figure I.2, explicit mask 000, same as BWIPP", | |
| 1048 "111111100011101111111" | |
| 1049 "100000101110001000001" | |
| 1050 "101110100110001011101" | |
| 1051 "101110100101101011101" | |
| 1052 "101110101101101011101" | |
| 1053 "100000100001001000001" | |
| 1054 "111111101010101111111" | |
| 1055 "000000000000000000000" | |
| 1056 "101010100010100010010" | |
| 1057 "110100001011010100010" | |
| 1058 "000110111011011101110" | |
| 1059 "110011010101110110010" | |
| 1060 "001001110111011100001" | |
| 1061 "000000001010001000010" | |
| 1062 "111111100000100010001" | |
| 1063 "100000100010001001011" | |
| 1064 "101110101110101011101" | |
| 1065 "101110100101010101110" | |
| 1066 "101110101101011100101" | |
| 1067 "100000100001110111000" | |
| 1068 "111111101001011100101" | |
| 1069 }, | |
| 1070 /* 9*/ { BARCODE_QRCODE, GS1_MODE, -1, 1, -1, -1, { 0, 0, "" }, "[01]09501101530003[8200]http://example.com", -1, 0, 25, 25, 0, "GS1 General Specifications 20.0 Figure 5.1-7 (note pre-21.0.1) **NOT SAME** figure uses Byte encodation only; BWIPP uses mask 001", | |
| 1071 "1111111001101101001111111" | |
| 1072 "1000001010010101001000001" | |
| 1073 "1011101011111010101011101" | |
| 1074 "1011101001100000101011101" | |
| 1075 "1011101010010011101011101" | |
| 1076 "1000001011001011101000001" | |
| 1077 "1111111010101010101111111" | |
| 1078 "0000000011000111100000000" | |
| 1079 "1101001100100010001110110" | |
| 1080 "0100110000101101111100111" | |
| 1081 "0011001001100011101111010" | |
| 1082 "0000100110010101000111101" | |
| 1083 "1110001000010010100010100" | |
| 1084 "0110010101110101100010110" | |
| 1085 "1011001100010101011110011" | |
| 1086 "0100110011000110001010110" | |
| 1087 "1111101100100000111110101" | |
| 1088 "0000000010011011100011010" | |
| 1089 "1111111010000111101010011" | |
| 1090 "1000001000010111100010110" | |
| 1091 "1011101001001001111110011" | |
| 1092 "1011101010100100100000000" | |
| 1093 "1011101000000010001010001" | |
| 1094 "1000001010110101100111010" | |
| 1095 "1111111011101100010010111" | |
| 1096 }, | |
| 1097 /* 10*/ { BARCODE_QRCODE, GS1_MODE, -1, 1, -1, 2 << 8, { 0, 0, "" }, "[01]09501101530003[8200]http://example.com", -1, 0, 25, 25, 1, "GS1 General Specifications 20.0 Figure 5.1-7 (note pre-21.0.1), explicit mask 001, same as BWIPP", | |
| 1098 "1111111010111000001111111" | |
| 1099 "1000001011100100101000001" | |
| 1100 "1011101000111101101011101" | |
| 1101 "1011101000110101101011101" | |
| 1102 "1011101011100010001011101" | |
| 1103 "1000001010001100101000001" | |
| 1104 "1111111010101010101111111" | |
| 1105 "0000000010110110000000000" | |
| 1106 "1110011011100101011110011" | |
| 1107 "0001100101111000101001101" | |
| 1108 "0010111000010010011110100" | |
| 1109 "0111100001010010000000101" | |
| 1110 "1011011101000111110111110" | |
| 1111 "0111100100000100010011000" | |
| 1112 "1100001011010010011001011" | |
| 1113 "0001100110010011011111100" | |
| 1114 "1110011101010001111111011" | |
| 1115 "0000000011011100100010010" | |
| 1116 "1111111001010010101011001" | |
| 1117 "1000001011100110100011000" | |
| 1118 "1011101000001110111111011" | |
| 1119 "1011101001110001110101010" | |
| 1120 "1011101011110011111011111" | |
| 1121 "1000001011110010100000010" | |
| 1122 "1111111010111001000111101" | |
| 1123 }, | |
| 1124 /* 11*/ { BARCODE_QRCODE, GS1_MODE, -1, 1, -1, -1, { 0, 0, "" }, "[01]09501101530003[10]640311[21]20FOOPC20", -1, 0, 25, 25, 0, "GS1 General Specifications 22.0 Figure 5.1-7 (note changed 21.0.1) **NOT SAME** figure uses Byte encodation only; BWIPP uses mask 101", | |
| 1125 "1111111011101111001111111" | |
| 1126 "1000001011100111001000001" | |
| 1127 "1011101010110011101011101" | |
| 1128 "1011101011010000001011101" | |
| 1129 "1011101000000001101011101" | |
| 1130 "1000001010011101001000001" | |
| 1131 "1111111010101010101111111" | |
| 1132 "0000000001001001100000000" | |
| 1133 "1100111000010100000101111" | |
| 1134 "1000100011101110001111100" | |
| 1135 "1111101000011100000000101" | |
| 1136 "1000010000110100010011011" | |
| 1137 "1100111110101100110100000" | |
| 1138 "1011000011000100011101001" | |
| 1139 "0001111001000001101101010" | |
| 1140 "0000010100101001110110010" | |
| 1141 "1100001111110110111110101" | |
| 1142 "0000000011101010100010000" | |
| 1143 "1111111001111111101011000" | |
| 1144 "1000001011110100100010110" | |
| 1145 "1011101010001101111110101" | |
| 1146 "1011101001100110100111011" | |
| 1147 "1011101001100001010101110" | |
| 1148 "1000001010001010110001100" | |
| 1149 "1111111010110110111110011" | |
| 1150 }, | |
| 1151 /* 12*/ { BARCODE_QRCODE, GS1_MODE, -1, 1, -1, 6 << 8, { 0, 0, "" }, "[01]09501101530003[10]640311[21]20FOOPC20", -1, 0, 25, 25, 1, "GS1 General Specifications 22.0 Figure 5.1-7 (note changed 21.0.1) **NOT SAME** figure uses Byte encodation only, explicit mask 101, same as BWIPP", | |
| 1152 "1111111000011110101111111" | |
| 1153 "1000001001100001001000001" | |
| 1154 "1011101000001011001011101" | |
| 1155 "1011101010001011001011101" | |
| 1156 "1011101011000110101011101" | |
| 1157 "1000001000011011001000001" | |
| 1158 "1111111010101010101111111" | |
| 1159 "0000000000110000000000000" | |
| 1160 "1100011101010011000011000" | |
| 1161 "1100000111001010101011000" | |
| 1162 "0111011000100100111000010" | |
| 1163 "0001100001001101101010100" | |
| 1164 "1101001111011101000101110" | |
| 1165 "1101000101000010011011001" | |
| 1166 "1001001001111001010101101" | |
| 1167 "1011000111110010101101001" | |
| 1168 "1011001000110001111111101" | |
| 1169 "0000000011101100100010000" | |
| 1170 "1111111011110001101011001" | |
| 1171 "1000001010001101100011001" | |
| 1172 "1011101001001010111111101" | |
| 1173 "1011101001000010000011111" | |
| 1174 "1011101001011001101101001" | |
| 1175 "1000001011110011001000011" | |
| 1176 "1111111011000111001111101" | |
| 1177 }, | |
| 1178 /* 13*/ { BARCODE_QRCODE, GS1_MODE, -1, 2, -1, -1, { 0, 0, "" }, "[01]00857674002010[8200]http://www.gs1.org/", -1, 0, 29, 29, 0, "GS1 General Specifications 22.0 Figure 5.7.3-1, same (mask 011); BWIPP uses mask 101", | |
| 1179 "11111110100101110101001111111" | |
| 1180 "10000010111101001000001000001" | |
| 1181 "10111010010000001110001011101" | |
| 1182 "10111010101110110010101011101" | |
| 1183 "10111010001010101011001011101" | |
| 1184 "10000010011111011001101000001" | |
| 1185 "11111110101010101010101111111" | |
| 1186 "00000000110110011010100000000" | |
| 1187 "10110111001001010000101001011" | |
| 1188 "00100000101101110111011001111" | |
| 1189 "11000110001011001101000011010" | |
| 1190 "11010101110110001010010000111" | |
| 1191 "11100111011100110101111011100" | |
| 1192 "01001000100100101111101001110" | |
| 1193 "10001011100111011100101111101" | |
| 1194 "01000001011110101001001001011" | |
| 1195 "10010010010100111011001000101" | |
| 1196 "00000101101000101110001011001" | |
| 1197 "10001111110011111111110010010" | |
| 1198 "00111100001011100011110101000" | |
| 1199 "01001110111001101000111111001" | |
| 1200 "00000000100000011001100010100" | |
| 1201 "11111110111110110001101011110" | |
| 1202 "10000010110111110010100011001" | |
| 1203 "10111010010010000110111111010" | |
| 1204 "10111010100111000011111111110" | |
| 1205 "10111010101000101001111001001" | |
| 1206 "10000010010111010001110010100" | |
| 1207 "11111110101111111011110100110" | |
| 1208 }, | |
| 1209 /* 14*/ { BARCODE_QRCODE, GS1_MODE, -1, 2, -1, 6 << 8, { 0, 0, "" }, "[01]00857674002010[8200]http://www.gs1.org/", -1, 0, 29, 29, 1, "GS1 General Specifications 22.0 Figure 5.7.3-1, explicit mask 101, same as BWIPP", | |
| 1210 "11111110001000011000101111111" | |
| 1211 "10000010111011101110101000001" | |
| 1212 "10111010101011010101001011101" | |
| 1213 "10111010110110001010001011101" | |
| 1214 "10111010011100011101101011101" | |
| 1215 "10000010010100010010101000001" | |
| 1216 "11111110101010101010101111111" | |
| 1217 "00000000110000111100000000000" | |
| 1218 "10000010110010001011111001110" | |
| 1219 "00011000010101001111100001000" | |
| 1220 "01110010111101111011110101100" | |
| 1221 "00011100111101000001011011110" | |
| 1222 "10001010110001011000010110001" | |
| 1223 "11101100000010001001001111010" | |
| 1224 "01010010111100000111110100110" | |
| 1225 "01111001100110010001110001100" | |
| 1226 "00100110100010001101111110011" | |
| 1227 "11001100100011100101000000000" | |
| 1228 "11100010011110010010011111111" | |
| 1229 "10011000101101000101010011100" | |
| 1230 "10010111100010110011111110010" | |
| 1231 "00000000111000100001100010011" | |
| 1232 "11111110001000000111101011000" | |
| 1233 "10000010011100111001100010000" | |
| 1234 "10111010011111101011111110111" | |
| 1235 "10111010000001100101011001010" | |
| 1236 "10111010010011110010100010010" | |
| 1237 "10000010001111101001001010011" | |
| 1238 "11111110111001001101000010000" | |
| 1239 }, | |
| 1240 /* 15*/ { BARCODE_HIBC_QR, -1, 0, 2, -1, -1, { 0, 0, "" }, "H123ABC01234567890", -1, 0, 21, 21, 1, "ANSI/HIBC 2.6 - 2016 Figure C5 same (mask 001)", | |
| 1241 "111111101010001111111" | |
| 1242 "100000100100101000001" | |
| 1243 "101110101011001011101" | |
| 1244 "101110100010101011101" | |
| 1245 "101110100001101011101" | |
| 1246 "100000101110001000001" | |
| 1247 "111111101010101111111" | |
| 1248 "000000000110100000000" | |
| 1249 "101000110001000100101" | |
| 1250 "000110001111001000010" | |
| 1251 "000101100101100111110" | |
| 1252 "011100001100001101010" | |
| 1253 "000101101111110110111" | |
| 1254 "000000001011000001111" | |
| 1255 "111111101111110111001" | |
| 1256 "100000100101111000001" | |
| 1257 "101110100010110101010" | |
| 1258 "101110100111010101000" | |
| 1259 "101110101101011001111" | |
| 1260 "100000100100101111001" | |
| 1261 "111111101111011001111" | |
| 1262 }, | |
| 1263 /* 16*/ { BARCODE_HIBC_QR, -1, 0, 2, -1, -1, { 0, 0, "" }, "/EU720060FF0/O523201", -1, 0, 25, 25, 0, "HIBC/PAS Section 2.2 2nd Purchase Order **NOT SAME** uses mask 100 instead of 011; BWIPP uses mask 011", | |
| 1264 "1111111011011110101111111" | |
| 1265 "1000001001001111001000001" | |
| 1266 "1011101001010010001011101" | |
| 1267 "1011101010000000101011101" | |
| 1268 "1011101010011000001011101" | |
| 1269 "1000001010010000001000001" | |
| 1270 "1111111010101010101111111" | |
| 1271 "0000000010101101100000000" | |
| 1272 "1000101111010100011111001" | |
| 1273 "1001110011101110100100100" | |
| 1274 "1010111101000001001001110" | |
| 1275 "0011010010110010111000100" | |
| 1276 "1100011110000110101110011" | |
| 1277 "1000100000101000011011110" | |
| 1278 "0011111100111111101010010" | |
| 1279 "0001100110010101011100101" | |
| 1280 "1111101011001100111110001" | |
| 1281 "0000000011000111100010010" | |
| 1282 "1111111010000000101011100" | |
| 1283 "1000001001101011100011101" | |
| 1284 "1011101011110111111110000" | |
| 1285 "1011101000101000000010001" | |
| 1286 "1011101000111111110100110" | |
| 1287 "1000001000010100100011111" | |
| 1288 "1111111010101101111000001" | |
| 1289 }, | |
| 1290 /* 17*/ { BARCODE_HIBC_QR, -1, 0, 2, -1, 4 << 8, { 0, 0, "" }, "/EU720060FF0/O523201", -1, 0, 25, 25, 1, "HIBC/PAS Section 2.2 2nd Purchase Order same, explicit mask 011", | |
| 1291 "1111111010011001101111111" | |
| 1292 "1000001011010011001000001" | |
| 1293 "1011101000000111001011101" | |
| 1294 "1011101010111000001011101" | |
| 1295 "1011101000000100001011101" | |
| 1296 "1000001000111010101000001" | |
| 1297 "1111111010101010101111111" | |
| 1298 "0000000011001110000000000" | |
| 1299 "1011011101111110101001011" | |
| 1300 "1110110100101001100011100" | |
| 1301 "1001011110100010101010010" | |
| 1302 "0110000111100111101101110" | |
| 1303 "1011011001000001101001011" | |
| 1304 "0100110100110100000111101" | |
| 1305 "0110101001101010111111000" | |
| 1306 "1001010110101101100100010" | |
| 1307 "0011111111010000111110010" | |
| 1308 "0000000011101101100010111" | |
| 1309 "1111111010111000101011011" | |
| 1310 "1000001010001000100010001" | |
| 1311 "1011101001011101111110101" | |
| 1312 "1011101011101111000101001" | |
| 1313 "1011101011011100010111010" | |
| 1314 "1000001001000001110110101" | |
| 1315 "1111111011101010111111001" | |
| 1316 }, | |
| 1317 /* 18*/ { BARCODE_HIBC_QR, -1, 0, 2, -1, -1, { 0, 0, "" }, "/KN12345", -1, 0, 21, 21, 1, "HIBC/PAS Section 2.2 Asset Tag **NOT SAME** uses mask 000 instead of 100", | |
| 1318 "111111100000101111111" | |
| 1319 "100000101010101000001" | |
| 1320 "101110100011001011101" | |
| 1321 "101110100001101011101" | |
| 1322 "101110101110101011101" | |
| 1323 "100000100010101000001" | |
| 1324 "111111101010101111111" | |
| 1325 "000000000111100000000" | |
| 1326 "101010100011000010010" | |
| 1327 "111010010000001100001" | |
| 1328 "111010101110100011001" | |
| 1329 "011000011010001011001" | |
| 1330 "100001110010101001001" | |
| 1331 "000000001001010110001" | |
| 1332 "111111100001011100011" | |
| 1333 "100000100101110101000" | |
| 1334 "101110101001011000111" | |
| 1335 "101110100010001001110" | |
| 1336 "101110101100100111001" | |
| 1337 "100000100100001100111" | |
| 1338 "111111101000101110101" | |
| 1339 }, | |
| 1340 /* 19*/ { BARCODE_HIBC_QR, -1, 0, 2, -1, 5 << 8, { 0, 0, "" }, "/KN12345", -1, 0, 21, 21, 1, "HIBC/PAS Section 2.2 Asset Tag, same, explicit mask 100", | |
| 1341 "111111101010101111111" | |
| 1342 "100000100111001000001" | |
| 1343 "101110100110101011101" | |
| 1344 "101110101011101011101" | |
| 1345 "101110101100101011101" | |
| 1346 "100000101111001000001" | |
| 1347 "111111101010101111111" | |
| 1348 "000000001101100000000" | |
| 1349 "100010111001011111001" | |
| 1350 "010111011101100001100" | |
| 1351 "010111100011001110100" | |
| 1352 "001010001000011001011" | |
| 1353 "110011100000111011011" | |
| 1354 "000000001100111011100" | |
| 1355 "111111101100110001110" | |
| 1356 "100000100111100111010" | |
| 1357 "101110101011001010101" | |
| 1358 "101110100111100100011" | |
| 1359 "101110100001001010100" | |
| 1360 "100000100110011110101" | |
| 1361 "111111101010111100111" | |
| 1362 }, | |
| 1363 /* 20*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 1, -1, -1, { 0, 0, "" }, "12345678901234567890123456789012345678901", -1, 0, 21, 21, 1, "Max capacity ECC 1 Version 1 41 numbers", | |
| 1364 "111111101001001111111" | |
| 1365 "100000101100101000001" | |
| 1366 "101110101011101011101" | |
| 1367 "101110101011001011101" | |
| 1368 "101110100001001011101" | |
| 1369 "100000101001101000001" | |
| 1370 "111111101010101111111" | |
| 1371 "000000000110100000000" | |
| 1372 "110011100010000101111" | |
| 1373 "010101001011010101100" | |
| 1374 "100100110110011100101" | |
| 1375 "011100001001001101011" | |
| 1376 "011110111010011010001" | |
| 1377 "000000001000001100111" | |
| 1378 "111111100110110100110" | |
| 1379 "100000101110000011001" | |
| 1380 "101110101111000101110" | |
| 1381 "101110100101010101111" | |
| 1382 "101110100100001110000" | |
| 1383 "100000101000101001010" | |
| 1384 "111111101010110000111" | |
| 1385 }, | |
| 1386 /* 21*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, -1, -1, { 0, 0, "" }, "12345678901234567890123456789012345678901", -1, 0, 25, 25, 1, "ECC 2 auto-sets version 2", | |
| 1387 "1111111011001110101111111" | |
| 1388 "1000001001000000001000001" | |
| 1389 "1011101011001111101011101" | |
| 1390 "1011101001100000101011101" | |
| 1391 "1011101001101011001011101" | |
| 1392 "1000001010111110101000001" | |
| 1393 "1111111010101010101111111" | |
| 1394 "0000000001111100000000000" | |
| 1395 "1010001100000101000100101" | |
| 1396 "0111010101111001011000001" | |
| 1397 "0010011101000111110010011" | |
| 1398 "1001010100011011001100011" | |
| 1399 "1000101101100111010110101" | |
| 1400 "0001010000100111101011011" | |
| 1401 "1111101100010001011000110" | |
| 1402 "0000100001000101011010011" | |
| 1403 "1101001101011100111111101" | |
| 1404 "0000000011001001100010000" | |
| 1405 "1111111010101110101010001" | |
| 1406 "1000001000111011100010001" | |
| 1407 "1011101000100111111110110" | |
| 1408 "1011101001100110010101000" | |
| 1409 "1011101011110001000100111" | |
| 1410 "1000001000000100111010110" | |
| 1411 "1111111010011100001100111" | |
| 1412 }, | |
| 1413 /* 22*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, 10, -1, { 0, 0, "" }, "点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点", -1, ZINT_WARN_NONCOMPLIANT, 57, 57, 1, "Max capacity ECC 4 Version 10 74 kanji", | |
| 1414 "111111100111100000011001000011111100010010011011001111111" | |
| 1415 "100000100011100101110000101000101001101111000001001000001" | |
| 1416 "101110101001011100010001111110111100101001100011001011101" | |
| 1417 "101110101101000010101100100011001110101001000101001011101" | |
| 1418 "101110100011100100011000101111100110110000011101001011101" | |
| 1419 "100000100000100111011111101000111101111100111010001000001" | |
| 1420 "111111101010101010101010101010101010101010101010101111111" | |
| 1421 "000000000001110101110110101000110111010111010111100000000" | |
| 1422 "000110110011100011001111111111111010001100000011100001100" | |
| 1423 "110110011010111001101110111010101010101101010001000100110" | |
| 1424 "011100111000110100011101010110011100010010110011010010011" | |
| 1425 "001011001011010100000011001101100111010100111110011100001" | |
| 1426 "001000101011000101110011110001101001000001010100101001001" | |
| 1427 "111011000111101101100101000100000000000101001101010101011" | |
| 1428 "111010100110100110011101000100111101100100101001001101001" | |
| 1429 "111100001100101010011101001111110010010101110011110011100" | |
| 1430 "011111100011001001000011000011111111000101000010011011011" | |
| 1431 "000011010001111101111110111000000011111100111100001001010" | |
| 1432 "001110101000100011000110100101011010101100000101101010000" | |
| 1433 "100111010111110011011011011110011111001010100111000111110" | |
| 1434 "100110101011010110111100011100010100011011001001110110001" | |
| 1435 "011110000111001010110011100100110100110101011110010101011" | |
| 1436 "000011100101101111100111000111010100101111000110110111000" | |
| 1437 "110111000101010010100001110110100110010110011000010000001" | |
| 1438 "101100111110110001110100100101101001010001111000000010111" | |
| 1439 "000100000100000110011110000110011010001111000100000110000" | |
| 1440 "010011111011001010111100001111101011001011011101111111010" | |
| 1441 "011010001100111001110100101000100011001001000000100010110" | |
| 1442 "100110101001110001000100111010101011010000011010101010000" | |
| 1443 "100010001100111000011110011000111011011100111010100011011" | |
| 1444 "011111111001011110111100011111101100110001010000111110100" | |
| 1445 "100110000110011111100111111011001010000010010011101011011" | |
| 1446 "011001100001000011001010001111001010001001000011001101001" | |
| 1447 "011111001110010111101010111001110100111101110101000111011" | |
| 1448 "101101100100110100001111101001111001100101010010010010000" | |
| 1449 "101111000101101101110001100111100011101101001100010101010" | |
| 1450 "100000110000011011111010000110011100000010000001100100000" | |
| 1451 "001011010101010110000000000110000001001010100011000111000" | |
| 1452 "001011100110101101100100011100100100011011010000011001111" | |
| 1453 "001010000001100111100000111010100101110010011011010010011" | |
| 1454 "110100101110010001110000111101101111000010100010011010010" | |
| 1455 "011011000101100001111000110110110000011000010101101110011" | |
| 1456 "000111110011111101101110111100001001101010000100000100110" | |
| 1457 "101100001100010000011101011011001011001101000111111100000" | |
| 1458 "000011100110110111010011101111011101001001000010000111101" | |
| 1459 "110000011010000010000001111100111001010000000001100101010" | |
| 1460 "101001110100100111111111010001101010011010011010111111110" | |
| 1461 "111110001100001100010100001011110011001110000100011110010" | |
| 1462 "000000110011100011000011111111111000001000100011111110010" | |
| 1463 "000000001000001101101000101000101100000110010011100011100" | |
| 1464 "111111101001111111010001001010100110001011000011101011010" | |
| 1465 "100000100111000101110010001000110100111101011100100011010" | |
| 1466 "101110101111110100111111011111100001111010110100111110100" | |
| 1467 "101110101001110011011100111111011001000011001101000111010" | |
| 1468 "101110100110010100010000101001000010000000100000100000111" | |
| 1469 "100000100110011101110011001101110110101010001101000011011" | |
| 1470 "111111100010001101010110001001000001001011001001011001011" | |
| 1471 }, | |
| 1472 /* 23*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, 27, -1, { 0, 0, "" }, "点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点", -1, ZINT_WARN_NONCOMPLIANT, 125, 125, 1, "Max capacity ECC 4 Version 27 385 kanji", | |
| 1473 "11111110101001001100111100100011110001010011110000001100010110100011101010111000011101101001011111001111101101101001101111111" | |
| 1474 "10000010110001101110011001101111000101001011011001100110101000101010011110000000101000100101101110110000011110100110001000001" | |
| 1475 "10111010100000000100000101000101111001011001010100100100100000000101100011010001100111101010010101101101101101101101001011101" | |
| 1476 "10111010001100111011000110111100100000010101010111010010101000111001000001110000001100011101100001111100110000011000001011101" | |
| 1477 "10111010010000100010110110100010111111110011001000011100100111111101110110001011001001101111111101100101001101101011001011101" | |
| 1478 "10000010100100110000111100010111100010101111100000011100011010001100011100110110111111101000100111001111101001111111001000001" | |
| 1479 "11111110101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111" | |
| 1480 "00000000111011101111001100100010100010100111111111100111011010001111000110000111001000111000101100110000011110100101100000000" | |
| 1481 "00111010111100111100001111100100111110110101011011110011101011111110110110010100010111101111110101001101101101101101111100111" | |
| 1482 "01010001001110001010011100111101111111010010000011001110010000110110000010011011001100000110101111111100110000011111010100100" | |
| 1483 "01001011010111110101110001011100000100110001011100000001111001011100111000001001001101101001101111101111101111100000101111111" | |
| 1484 "01001101011110100110000011010101111011000110001011001100001100100000100101101010011111111101111101001001101001111111101001000" | |
| 1485 "11101011010000001011000000010000011011101110000010110000011111101011011101111011001000100100001100110000011110100000011110101" | |
| 1486 "10100100011000101010111100001001010011100101101000100110010110101111000100000000110111111101101111001101101101101101101011101" | |
| 1487 "00101111000111111110001110110110101011110111111111000001011010111111010010110101001100000110100001111110110100001110101100100" | |
| 1488 "10100100100111101010111001110101110111001100100010100010011001000001000111011110001101101001111111101001101111100000100001111" | |
| 1489 "00100111011001010100000010011101001110110001001011110011111000000100010001011001111111001111111101001001100001011101011111000" | |
| 1490 "01001001000110000001110100000101100100100000100010111010010000110001101010000100001000100100001100110100011110100001111011101" | |
| 1491 "01000011110000011000110011111010110110101101000111111101110100010011100000011011110111111101100101001011101011101100101101101" | |
| 1492 "11011101001001011001010101110001000010111111010000011000001110110000101100100111001100000110111001111100110100001110100000100" | |
| 1493 "00101111011110000000010110100100111000010000110000110101000000110100011100010110100101101001111111101001101001100101011111111" | |
| 1494 "10000000100011100111101111111010111011011000011100011001111100011110010001101011011111001111101101001111100111011101111100000" | |
| 1495 "01000010110100011000111111001011101101100101001011111100100001100101111110101011001000100101010010100101011110100001101011101" | |
| 1496 "10010001110100100101110011111111111110011000101101000001000101001100011010001111010111111101101101001101101101101100110101101" | |
| 1497 "01000110111000011111001000100000101100101111110010001110001011010010010111111001101101100110111000111100101001101011101000100" | |
| 1498 "01110001111111110101100001111010001100000010110000100011001101001101100101001111100101101001100111101101101101000101111101111" | |
| 1499 "10100010000110110010001011000001011101000011100001110110110001000011110110110000111101001110101101011000100110111100000100000" | |
| 1500 "00001100000110110010011101000010001100000100001010001000011011010001110010011010101000100101001010100101011101100001101011101" | |
| 1501 "10101110100000110101111000101010111101000000000011011000110000000110100001100111001111011101101101101101100101101101001101101" | |
| 1502 "11011000111001110111001111011011001101110101001101110101011011111001010100101010001101100110101000111110101111001010101000101" | |
| 1503 "10010111001010111101100110101011001000000000101011000110101101011001100001110111000011101000111101100001001100101101001101111" | |
| 1504 "11111101101011111000100001100001111101000111101010101001010100010011100011111110011101001111001101011100100101011100011100000" | |
| 1505 "01001111110111111101000000101100111111001010100110110011001111111101001011101111000000101111101011100101011011100001111111101" | |
| 1506 "11101000110000111010100001011011100011000000110010011000011010001011111110010111001111001000100101101111100100001101100011010" | |
| 1507 "11001010100101001110110100001100101010011111001000110110001110101110111011011111001101111010111000101001101111110010101010101" | |
| 1508 "00111000101010110000101110101101100010101111100010101100111010001110000100110110000011101000101101111111001001101101100011111" | |
| 1509 "11101111101111111100110011010001111111011010110000111001100011111110110011010001111100101111101100000100100111011111111110000" | |
| 1510 "01111001001001110011100110110000001100111110101100001001101101010111101110100001100001011001100011101011011101100000101011101" | |
| 1511 "11000011011111110000011000001011001000110001111001011000011001100000111110100101001101100101111101101101100101101100101101010" | |
| 1512 "01111000001110010011000110011001101101001011001101000000111111101101011110011001001101111110100000111101101001010011000000101" | |
| 1513 "01110111000001111000011001110000101001000011111011011100011010011111001010110100000011100001101101101111001111101101111101111" | |
| 1514 "10010101101010110110000000010100101100001111010100011001010010010100001001101101111101101101110100001100100100111111101101101" | |
| 1515 "01010010100001110011000010000101001100111111011011100011000111000000100000101111000000111000001111101101011101101000101111101" | |
| 1516 "11001100111011000101111100100101100000010000100011010010100111110001110100010101001101100101101101101111100001001101100101010" | |
| 1517 "10011011100101110010001000111011001100000010011101100010101111010001001100010011101101111111011000100101111101010101111000101" | |
| 1518 "00101101101001000011101111001011010001110101111000001010111011111011011010110011000011000100101101111001001100101100100101011" | |
| 1519 "11111010100000100111000001010111111000100101001001001010011110101101011010110111011100101101010000001100100101111111101001101" | |
| 1520 "01000001001110011000110000001010110111100011010010110010110101111101110101111001000001101000001111110111011100001001010111101" | |
| 1521 "10100010011011000110000101000101100010100000000000110111100101000101100101110010111101100101100101001111101111001110101101010" | |
| 1522 "10101100001100010010001000111101101111000111100010000010111111000000101010001111001101011010111000111001111000110101101000101" | |
| 1523 "01011111100111101101111111010110000101100010101111011111111111000001101101000110000110100101001111111101101101001100000111011" | |
| 1524 "10110001100010010001011111110000000011011010000111001010111100001010000010110110011101001101010000000010100011111111101001101" | |
| 1525 "11100011100101110101110111010010010100010000010110010101100101001100011011111010001001101001101111101111001100001000101111101" | |
| 1526 "01010100001001111100100100101000010011011111100010001010110010000001110001011101011100000100100101011001101001101111100100100" | |
| 1527 "01100111110000010010010111100110010001001101000010000000001001110000000100100101001011111011111100111110011001100101001100001" | |
| 1528 "01111101001000111110011001000000100001010111011100000100000101101001111100010001000101100101001111100101101110101101111110011" | |
| 1529 "01110110000101110101001100110111010110000001001000010001001001011001000000110010001001001101101001101010110101111110101001001" | |
| 1530 "01000001100000101010110100110110100001101111011010111001000011110011110110101100101111101001101111101101001001101001100111111" | |
| 1531 "11100011000100100100110100011011111110100111111111001101011111101100011100110010111101101101000101011101101001011111001101100" | |
| 1532 "11011101101010001101000110100000110000100001100111101110011101101111000000000010110011011011111100101000011110100101101100101" | |
| 1533 "10001111110101110110000011111001111110111101001100001000101111111010110101010110111101101111100111001101101100101101111111111" | |
| 1534 "01101000101110101100010100110011100011001100001101010000110010001000000000011110111000111000101001110010110101111111100011100" | |
| 1535 "01111010110111000101111011011001101010100111010101111111111010101110111001001111001101101010101111101101101001000001101011011" | |
| 1536 "01101000110110110001111111010010100011001100011101001000101010001100100101001000110101001000100101000101101100111111100010100" | |
| 1537 "11111111110000011110001010001011111111111000011010000101011011111001011100011011010011001111111100111000011100100001111111101" | |
| 1538 "10110001101000101000010011101000011111100111110010100011010001111111000011000010010100111101100111000101101011101100111111101" | |
| 1539 "00100010111111100000101101110111001011101101110101000010111010011011010000110000011001100110001001110010110000001111101001000" | |
| 1540 "10100000000111101111111111010111001001001000101000111010111011101011000101011100000100001001101111101101101101100001110110111" | |
| 1541 "00000111100001000100111000101100010100110111001100111011111110110100010111011000000101011101000101011111100100111101001101000" | |
| 1542 "01100101010110000111010100100100011000100110100110101101010110001011101011100110111010100010111100100000011011000001101101101" | |
| 1543 "01100011000000011011101000011001010000100001000111110011001001111111100001100010100101011101000101000101101101101100111110001" | |
| 1544 "11010101011001001111010000101000100110110101010000010000110001110010101010100111111001100111101001101010110001101111101001100" | |
| 1545 "00000110011110010110110110000001111100011010110001011111000010100010011001101111010100001001101111111101101101100100110111111" | |
| 1546 "10000000100011111010001011010111010011000010011000111000000111100110010000010011000101101100100101001111100101111101001101000" | |
| 1547 "01010111111100000011100101000111101011100110001100001110101001110001111011110011100111100101011010100001011110100001101101101" | |
| 1548 "10100101111100111001000011001010100010000001101001111111010110001000011001011111100100111101100101001101101101101100111101101" | |
| 1549 "01011110111000011000001111001001001010111100010011000110011001101010010011001000101001100111111000101100101000001011001001000" | |
| 1550 "01100100011111110101001101001110101110011110110100100011010010010111100000010110001101101000101111100101101101100100110111101" | |
| 1551 "10101110110000100001110011011110111111000100100111100010100100000101110010001001110001001111100101001110100001111101001100101" | |
| 1552 "00001000111100100001101100111011100100010100001110000000011100110101110111010010111110100101111010101001011110100001100011110" | |
| 1553 "10110111101110110001111000011001100001001110100111001010100100010000100000000110110100111101101100110111100101101101111101001" | |
| 1554 "11011101001101100101101110111000100001110100001001111101010110110011010111000011010001100111111001101100101000001011001001000" | |
| 1555 "10001111100110100010000111100000011100001100001010001110110000110001100101110110010111001001001101001101001111101100110110111" | |
| 1556 "11111001010001111001100001001111010011001111001000011001010110011101100101011110001000101110100100101110100001111101001101100" | |
| 1557 "01000011011111100011000000011010010111000101100000111011001101100101001001101111110110100101101010110001011110100001100010001" | |
| 1558 "11010001111100110000000001000000110001001000010001001000010111010111111111000110011101101100001101101111100101101101111101001" | |
| 1559 "11010111001011001000010101101101011100000000101010101110001001000010011100101111011100001111111000011101101100010011001000111" | |
| 1560 "00111001100000111000001110111011011100110001000001101100100001001101100011110110010111110000101101101101001111101100101101000" | |
| 1561 "11101111111111110100110010001111111111010101010111010001111011111101110110000001111001001111110100101110100001011111111111101" | |
| 1562 "01101000111101111110100110011011100010110111001101100001110110001000001001010001111110101000101011010001011110100000100010001" | |
| 1563 "11001010111111100011111001010110101010110011011000011000010110101110011010111101000101101010101101101111100101100101101011111" | |
| 1564 "01111000100110000000100111100111100011000100101100000000111110001011011011101001010100011000111001111101101100001011100011101" | |
| 1565 "01101111111001100001111001011000111111000100011011011100000111111001001000111100001111111111101101101101001111111101111110101" | |
| 1566 "10000101111000100001100001011111110010011111110101100001011011001101101100010101111001001111110101101110100001001111101101101" | |
| 1567 "01100011110001110111000010100110010100100100011011000011000111000101000110010111001110111100001110100001011110100000000011101" | |
| 1568 "11001000001011000011111100001101011110010010100010011010111000000101110101111101000101101101101101101111100101101101111101000" | |
| 1569 "10000110101011110011101000000011110110000011011101001010110001111000001001110011100101100110111001111001101101101100100000111" | |
| 1570 "00011100101111000101101110101010111111101110111000010010101011001111011110100011010111101001101101001101000111100101101100101" | |
| 1571 "11001111000100100111100001110110110010111010101001100010011110001110011101000111010001011111110000111110111001001111101101110" | |
| 1572 "01000000101100011010010000000011011001110001010010110010101001001101110111100001010110101000001111100001000110101001000011001" | |
| 1573 "10011110100111000111100100110101111000100101100001101111111111111101000001011010110101000101100101101101101101010111111100111" | |
| 1574 "10000000100100010010001001110101001001010111100011011010101111110110001100110111011101101110111001011001110101101100100000111" | |
| 1575 "01000111001101101111111110101111001101110010001111110111101110000010101101110110010101101001101110100101101101100101001101100" | |
| 1576 "10010101100000010010011111000001111011001111000110011010100010011110100011000110010001001101110001011110101001011110101100001" | |
| 1577 "11010010101111110111110110000010111010000000010111110101111111001001011011111010001110101000001111100101000110100001000111111" | |
| 1578 "01011100111111111111100100111001101111001110100010010010100011101010010000100101010101001101100100001101101101001111111101011" | |
| 1579 "01101011111100010110010111000111101111001110000011101000000111010011100100011101010011110110111101101001101011101100100000100" | |
| 1580 "01011101110110111110011001100000001101010011011100110100010011100011011100000001001101101101101111100100100101111101001101101" | |
| 1581 "00011010111011110000001100010110011111100011101001110001010000101010100000101010001001000001101001011011101001000110101000001" | |
| 1582 "00000001001110101010110100100110011001101010011011010001000111101111010111010100101110111101001111100101111110101001000111111" | |
| 1583 "01100010001100100000110100010010001000100010011110101101001001011010111100001010110101000111100101101101101101001111111101001" | |
| 1584 "00001100011010001100000110101000001110000111000110000110000101010100100001111010100011100110111101001001100011111101100000101" | |
| 1585 "10001111110101110010100010111000101001111101001100111000111111011100100101000110110101101001100111100101000101101111011111110" | |
| 1586 "10010001100110101111010100010011010111001111101100110000110100001011010000100110101001011100101000111010111001001000101001101" | |
| 1587 "01001111100001000001011011100000110111100101010100111111100101001111110001101111010100100011001111100101101100101111000111100" | |
| 1588 "10101100000010110111011110011011101101001101011100000000111110000111000101100000110101000111100101001100010101001101111101011" | |
| 1589 "10000011101010011111101011011010111111011010111010101101011011111010110101010011000010101111111101001001100010100011111110100" | |
| 1590 "00000000110110101010110010111001100011100101110011010011000010001000000010110010011101101000100110100100111101111101100011010" | |
| 1591 "11111110011101100111101101110111101011001010010101011010100110101101101001001000011001011010101001111010100001001101101011101" | |
| 1592 "10000010001001101110011110000111100011001110101001010010110110001011000100001100001100101000101110000101001100110000100011111" | |
| 1593 "10111010101110000011111001100101111110110000001101110011100111111101101110100000010101101111100101001111110101101100111111000" | |
| 1594 "10111010100101000001110101011100111010000000000110000101010011110001010010011110111010101000111100101000101010111101101100100" | |
| 1595 "10111010101000111001001000010000000000000111000110100011000101101001010000100010101101111111000001001100101101111110111111010" | |
| 1596 "10000010010111001111010001100001010001010110110001100000111101011100000010010111101001001100101101111011011001000001101001110" | |
| 1597 "11111110000000010001110110000001010111011111000000111111010101110100101000110111000101101011001100000101101101101001100111111" | |
| 1598 }, | |
| 1599 /* 24*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, 40, -1, { 0, 0, "" }, "点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点" "点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点", -1, ZINT_WARN_NONCOMPLIANT, 177, 177, 1, "Max capacity ECC 4 Version 40 784 kanji", | |
| 1600 "111111101010001111111101101110111010110111001110101000010001011011011101001110110011111011010000010101001010011110010000010110111111001001011111101000010010111111001010001111111" | |
| 1601 "100000101010110001001000101111011001001100100110110000000111110101111011110001101110000111000100101111010011001111100111111001001011011011110011011111111001000010010010101000001" | |
| 1602 "101110101001001101111001110010010100000000111001001011111000001001111111101010000111011010011010010001111010111001100011000011110100101110001010110001011110011011011010001011101" | |
| 1603 "101110100011110010000001101101010011100111111111001101100000101100100000111110101110000010101000000010000100011001100001011010011011011001110011001011010011111101101001101011101" | |
| 1604 "101110100101110010111000011011111101111011011111010111111111110110000100000111110101111110000011101011110001110011111111111111000010010111011111111011101011001011010100001011101" | |
| 1605 "100000101001101111111111110110001000000111010010011110011000101101011100000010001001100011011101110000101111011110001010010001011111011001011000101000010010111111001010101000001" | |
| 1606 "111111101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111" | |
| 1607 "000000001010101000111100111110001110000001101000010000111000100000101011100111110000100011011011100100000000100010001111111011001011011011111000111111111001000010010111100000000" | |
| 1608 "001110101100010001001111000111111110001110001111010001111111111011011010100101110010111111101101110110100110000111111011011011111101101010011111110001011110011011011000011100111" | |
| 1609 "010000000011010000110010100101111011001000111011000000110110100100010001011011000111000100101100101110001111010001010001010110011011011001110000011011011001010000111111111001111" | |
| 1610 "011001100011010111001100111001100111110000011011000101111011101100110101100100000110001111011011010010111100101001110011111011100000000110001111111011101011001011010011011110000" | |
| 1611 "100001011010011111011000010011100000110011111100011101010010010001101001001000001100100011000111001100010000000101110010001011011111011001010001001000010010111111001001010001011" | |
| 1612 "011100100100100100111110111101111011100110011110001111100000110001001110110101111000001100011010010000011110110001000111111011001010011011111010111111111001000010010111101010101" | |
| 1613 "110001000100011100001000001010100100010011100101001000100011010010101111101001111110101011101010100010101010110100101011010011111101101010011011000000000110011111011010010011011" | |
| 1614 "100001101000001001011000111001001101101001110001001001100111010000111001110100000111000010100000110010010011110111101101010001011011011001011000011011011001010000111111111001111" | |
| 1615 "001000011111011110001101000110101000010010100110000010100000101000001111110101001111011010010001000110111111100001101011101110000000000110001111011011101011001011010011011110000" | |
| 1616 "110001101011101010001001110101111100011110011100010000010011100110000010110100000001110011010000111111110100011111001010011011011111111001010001001000010010111111001001010001011" | |
| 1617 "010101001011001100101001001100000010110010011010110001010110011010111110000100010101110001000010110011001000111111001111100101101010011011111010111111011001011000010011101011001" | |
| 1618 "100011100111101001011100111011111101001010110000010101101001110001010010000100110010010011011111011100011101001010110011010011111011101011000011000000000110011111011010010011011" | |
| 1619 "100101000111111110000111000000001000011100000010111011010001000000110100001101101001110010011101001000111011000101101101001110011011011001011000011011011001010000111111101011111" | |
| 1620 "011111111011000001101111101011101011110100111010000010100111100111010110100111101011010101100001000111000100111000110011010011010001000110001111011011101011001011010011011110000" | |
| 1621 "100110011001110000000000100111100010001010111110111000010011001010001100011011101000100001110000001111000100100111000010011010111111111001010001001011011011110011101101010001111" | |
| 1622 "111001100111011110111110001100010010001110000000111110011100000110000010010110100110111101000111101010001000100000100111100101101000010010111010111111011001011000010011001011001" | |
| 1623 "011011000111000100000101010101010111000101101000001111001100001001101001101110101110010001000011000000011110110100100011011010011011101011000011000000000110011111011010011101011" | |
| 1624 "010111110111010111010011100001000000001101101000010000000001001000101101000110011010000001100111010001011110010001100100111111101011011011011000011011011001010000111111101011111" | |
| 1625 "011010011000101101000111011111100011111101010110100111110111100100101111101111001100010000100101100100001100110000001011001011010001000110001111010100101110001011011011011110010" | |
| 1626 "010100110110001011100001100100111001101101010100111101000011011000100010110010011110111011101111000001010001001100001000011010111111111001011001001011011011110011101100110001111" | |
| 1627 "011100011110011110110001100011101001110010011100101001100001100011101101011001001010011110010010010101111011100001011111111101001000010010111111111111011001011000010011011011001" | |
| 1628 "110011111101100110111010010011111001010000001100001001111111101000010000001110011111111110100000100100001100100111111011010011010011101101001111100000000110011111011010111111011" | |
| 1629 "111010001010001001111001001110001111100110011111101000111000101000111010101101001101100010110010010001011110001010001100101110001011011011001000111011011011110001000111100011101" | |
| 1630 "101010101010000100101010101110101010000011111111110101111010111100101001101110000110101010111011010101001100011010101011001011010001011110011010110100101110001011011011101010010" | |
| 1631 "011110001010001011000110010110001111001001111101101011101000100011011111001000100111100010111000011110001101101110001000011011011111111001011000101011011011110011101100100011111" | |
| 1632 "010111111001110000101101100111111111011100101100001001111111111110100110111010010110111111110111101110111100110111111111010001111000010010101111111111011001011000010011111111001" | |
| 1633 "011101000011010100010000000101000001000000001101010101111011101110111100001100010100000010110011101100111100100110110011001010010011101101011011011010010011011111111001111101010" | |
| 1634 "110110101000001010101010001100010111100011100001011001010010010001100110100110010101100001001010110111000011010000010010101110001011010011111000011011011011110001000110001011101" | |
| 1635 "100001001000010111011100111000000010111011101001100100001000111110000111000101100011110011011010000011001010110111011011011011010001011110010111010100101110001011011011111110010" | |
| 1636 "001000100011000110000011110010101101011010101101010111101011011100011010000101101001011000111101011000011101100011011000000111111111011011001010001011011011110011101101000011111" | |
| 1637 "101010011001011110001001111001101110101110011110110100011011101111101001000000101110010101111101101011110110100101101111011000011000010010110111110111101101001010011011011010011" | |
| 1638 "001001100010001010001010100010111111111110011010011010101001110011001110000000011001011101101011101101000000010011100001001010010111101101011011011010010011011111111001111101010" | |
| 1639 "010111011111110111011101100010010000110110000011110000000010110110000001100000101000001010100101111001101001001111011010110111001011010011111000011011011011110001000110001011101" | |
| 1640 "010011111110100010001111101011000110111111111000110101011111011010001100010111010011111010010101011100000101010110001011011000110000111110011011110100101110001011011011111110010" | |
| 1641 "110000001100100101000100010110110001001000101010001111111110010100100000000001010010010001001111010001001100001110001000011111011111011011001010001011010011111101101011000011011" | |
| 1642 "001011110111001011011111111010111101111010000100100110101110110000010011110110001100110100111010000111101111100010110111011000011110010011010111110111101101001010011011011010011" | |
| 1643 "101000000011001000011100100011111000010111000011000111010010100010110000100100101111110001011011011001000100010000100001011011110011101101011011011010010011011111111001111101010" | |
| 1644 "011001101011010001100101011011101011010000100101010110111011000100110101111010111101100010000100101110001011000100100011101011001101010011110101011011011011110001000110001011101" | |
| 1645 "101001010110110000011010010000110110001011100100010001101111111001000111000101110111010100010000101000100110010010111011011001010010111110011011110001011110011011011001111111010" | |
| 1646 "011000101101010111000100100110010110010110101101110011011101110011100001001101110010100001011001000100101100110001100000011111011111011011101010001011010011111101101011000011011" | |
| 1647 "010011000001101111010000000000001111101011100100001011110111100010011110111100001100111001011000110000000010110100000111010001011000010011010111110111101101001010011011011010011" | |
| 1648 "100110100000111001000111110111010000111111101100101010101111101010001110101101110011111000101001011111110000010101101000001010011011001001011011011010010011011111111001010001010" | |
| 1649 "001011010001011000101001100000101001001000010000000000101111000001100111101010000111010000000111111100101110110010001011111011001011010011100101011111111001000010010111001010101" | |
| 1650 "100110111011100111010001111111010110110001100011011110100011010010010010011110101011011001001111010001010101110000000011011001010010101110011011110001011110011011011001011111010" | |
| 1651 "110100011101010000011101101010000011100001100011010001100101100001010101010000010110011010111100101111111011101110011000010111111011011011101010001011010011111101101010100011011" | |
| 1652 "101000101111001111010000001010011101001101011000010111011010111101111000101111100000111101111111100000011111101100000111101000000110010111011111110111101101001010011011011110011" | |
| 1653 "110011010010001111111100001100100010110010101111001110101011111101011111001110110010111111010000010101001010011110000000010011011011001001011011001000010010111111001001110001011" | |
| 1654 "011111111010110001001001001011010000001110100110010110101100110010011101110001101111100111000100101111010010101000100111111011001011011011100101011111111001000010010110001010101" | |
| 1655 "110100001001001101111000010010110101100011111011001010000110101011111011101010000111111100011010010001111010111011101011000001110000101110011011110001011110011011011001111111010" | |
| 1656 "110011111011110010000000001011111011100010111111001101011111101110000000111110101111111110101000000010000101111111111001011110011111011001101111101011010011111101101011111111011" | |
| 1657 "001010001101110010111000111110001101011101011010010000001000110100100110000111110101100010000011101011110000010010001111111001100010010111011000111011101011001011010010100010000" | |
| 1658 "110110101001101111111110110110101001100011010001011001011010101100011010000010001001101011011101110000101111111010101010010011011011011001011010101000010010111111001001101011011" | |
| 1659 "011010001010101000111101111010001110100001101000010000011000100001001101100111110001100011011011100100000000000110001111111010101001011011111000111111111001000010010111100010101" | |
| 1660 "111011111100010001001111100111111110101110001110010101001111101000011000100101110010111111101101110110100111100011111011011011011111101010011111110001011110011011011000111111010" | |
| 1661 "010000011011010000110010100000111010001100111111100001000001010010010011011011000110001110101100101110001111010101100001010111011001011001110000011011011001010000111111011001111" | |
| 1662 "011001101011010111001101111111001111010100011000100010111101001011110101100100000111000101011011010010111100101101111011111001100010000110001111111011101011001011010010011110000" | |
| 1663 "100001001010011111011001010011100001110101111111100000100100011100001101001000001100011101000111001100010001000110111010001011011101011001010011001000010010111111001000010001011" | |
| 1664 "011111100100100100111111111011110010100010011111011110011111111101001110100101111001011010011010010000011110010100110111111101001010011011111101011111111001000010010111101010101" | |
| 1665 "110001001100011100001000001101010101110001100010110010111000000110101001110001111110101101101010100010101011110010110011010011111011101010011011000000000110011111000011010011011" | |
| 1666 "100000101000001001011000011101001101001001110001001111110011100110111111100100000111011010100000110010010011110001110101010111011001011001010000011011011001010000111111011001111" | |
| 1667 "001000000111011110001101100110101000010100100000101010111001110100001011110101001110011010010001000110111111100000000011101000000010000110001111111011101011001011001010011110000" | |
| 1668 "110011101011101010001000010011011100111100011110011100010110000010000000101100000000100111010000111111110101011101101010011011011011111001010011001000010010111111010001010001011" | |
| 1669 "010100001011001100101001001110001010010110011100001101000000110010111010011100010100011011000010110011001000111111110111100101101000011011111010111111011001011000010011001011001" | |
| 1670 "100000100111101001011101011001011101101000110001100111100001111001010100000100110010100011011111011100011101001111101011011011111011110011011011011000000110011111011010110011011" | |
| 1671 "100100000111111110000111100011110001111110000100010101000110011110110100010101101001000100011101001000101011000111010101010110011111011001011000010011011001010000101111011001111" | |
| 1672 "011101100011000001101111001001110011110100111111101000100011010111010000100111101011001111100001000111011100111111110011001011010011011110001111101011101011001011011011111110000" | |
| 1673 "100101011001110000000001000111111011101110110010010000010010010010001010011011101001100011110000001111011101000101101010011010111001110001010001001011011011110011110100010001111" | |
| 1674 "111000100111011110111110101101111011101100001011101110010001010110000000001110100111101101000111101010010000100111000111111101101000011010111010111111011001011000011011101011001" | |
| 1675 "011001000111000100000101010010110111100011101110110111001010110001101101110110101110001011000011000000010111110010100011011010011111101011000011010000000110011111011010110011011" | |
| 1676 "010101101111010111010011100001011000101011100110001000010110111000101001010110011011100011100111010001001111110101111100110111101011011011011000001011011001010000110111011001111" | |
| 1677 "011000011000101101000110111100101010011101001001001111100001100100101101101111001101011010100101100100010101010001111011001011010101010110001111001100101110001011011010011110010" | |
| 1678 "010101101110001011100000100001100000101101010110000101010010000000100010110010011110110011101111000001000000101111000000010010111001110001010001011011011011110011111101110001111" | |
| 1679 "011101001110011110110000000010001000010010010010011001111111001011101111001001001010110000010010010101110010100001011111111101001110001010111010100111011001011000000011101011001" | |
| 1680 "110011100101100110100010110011111000110000011001100001101010011000010010010110011110010010100000100100010100000100101011011011010001111101000011011000000110011111011011010011011" | |
| 1681 "111001000010001001110001001010010110000110001011011000100000000000111000100101001100010010110010010001000111001001110100110110001011000011011000001011011011110001010110001011101" | |
| 1682 "101011111010000100111011101011101011100011101110110101110011110100101011111110000110010100111011010101010100111000101011001011010101010110001111010100101110001011001011011110010" | |
| 1683 "011110011010001011011111110101100111001001110000100011100101010011011101011000100110100000111000011110000101001101010000010011011011101001011001011011011011110011110101110001111" | |
| 1684 "010111111001110000101100100011111110011100101100110001101111111110100100111010010110111111110111101110101100110011111111011001111010010010111111111111011001011000011011111111001" | |
| 1685 "011110001011010100011001100010001000100000001100101101101000100110111000001100010101100010110011101100101101100110001011011010010111111101011000111010010011011111111001100011010" | |
| 1686 "110110101000001010100011001010101111000011110001101001011010101001100010101110010101101011001010110111001011110110101010110110001011000011101010111011011011110001001111101011101" | |
| 1687 "100010001000010111010100111110001010111011110001111100011000110110000101011101100011100011011010000011000010110010001011001011010011011110001000101100101110001011010011100010010" | |
| 1688 "001011111011000110001010110111111100011010111101001111111111110100111100001101101000111110111101011000001100000011111000010111111001011011011111111011011011110011111101111111111" | |
| 1689 "101001000001011110001001111100011110001110001111111100101100011110001011011000101111111101111101101011110111000100111111011000011110001010110010111111101101001010011010001010011" | |
| 1690 "001011100010001010010010000101001110111110011010111011011000010011001000010000011000010001101011101101011001110110100001011010010111111101011011010010010011011111101001011101010" | |
| 1691 "010111010111110111010100000101000000010110001010001000010101011111000011110000101001100000100101111001101001001001100010110111001011011011111000001011011011110001011111101011101" | |
| 1692 "010010111110100010001110001001100110111111101000111100001111101010101100010111010011110001110101011100010100110110011011001000110000110110010111011100101110001011011010011110010" | |
| 1693 "110000010100100101010100110010101001001000110011001110001011001100100000010001110011011011101111010001000101101010000000010111011111001011001001011011010011111011111011010001011" | |
| 1694 "001000111111001011001111111001110101111010011101111111111001111001110011101111001100011111011010000111111110100101000111001000011110001011010011110111101101001110011010111000011" | |
| 1695 "101001000011001000000101000011011000010111011011011110001101110011010000111101101111000011111011011001011100010010101001011011110011111101011101001010010011011011110001011011010" | |
| 1696 "010010101011010001100100011010001010110000110101001111100000001101110101101010111100000000100100101110000011000110000011110011001101010011111010010011011011110011001110001111101" | |
| 1697 "101101001110110000000010010010011111101011100101011001011110101001000111001100110111110010010000101000100110010111000011001001010010101110011011011001011110011011011001011011011" | |
| 1698 "011100100101010111000100000110101110010110100101011011011001011011000001000100110010011001011001000100100100110111000000011111111111001010001000000011110011111011100011100001000" | |
| 1699 "010110011001101111000000100011111111001011100101011011001001101011011110100101001100110101111000110110000010110011100111001000011000011011010011111110001101001000011011011010011" | |
| 1700 "100101100000111001001110010010110000011111100101011011110101110011101110111100110011111100101001011011110000010001110000011011111011000001111011011011110011011111101000011011001" | |
| 1701 "000011011001011000101000100010011000101000000000011000011100100000100111101011000111101010100111111010101110110001010011110011001011011010010000010111011001000010001111001000101" | |
| 1702 "100111111011100111001001011001000111010111111011011110001101000011010010001111101011011010001111010111001101110000011011011001010010101110011011111000111110011101010001111011010" | |
| 1703 "111000001101010000001100001110101010000111100011010000011100011001110101010000110110110000011100101001111011101010001000011111111011010011001110011011010011111011111011000011011" | |
| 1704 "101111110111001111001000001000111100101001011000011110010000101100111000110110000000110101111111100100001111101000111111101000000110011110110011110111001101001110001011011100001" | |
| 1705 "110000000010001111110100001111100010110000110111000110101010111101011111010110010011110000110000010001010010011100100000011011111011011001011001011001110010111111001001011011001" | |
| 1706 "011001101010110001010001001001100000001110111110001111101001001010011101111000001111000011100100101011000010101100110111100010001011011010000001001111011001000000010111001000110" | |
| 1707 "111001010001001101110000010110100101100111111011000011000011110011011011101010000111010101011010010001111010111110101011011001010000111111111111111001011110011011011001011111011" | |
| 1708 "110100101011110010011000001010000011100110101111010100100011100110000000100110101110000000101000000100001101111111101001011111111111001001001010010011110011111111111010100001011" | |
| 1709 "001111000101110010110000111010010101011101000010011000011101101100100110011111010100111001000011101111110000010110000111101000000010011111011101110011001011001111001011011010001" | |
| 1710 "111010100011101001111110110101001001100001010001010000101011110100011010011011101000111001111101110010111111111101101010011011011011011001011001001000010010111001011001110011011" | |
| 1711 "010111010110101010101101111010111110100001110000010001101101010001101101111111010001110000011011100110010000000100001111100010001001010011000111011111011001000010011110001110111" | |
| 1712 "111011111000010011001111100111111110101110000110000100101111101000011000110100110011111110101101110100111111100011111011011011011111101010011111100001111110011011000001111111000" | |
| 1713 "011110001011010110111010100110001010001100100111100001101000110010010011011011000110100010101100101100010111010110001001011111111001011001011000110011111001010110111110100011111" | |
| 1714 "011110101101010001000101111010101111010000010000100011011010101011010101111101000111101010111011010000100100101010101011101001000010011111001010101010001011001011010011101010010" | |
| 1715 "100010001010011001001001010110001001110001101111100000101000111100101101000001101101100010100111001100010001000110001010011011011101010001111000110001010010111011001000100011001" | |
| 1716 "011011111110100010111111111011111010100110011111011111111111111101101010111100111001111111111010010010000110010011111111100100001010001010011111111110111001000100010111111110110" | |
| 1717 "110110011010011000001000001011001101110111110010110011110001000111101001111001111111111001101010100100100011110110000011011011011011110011011001100001100110011011000011111001000" | |
| 1718 "100000111110001101001000011100010101001111111001001111100111100111011111100100000110011010000000110000010011110110011101010110111001011001010010011010011001010000111111000011111" | |
| 1719 "001000001111011000001101100010010000010010101000101010111110110101101101111101001111011101010011000000110110000000000011101001000010000111101101111011101011001111001010011010001" | |
| 1720 "110011110001101010000000010110100100111010010110011100000001100010100110101100000110011111010110111001111100111110000010011011011011111000010011001001010010111001010000010111010" | |
| 1721 "010011011001001100111001001111001010010000001100001101111000110011111110011101110011001111100010110101000001011000100111100100001000011011111011011110111001011100010011101011010" | |
| 1722 "101100101011101011010101011100111101101000101001100110011000111001110110000100010000110100011011011110011101001101101011011011011011110011011111111001000111111011011011011011011" | |
| 1723 "100100011001111000011111100000111001111110011100010100010111011110010100010100101011010110111011001110101010100101100101010110111111011000110010010011011000010110101111011011101" | |
| 1724 "010001101001000111111111001001001011110100111111101001111101010111010110100110101110000100000101000101011100111101111011001011010011011111001011101010001011101001011010011010011" | |
| 1725 "100101001111110100010001000101100011101100101010010001110000010010001000011010101100100101110000001001011101000100111010011011011001110001010001001011011100110001110101010001110" | |
| 1726 "111111100001011100101110101101110011101110000011101110100001110110000000001111000000001011000001101100010000100110110111111100001010011011111111011111011011011010011011001111011" | |
| 1727 "011101001101000000010101010011010111100101110110110110000100010001101001110110001110110101100001000000010110010110110011011011011011101011011111010001100010011111011010110011011" | |
| 1728 "010000101001010011000011100111001000101111100110001000100011111001001011010111011001011010000001110111001111010011110100110110101111011011011010001010011111110010110111011101110" | |
| 1729 "010100000000101111011111111100101011011111001001001110100011100101001101101110001101001010000110000000010101010000000011001011010011010111101001101100001011101001011011111010011" | |
| 1730 "011011101000001001101001000001011000101101010110000101010000000000100110110011011101101110101011100001000000101001101000010011111101110001010111011011011011010011111100010111111" | |
| 1731 "010000001000011010111001000100001000110000010010011000010110101010001011001000001101101010010000010001110011100011110111111100001010001010011110100111111000011010000011101111000" | |
| 1732 "110000100101100110100010010111011001010000011001100001001011111000010110010111111010010010000010000110010101100011101011011011010011111101000011011000000111011001011010110001011" | |
| 1733 "110100000000001101110001001111110110100110001011011000010000000000111110100100101101111101110110010011000111101111010100110110101111000011111100001010011111110011010111011011110" | |
| 1734 "100001100010000010111011101011110011100001101110110101100011010100101111111111100011010110011111110101010100111101110011001011010011010111101011110101001011001011001010011110001" | |
| 1735 "011101011000001011011111010001111111101111110000100011010110010011011001011000000000101011011111011000000100001011101000010011111101101000010111011010111001010101110101110111110" | |
| 1736 "011000100110110100101100100101111110011100101100110001111001011111000000111010010110110100010101101100101101110111000111011000011010010011011000111111011111111010011011101001011" | |
| 1737 "010001000010110110011000100000110000000110001100101100101000100111111010001101010100011010010010001110101100100110100011011011010011111100100011011010010111011001111001010011011" | |
| 1738 "111001101111000110100011001011011110100001110001101001100010101001100110101111110101111011101010110001001010110001101010110111001111000011111010011011111011010111001110011011101" | |
| 1739 "100100011110111101010101111010101010111011110001111101110001110110100011011100000110011011011011000011000011010101100011001011010011011110001011001101001100101001010011011110010" | |
| 1740 "000111111001011110001011010111111101011010111101001111101111110100111100001100101000111110111111111000001101100111111000010111111101011011111111111011011011010011111100111111111" | |
| 1741 "101110001101100010001000011010001110101100001111111100101000111110001101011000001111100011011111001001110111000110001111011000011010001011011000111111001111101010011011100010011" | |
| 1742 "000010101011110000010011100010101110111000011010111011001010110011001010010001111000101010001101101101011001010010101001011011110001111100111010110011010000011111101001101011001" | |
| 1743 "011010001011111011010100000110001000010100001010001000001000111111000011110000001110100010000011111111101000001010001010110111001111011011011000101010011011110001011110100011111" | |
| 1744 "010011111101010000001110001011111111111101101000111100011111101010101010011110110101111111010110111010010101010111111011001001010010110111001111111101001011001011011011111110011" | |
| 1745 "111101001100101111010100010101100000001010110011001110011100001100100010000001110010100010101110010011000100001111000000010111111101001010001011011011010011011011111011110011011" | |
| 1746 "001001101101010001001110011010001100111000011101111111101011011001110001111110101111001001111111000011111110000101000111001000011010001011010110110111101010001110011011001010011" | |
| 1747 "101111000111111010000101000101111001110001011011011110011010010011010000101100001010110011111111110101010101110110111001011011110001111101011011001010010111111011110000110101010" | |
| 1748 "010001100101110101100100111010010010010110110101001111110000001101110101110010111111101010100100101000000011100011111011110011001111010011111010010011011011010011001111001011101" | |
| 1749 "101111011101111110000011110101101111001001100101011001001011101001000111000100110010010100010010101110110111110010110011001001010010101110010001011001011011011011010000011001011" | |
| 1750 "011110111011001001000100100111100110010000100101011011001101011011000011000100110011000001011001001100100101110111001000011111111011001010001111000011101000011011111011010111000" | |
| 1751 "010101000010011011000000100000011111101101100101011011011100001011011100111101001001001101111100111110000011110100110111001000011010011011010010111110010111001000011011001000011" | |
| 1752 "100111100001010001001111110111011000011001100101011011101000010011101100111100110111001000101111100011101001110110111000011011111001000001111011011011111011011111110000111101001" | |
| 1753 "000011010111110000101001000111010001101100000000011000000101000000100001110011000000110000100000100010111110110011111011110011001111011010011000001111011011011010001111001010101" | |
| 1754 "100110111011010111001000111111101111110011111011011110011111100011010000000111111001010000001010110111000101110110010011011001010000110110011111011000101001010101010000011111010" | |
| 1755 "111000010001111110001101001110110011000111100011010000011011011001110001010000101100000010001110011001101010101110001000011111111011001011001001000011011111101011111011010001011" | |
| 1756 "101111111100000111001001101111100100001101011000011110001001101100111100101110011101000111101001001100000110001011010111101000000010011110110011111111011000011110011011011000001" | |
| 1757 "110001001001111101110100001001011011010000110111000110110101111101011111001110000000101010101100100001000011111110111000011011111001000001011101010001111011011111011000111011001" | |
| 1758 "011001110001010101000000101010001001101110111110001111111000001010011101110000001011100001111101110011010010001110011111100010001111011010010010001111011100110000001111001110110" | |
| 1759 "111011011101110001101000110000010101000111111011000011001110110011011111101010010001100011000010110001110011111101011011011001010000110111111011011001010011001011010000011011011" | |
| 1760 "110111110001010010010001001110101010000110101111010100111001000110000110111110101111011000101101011100001100111011001001011111111011001001001000000011101010010111111011000001011" | |
| 1761 "001101000010111010111001111011101101011101000010011000010001101100100010001111010101001101001001010111100000110101110111101000000010011111010011111011011000011111000011011010001" | |
| 1762 "111000110111000001100111010010111001000001010001010000101101110100011100011011101000101101111100111010111111111101111010011011011001011001010011010000000011100001011000111011011" | |
| 1763 "010111010010111010111100011110001110100001110000010001101100110001101101100111000111110010011100100110011001100101000111100010001111011011011000001111011011011010001111001000111" | |
| 1764 "111001110001000011010110100111010110101110000110000100100101001000011010101100100110110010111001101100100110100110011011011011011001110010001011111001101000011011010000011011000" | |
| 1765 "011110010100100110100010100000110011001100100111100001100100010010010101000011001000111000100111110100000111110110001001011111111011001001011110011011101010010110111111000010111" | |
| 1766 "111001100100100001001101111100110110010000010000100011011000101011010011111101010000000100101111011000100100001110110011101001000010010111010011111010010111111011000011011101110" | |
| 1767 "000100010011011001111000010111111000110001101111100000101010111100101111010001111101110000101001110100000001000100111010011011011001011001111001010001011011011011011001111010101" | |
| 1768 "010101101110101010110110011011111010100110011111011111101111111101101010100100100100111111101001001010001110010111111111100100001110011010011111101110101001010100001111111110110" | |
| 1769 "000000001011110001011001101110001101110111110010110011111000100111101001101001111000100011111110101100100010110110001011011011011001110011011000110001101000011011011011100011000" | |
| 1770 "111111100111010101010000111110101101101111111001001111101010100111011111111100000000101010010101101000011010110010101101010110111111001001011010111010010111001000111110101011011" | |
| 1771 "100000100111000001110100100110001000010010101000101010101000110101101101100101000011100010011110110000110110000110001011101001000010010111101000111011111011011111000011100010001" | |
| 1772 "101110101000010010001001010011111101011010010110011100011111100010100110110100000010111110101011001001100101111011111010011011011001111000001111110001011100110001011001111111010" | |
| 1773 "101110101000101101011000101111110010010000001100001101101001010011111110011100010010011011010001110101001001111110100111100100001110011011111001001110101001010100001010101001011" | |
| 1774 "101110101010001011100101111010101100101000101001100110010011111001110110010100001111001101110110111110001101101110111011011011011011110011010111110001011111101011011011011111100" | |
| 1775 "100000100000010000101110000100011000011110011100010100000011111110010100001100010010001001110010000000110010100111101101010110111111001000101010011011011000011110111110000000000" | |
| 1776 "111111100000001110110110101010011010010100111111101001111101110111010110101111000111011001110100010111000100111000011011001011010011010011010101111010000011100001000011111011001" | |
| 1777 }, | |
| 1778 /* 25*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, -1, ZINT_FULL_MULTIBYTE, { 0, 0, "" }, "áA", -1, 0, 21, 21, 1, "Mask automatic (001)", | |
| 1779 "111111100101101111111" | |
| 1780 "100000101001101000001" | |
| 1781 "101110101010101011101" | |
| 1782 "101110101001101011101" | |
| 1783 "101110101101001011101" | |
| 1784 "100000101010001000001" | |
| 1785 "111111101010101111111" | |
| 1786 "000000000001100000000" | |
| 1787 "001001111011010111110" | |
| 1788 "101000001010010000100" | |
| 1789 "100111100000110001111" | |
| 1790 "110000000001000010000" | |
| 1791 "011010110111010001111" | |
| 1792 "000000001100011101100" | |
| 1793 "111111101011111111000" | |
| 1794 "100000101101010101110" | |
| 1795 "101110100001000111111" | |
| 1796 "101110100101010000000" | |
| 1797 "101110101001111000111" | |
| 1798 "100000100100111010000" | |
| 1799 "111111100011001000110" | |
| 1800 }, | |
| 1801 /* 26*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, -1, ZINT_FULL_MULTIBYTE | (8 << 8), { 0, 0, "" }, "áA", -1, 0, 21, 21, 1, "Mask 111", | |
| 1802 "111111101000101111111" | |
| 1803 "100000101110101000001" | |
| 1804 "101110100110101011101" | |
| 1805 "101110101100101011101" | |
| 1806 "101110101010001011101" | |
| 1807 "100000101110001000001" | |
| 1808 "111111101010101111111" | |
| 1809 "000000000110100000000" | |
| 1810 "000100100111000111011" | |
| 1811 "111101011111000101110" | |
| 1812 "100000100111110110111" | |
| 1813 "101100011101011110011" | |
| 1814 "001111100010000100101" | |
| 1815 "000000001011011010100" | |
| 1816 "111111100111100011011" | |
| 1817 "100000100000000000100" | |
| 1818 "101110100110000000111" | |
| 1819 "101110101001001100011" | |
| 1820 "101110100100101101101" | |
| 1821 "100000100011111101000" | |
| 1822 "111111100111010100101" | |
| 1823 }, | |
| 1824 /* 27*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, -1, ZINT_FULL_MULTIBYTE | (9 << 8), { 0, 0, "" }, "áA", -1, 0, 21, 21, 1, "Mask > 111 ignored", | |
| 1825 "111111100101101111111" | |
| 1826 "100000101001101000001" | |
| 1827 "101110101010101011101" | |
| 1828 "101110101001101011101" | |
| 1829 "101110101101001011101" | |
| 1830 "100000101010001000001" | |
| 1831 "111111101010101111111" | |
| 1832 "000000000001100000000" | |
| 1833 "001001111011010111110" | |
| 1834 "101000001010010000100" | |
| 1835 "100111100000110001111" | |
| 1836 "110000000001000010000" | |
| 1837 "011010110111010001111" | |
| 1838 "000000001100011101100" | |
| 1839 "111111101011111111000" | |
| 1840 "100000101101010101110" | |
| 1841 "101110100001000111111" | |
| 1842 "101110100101010000000" | |
| 1843 "101110101001111000111" | |
| 1844 "100000100100111010000" | |
| 1845 "111111100011001000110" | |
| 1846 }, | |
| 1847 /* 28*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, 1, -1, { 0, 0, "" }, "1234567890", -1, 0, 21, 21, 0, "test_print example, automatic mask 001 (same score as mask 010); BWIPP uses mask 010", | |
| 1848 "111111101001101111111" | |
| 1849 "100000100100101000001" | |
| 1850 "101110101001001011101" | |
| 1851 "101110100101101011101" | |
| 1852 "101110100001101011101" | |
| 1853 "100000101101101000001" | |
| 1854 "111111101010101111111" | |
| 1855 "000000000000100000000" | |
| 1856 "101000110010000100101" | |
| 1857 "101010001111011101011" | |
| 1858 "111010101101110110010" | |
| 1859 "110111010101011100011" | |
| 1860 "110111110101111111001" | |
| 1861 "000000001010000000000" | |
| 1862 "111111101110001000010" | |
| 1863 "100000100000100010001" | |
| 1864 "101110100110001000111" | |
| 1865 "101110100111011001000" | |
| 1866 "101110101101110110111" | |
| 1867 "100000100001011000010" | |
| 1868 "111111101011111111111" | |
| 1869 }, | |
| 1870 /* 29*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, 1, 3 << 8, { 0, 0, "" }, "1234567890", -1, 0, 21, 21, 1, "test_print example, explicit mask 010", | |
| 1871 "111111100010101111111" | |
| 1872 "100000100000001000001" | |
| 1873 "101110101010001011101" | |
| 1874 "101110101001001011101" | |
| 1875 "101110101010101011101" | |
| 1876 "100000101001001000001" | |
| 1877 "111111101010101111111" | |
| 1878 "000000001100000000000" | |
| 1879 "101111100001001111100" | |
| 1880 "001110001011111001111" | |
| 1881 "100001110110101101001" | |
| 1882 "010011010001111000111" | |
| 1883 "101100101110100100010" | |
| 1884 "000000001110100100100" | |
| 1885 "111111100101010011001" | |
| 1886 "100000101100000110101" | |
| 1887 "101110101101010011100" | |
| 1888 "101110101011111101100" | |
| 1889 "101110101110101101100" | |
| 1890 "100000100101111100110" | |
| 1891 "111111101000100100100" | |
| 1892 }, | |
| 1893 /* 30*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 1, 2, 2 << 8, { 0, 0, "" }, "?ややややwやややや ややややや", -1, ZINT_WARN_NONCOMPLIANT, 25, 25, 1, "Data with Shift JIS '2nd byte 1st byte' matches; explicit mask 001 (auto 000) to match BWIPP", | |
| 1894 "1111111010111110001111111" | |
| 1895 "1000001011100101001000001" | |
| 1896 "1011101000111110101011101" | |
| 1897 "1011101000101100001011101" | |
| 1898 "1011101011111111101011101" | |
| 1899 "1000001010001001001000001" | |
| 1900 "1111111010101010101111111" | |
| 1901 "0000000010110101000000000" | |
| 1902 "1110011011101111111110011" | |
| 1903 "1001010001100001111100001" | |
| 1904 "1101101110011110101101000" | |
| 1905 "1011110011010001011000101" | |
| 1906 "0011101011011101110101111" | |
| 1907 "0010100010011010000110000" | |
| 1908 "1111111111110110111101010" | |
| 1909 "0010010111100101001001111" | |
| 1910 "1111011011011011111111000" | |
| 1911 "0000000010101010100010011" | |
| 1912 "1111111000011110101011011" | |
| 1913 "1000001011001011100010111" | |
| 1914 "1011101000101110111111111" | |
| 1915 "1011101000110000111000010" | |
| 1916 "1011101010111101110101011" | |
| 1917 "1000001010100110000011100" | |
| 1918 "1111111011001111010111001" | |
| 1919 }, | |
| 1920 /* 31*/ { BARCODE_QRCODE, UNICODE_MODE, 3, 2, -1, 5 << 8, { 0, 0, "" }, "sn:7QPB4MN", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 3 Example 1 **NOT SAME** different encodation; explicit mask 100 (auto 011) to match BWIPP", | |
| 1921 "111111101011101111111" | |
| 1922 "100000100001001000001" | |
| 1923 "101110100110001011101" | |
| 1924 "101110101010101011101" | |
| 1925 "101110101000101011101" | |
| 1926 "100000101001001000001" | |
| 1927 "111111101010101111111" | |
| 1928 "000000001111100000000" | |
| 1929 "100010111111011111001" | |
| 1930 "110010011111101101110" | |
| 1931 "001110111011001010100" | |
| 1932 "000010010100010011000" | |
| 1933 "010111101100100011011" | |
| 1934 "000000001100100111111" | |
| 1935 "111111101100100111110" | |
| 1936 "100000100011111110111" | |
| 1937 "101110101011001110011" | |
| 1938 "101110100010100110111" | |
| 1939 "101110100011011011100" | |
| 1940 "100000100101001111011" | |
| 1941 "111111101000010100101" | |
| 1942 }, | |
| 1943 /* 32*/ { BARCODE_QRCODE, UNICODE_MODE, 3, 2, -1, -1, { 0, 0, "" }, "price:£20.00", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 3 Example 2", | |
| 1944 "111111101111101111111" | |
| 1945 "100000101101001000001" | |
| 1946 "101110100001101011101" | |
| 1947 "101110101100101011101" | |
| 1948 "101110100101001011101" | |
| 1949 "100000100000001000001" | |
| 1950 "111111101010101111111" | |
| 1951 "000000001101000000000" | |
| 1952 "101101110000001001011" | |
| 1953 "000010001100101111100" | |
| 1954 "101011110111000010110" | |
| 1955 "101000010101110100010" | |
| 1956 "010100101010111100100" | |
| 1957 "000000001101001100001" | |
| 1958 "111111101010001111100" | |
| 1959 "100000101101000110111" | |
| 1960 "101110100001000101101" | |
| 1961 "101110101000110101010" | |
| 1962 "101110101011011100000" | |
| 1963 "100000100101101011110" | |
| 1964 "111111101100010111000" | |
| 1965 }, | |
| 1966 /* 33*/ { BARCODE_QRCODE, UNICODE_MODE, 3, 1, -1, -1, { 0, 0, "" }, "C:\\DOCS\\EXAMPLE.TXT", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 3 Example 3 **NOT SAME** different encodation; BWIPP same encodation as Zint but uses mask 000 instead of 100", | |
| 1967 "1111111011101001001111111" | |
| 1968 "1000001011100010101000001" | |
| 1969 "1011101010110001001011101" | |
| 1970 "1011101011010111101011101" | |
| 1971 "1011101000000100001011101" | |
| 1972 "1000001010011100101000001" | |
| 1973 "1111111010101010101111111" | |
| 1974 "0000000001001001000000000" | |
| 1975 "1100111000010110100101111" | |
| 1976 "1001100001101010001000010" | |
| 1977 "0010111100011110110100010" | |
| 1978 "1111000100110100011101010" | |
| 1979 "1110111100101101101000111" | |
| 1980 "1000000010000110001111001" | |
| 1981 "0001011110100001000100111" | |
| 1982 "0011010001101011100100010" | |
| 1983 "1110001111110110111110001" | |
| 1984 "0000000010101001100011001" | |
| 1985 "1111111000111110101011100" | |
| 1986 "1000001010010101100010101" | |
| 1987 "1011101011001101111110001" | |
| 1988 "1011101001000111100001001" | |
| 1989 "1011101001100001111001110" | |
| 1990 "1000001011001010011000001" | |
| 1991 "1111111011010111011011111" | |
| 1992 }, | |
| 1993 /* 34*/ { BARCODE_QRCODE, UNICODE_MODE, 3, 1, -1, 1 << 8, { 0, 0, "" }, "C:\\DOCS\\EXAMPLE.TXT", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 3 Example 3 **NOT SAME** different encodation", | |
| 1994 "1111111001001101101111111" | |
| 1995 "1000001000111001101000001" | |
| 1996 "1011101011101010001011101" | |
| 1997 "1011101001110011001011101" | |
| 1998 "1011101000100000101011101" | |
| 1999 "1000001001000111101000001" | |
| 2000 "1111111010101010101111111" | |
| 2001 "0000000011101101100000000" | |
| 2002 "1110111110110010011000100" | |
| 2003 "0010110010110001010011001" | |
| 2004 "1001101111000101101111001" | |
| 2005 "1011100000010000111001110" | |
| 2006 "1010011000001001001100011" | |
| 2007 "0011010001011101010100010" | |
| 2008 "1010001101111010011111100" | |
| 2009 "0111110101001111000000110" | |
| 2010 "1010101011010010111110101" | |
| 2011 "0000000011110010100010010" | |
| 2012 "1111111011100101101010111" | |
| 2013 "1000001010110001100010001" | |
| 2014 "1011101011101001111110101" | |
| 2015 "1011101000011100111010010" | |
| 2016 "1011101010111010100010101" | |
| 2017 "1000001011101110111100101" | |
| 2018 "1111111011110011111111011" | |
| 2019 }, | |
| 2020 /* 35*/ { BARCODE_QRCODE, UNICODE_MODE, 4, 1, -1, -1, { 0, 0, "" }, "Študentska št. 2198390", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 4 Example 1 **NOT SAME** different encodation; BWIPP same encodation as Zint but uses mask 011 instead of 100", | |
| 2021 "1111111010000110001111111" | |
| 2022 "1000001010011110101000001" | |
| 2023 "1011101011001111101011101" | |
| 2024 "1011101011101011101011101" | |
| 2025 "1011101001101010001011101" | |
| 2026 "1000001011100100001000001" | |
| 2027 "1111111010101010101111111" | |
| 2028 "0000000000110110100000000" | |
| 2029 "1100111000101010000101111" | |
| 2030 "1111100110000001110111011" | |
| 2031 "1110111101100010100110011" | |
| 2032 "0000000111001010111100111" | |
| 2033 "1010101010010110000110000" | |
| 2034 "1110110000101000110011010" | |
| 2035 "0010001010011011000110001" | |
| 2036 "0001100010110000011100110" | |
| 2037 "1110011100101110111111001" | |
| 2038 "0000000011000111100011001" | |
| 2039 "1111111000100001101011000" | |
| 2040 "1000001011001001100010110" | |
| 2041 "1011101010010111111110011" | |
| 2042 "1011101000101011101101001" | |
| 2043 "1011101001111111000111010" | |
| 2044 "1000001011110101110010101" | |
| 2045 "1111111010101100000011011" | |
| 2046 }, | |
| 2047 /* 36*/ { BARCODE_QRCODE, UNICODE_MODE, 4, 1, -1, 4 << 8, { 0, 0, "" }, "Študentska št. 2198390", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 4 Example 1 **NOT SAME** different encodation", | |
| 2048 "1111111011000001001111111" | |
| 2049 "1000001000000010101000001" | |
| 2050 "1011101010011010101011101" | |
| 2051 "1011101011010011001011101" | |
| 2052 "1011101011110110001011101" | |
| 2053 "1000001001001110101000001" | |
| 2054 "1111111010101010101111111" | |
| 2055 "0000000001010101000000000" | |
| 2056 "1111001010000000110011101" | |
| 2057 "1000100001000110110000011" | |
| 2058 "1101011110000001000101111" | |
| 2059 "0101010010011111101001101" | |
| 2060 "1101101101010001000001000" | |
| 2061 "0010100100110100101111001" | |
| 2062 "0111011111001110010011011" | |
| 2063 "1001010010001000100100001" | |
| 2064 "0010001000110010111111010" | |
| 2065 "0000000011101101100011100" | |
| 2066 "1111111000011001101011111" | |
| 2067 "1000001000101010100011010" | |
| 2068 "1011101000111101111110110" | |
| 2069 "1011101011101100101010001" | |
| 2070 "1011101010011100100100110" | |
| 2071 "1000001010100000100111111" | |
| 2072 "1111111011101011000100011" | |
| 2073 }, | |
| 2074 /* 37*/ { BARCODE_QRCODE, UNICODE_MODE, 4, 1, -1, -1, { 0, 0, "" }, "Szczegółowe dane kontaktowe:+48 22 694 60 00", -1, 0, 29, 29, 0, "AIM ITS/04-023:2022 ECI 4 Example 2 **NOT SAME** different encodation; BWIPP same encodation as example but uses mask 100 instead of 111", | |
| 2075 "11111110000111011111001111111" | |
| 2076 "10000010011001101100101000001" | |
| 2077 "10111010000010110011101011101" | |
| 2078 "10111010100010100010101011101" | |
| 2079 "10111010110001101001101011101" | |
| 2080 "10000010000111011101001000001" | |
| 2081 "11111110101010101010101111111" | |
| 2082 "00000000001100110111100000000" | |
| 2083 "11000111010100010110100011000" | |
| 2084 "11100000010010101001011111100" | |
| 2085 "10010111001000101101010000111" | |
| 2086 "11001101110010001001101110011" | |
| 2087 "10000110010110110101011000001" | |
| 2088 "01101101110001100011000111011" | |
| 2089 "11001111001111001101000101110" | |
| 2090 "10111100100100001111000110011" | |
| 2091 "00001010101101001100000100100" | |
| 2092 "10010001001011011000000101011" | |
| 2093 "11110110011100110001101101010" | |
| 2094 "10001101011010000001001111010" | |
| 2095 "10110111101010010100111111010" | |
| 2096 "00000000111000100001100011101" | |
| 2097 "11111110110110010100101010100" | |
| 2098 "10000010111100011011100011000" | |
| 2099 "10111010001001100101111110001" | |
| 2100 "10111010010011011000100101100" | |
| 2101 "10111010000001100111000011110" | |
| 2102 "10000010110011101010011100110" | |
| 2103 "11111110101010100011111001100" | |
| 2104 }, | |
| 2105 /* 38*/ { BARCODE_QRCODE, UNICODE_MODE, 5, 1, -1, -1, { 0, 0, "" }, "Liĥtenŝtejno", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 5 Example 1; BWIPP uses mask 011 instead of 101", | |
| 2106 "111111100111101111111" | |
| 2107 "100000100101001000001" | |
| 2108 "101110100100001011101" | |
| 2109 "101110101111001011101" | |
| 2110 "101110101010101011101" | |
| 2111 "100000100010101000001" | |
| 2112 "111111101010101111111" | |
| 2113 "000000000110100000000" | |
| 2114 "110001110100100011000" | |
| 2115 "111011000001010001101" | |
| 2116 "100100111011011010111" | |
| 2117 "100101010110011011000" | |
| 2118 "100011101010110011111" | |
| 2119 "000000001100010101100" | |
| 2120 "111111101001011000010" | |
| 2121 "100000101010011000011" | |
| 2122 "101110100011100001110" | |
| 2123 "101110100000010000000" | |
| 2124 "101110100111010010011" | |
| 2125 "100000101010010111111" | |
| 2126 "111111101011110000010" | |
| 2127 }, | |
| 2128 /* 39*/ { BARCODE_QRCODE, UNICODE_MODE, 5, 1, -1, 4 << 8, { 0, 0, "" }, "Liĥtenŝtejno", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 5 Example 1 **NOT SAME** explicit mask 011", | |
| 2129 "111111101100101111111" | |
| 2130 "100000100100101000001" | |
| 2131 "101110101010101011101" | |
| 2132 "101110101001001011101" | |
| 2133 "101110101111001011101" | |
| 2134 "100000100000001000001" | |
| 2135 "111111101010101111111" | |
| 2136 "000000000111000000000" | |
| 2137 "111100101010010011101" | |
| 2138 "110101001111011111100" | |
| 2139 "001001110110110111010" | |
| 2140 "010111000100101001110" | |
| 2141 "111000110001101000100" | |
| 2142 "000000001101111100001" | |
| 2143 "111111100111101110100" | |
| 2144 "100000100100010110010" | |
| 2145 "101110100110001100011" | |
| 2146 "101110101010100010110" | |
| 2147 "101110101100001001000" | |
| 2148 "100000101011111110010" | |
| 2149 "111111101101000110100" | |
| 2150 }, | |
| 2151 /* 40*/ { BARCODE_QRCODE, UNICODE_MODE, 6, 1, -1, -1, { 0, 0, "" }, "Lietuvą", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 6 Example 1", | |
| 2152 "111111101000101111111" | |
| 2153 "100000101010001000001" | |
| 2154 "101110100000101011101" | |
| 2155 "101110100000001011101" | |
| 2156 "101110101111101011101" | |
| 2157 "100000101101101000001" | |
| 2158 "111111101010101111111" | |
| 2159 "000000001000100000000" | |
| 2160 "111001101010011110011" | |
| 2161 "111111001101001011011" | |
| 2162 "100011101001100011101" | |
| 2163 "000011011001000111100" | |
| 2164 "110100101001101011111" | |
| 2165 "000000001110000101000" | |
| 2166 "111111100010011011001" | |
| 2167 "100000101010100110101" | |
| 2168 "101110100110011010101" | |
| 2169 "101110100001011001000" | |
| 2170 "101110101101110011011" | |
| 2171 "100000101011011111011" | |
| 2172 "111111101111111010101" | |
| 2173 }, | |
| 2174 /* 41*/ { BARCODE_QRCODE, UNICODE_MODE, 7, 1, -1, -1, { 0, 0, "" }, "Россия", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 7 Example 1", | |
| 2175 "111111100010101111111" | |
| 2176 "100000101010101000001" | |
| 2177 "101110101011001011101" | |
| 2178 "101110100000101011101" | |
| 2179 "101110101111101011101" | |
| 2180 "100000101110001000001" | |
| 2181 "111111101010101111111" | |
| 2182 "000000001000000000000" | |
| 2183 "110100110011101110110" | |
| 2184 "101000010001010010111" | |
| 2185 "110010110011011110101" | |
| 2186 "101011010000111110011" | |
| 2187 "100001101011001100101" | |
| 2188 "000000001010011110100" | |
| 2189 "111111101001101000110" | |
| 2190 "100000100110001000101" | |
| 2191 "101110100000111110001" | |
| 2192 "101110101010011001111" | |
| 2193 "101110100111011010001" | |
| 2194 "100000101011100101011" | |
| 2195 "111111101100010100110" | |
| 2196 }, | |
| 2197 /* 42*/ { BARCODE_QRCODE, UNICODE_MODE, 7, 1, -1, -1, { 0, 0, "" }, "Монголулс", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 7 Example 2; BWIPP uses mask 000 instead of 111", | |
| 2198 "111111100101101111111" | |
| 2199 "100000101101001000001" | |
| 2200 "101110101100101011101" | |
| 2201 "101110100101001011101" | |
| 2202 "101110101000101011101" | |
| 2203 "100000101001101000001" | |
| 2204 "111111101010101111111" | |
| 2205 "000000001111100000000" | |
| 2206 "110100110110001110110" | |
| 2207 "111110010000001011100" | |
| 2208 "010110100010110011010" | |
| 2209 "100000011011011001111" | |
| 2210 "000011110010110100101" | |
| 2211 "000000001101011100100" | |
| 2212 "111111101010010100110" | |
| 2213 "100000100001111000101" | |
| 2214 "101110100001000110001" | |
| 2215 "101110101110000011111" | |
| 2216 "101110100110100011101" | |
| 2217 "100000101011000010111" | |
| 2218 "111111101001110100110" | |
| 2219 }, | |
| 2220 /* 43*/ { BARCODE_QRCODE, UNICODE_MODE, 7, 1, -1, 1 << 8, { 0, 0, "" }, "Монголулс", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 7 Example 2 **NOT SAME** explicit mask 000", | |
| 2221 "111111100101101111111" | |
| 2222 "100000100111001000001" | |
| 2223 "101110101101101011101" | |
| 2224 "101110100101001011101" | |
| 2225 "101110100010101011101" | |
| 2226 "100000100000101000001" | |
| 2227 "111111101010101111111" | |
| 2228 "000000001101100000000" | |
| 2229 "111011111111011000100" | |
| 2230 "111110010000001011100" | |
| 2231 "000100110000100001000" | |
| 2232 "101001010010010000110" | |
| 2233 "000011110010110100101" | |
| 2234 "000000001111001110110" | |
| 2235 "111111101011011101111" | |
| 2236 "100000101001111000101" | |
| 2237 "101110101011010100011" | |
| 2238 "101110100111001010110" | |
| 2239 "101110101110100011101" | |
| 2240 "100000101001010000101" | |
| 2241 "111111101000111101111" | |
| 2242 }, | |
| 2243 /* 44*/ { BARCODE_QRCODE, UNICODE_MODE, 8, 1, -1, -1, { 0, 0, "" }, "جواز السفر", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 8 Example 1", | |
| 2244 "111111100010101111111" | |
| 2245 "100000101010101000001" | |
| 2246 "101110101011001011101" | |
| 2247 "101110100000101011101" | |
| 2248 "101110101111101011101" | |
| 2249 "100000101110001000001" | |
| 2250 "111111101010101111111" | |
| 2251 "000000001000000000000" | |
| 2252 "110100110011101110110" | |
| 2253 "010000010011001010111" | |
| 2254 "100011101101010100110" | |
| 2255 "111110010000101101111" | |
| 2256 "100010100111001100101" | |
| 2257 "000000001101011110100" | |
| 2258 "111111101011110011010" | |
| 2259 "100000100001010111110" | |
| 2260 "101110100010100000110" | |
| 2261 "101110101011000111111" | |
| 2262 "101110100000100010101" | |
| 2263 "100000101110000010011" | |
| 2264 "111111101000010100010" | |
| 2265 }, | |
| 2266 /* 45*/ { BARCODE_QRCODE, UNICODE_MODE, 8, 1, -1, -1, { 0, 0, "" }, "المنشأ: المملكة العربية السعودية", -1, 0, 29, 29, 0, "AIM ITS/04-023:2022 ECI 8 Example 2; BWIPP uses mask 000 instead of 010", | |
| 2267 "11111110001011110110001111111" | |
| 2268 "10000010101001111101001000001" | |
| 2269 "10111010000011010110101011101" | |
| 2270 "10111010111010110111101011101" | |
| 2271 "10111010010000011110001011101" | |
| 2272 "10000010110110000000101000001" | |
| 2273 "11111110101010101010101111111" | |
| 2274 "00000000011100101110100000000" | |
| 2275 "11111011110100000011110101010" | |
| 2276 "10000100101011110000000111110" | |
| 2277 "11110011101001110111101000100" | |
| 2278 "10001100000011010010111101011" | |
| 2279 "00001011111010111011000011001" | |
| 2280 "00000001110000010110100111101" | |
| 2281 "01101010010110000000001000100" | |
| 2282 "01101100101100111011111101010" | |
| 2283 "00001111001100000101100100101" | |
| 2284 "10110100000011100101110111110" | |
| 2285 "10001110001001100100001011010" | |
| 2286 "10000101111011001010111101011" | |
| 2287 "10011010001010101001111110010" | |
| 2288 "00000000110000001110100011110" | |
| 2289 "11111110110110000000101010000" | |
| 2290 "10000010001100111000100010010" | |
| 2291 "10111010101100000110111111111" | |
| 2292 "10111010101011110100110010010" | |
| 2293 "10111010100001100000001011110" | |
| 2294 "10000010100011001101001000101" | |
| 2295 "11111110110010101010110010100" | |
| 2296 }, | |
| 2297 /* 46*/ { BARCODE_QRCODE, UNICODE_MODE, 8, 1, -1, 1 << 8, { 0, 0, "" }, "المنشأ: المملكة العربية السعودية", -1, 0, 29, 29, 1, "AIM ITS/04-023:2022 ECI 8 Example 2 **NOT SAME** explicit mask 000", | |
| 2298 "11111110010011001110101111111" | |
| 2299 "10000010001110111010001000001" | |
| 2300 "10111010111011101110001011101" | |
| 2301 "10111010011101110000101011101" | |
| 2302 "10111010001000100110101011101" | |
| 2303 "10000010010001000111101000001" | |
| 2304 "11111110101010101010101111111" | |
| 2305 "00000000111011101001100000000" | |
| 2306 "11101111101100111011011000100" | |
| 2307 "01000001101100110111000000110" | |
| 2308 "11001011010001001111010000011" | |
| 2309 "01001001000100010101111010011" | |
| 2310 "00110011000010000011111011110" | |
| 2311 "11000100110111010001100000101" | |
| 2312 "01010010101110111000110000011" | |
| 2313 "10101001101011111100111010010" | |
| 2314 "00110111110100111101011100010" | |
| 2315 "01110001000100100010110000110" | |
| 2316 "10110110110001011100110011101" | |
| 2317 "01000000111100001101111010011" | |
| 2318 "10100010110010010001111110101" | |
| 2319 "00000000110111001001100010110" | |
| 2320 "11111110101110111000101010111" | |
| 2321 "10000010101011111111100011010" | |
| 2322 "10111010110100111110111111000" | |
| 2323 "10111010001100110011110101010" | |
| 2324 "10111010111001011000110011001" | |
| 2325 "10000010100100001010001111101" | |
| 2326 "11111110101010010010001010011" | |
| 2327 }, | |
| 2328 /* 47*/ { BARCODE_QRCODE, UNICODE_MODE, 9, 1, -1, -1, { 0, 0, "" }, "Μέρος #. α123", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 9 Example 1 **NOT SAME** example uses mask 111 instead of 000", | |
| 2329 "111111100100101111111" | |
| 2330 "100000100111001000001" | |
| 2331 "101110101100101011101" | |
| 2332 "101110100101001011101" | |
| 2333 "101110100011001011101" | |
| 2334 "100000100001101000001" | |
| 2335 "111111101010101111111" | |
| 2336 "000000001100100000000" | |
| 2337 "111011111111111000100" | |
| 2338 "101100010001010100111" | |
| 2339 "101101101011000010100" | |
| 2340 "100010000101010110110" | |
| 2341 "010111101110110010101" | |
| 2342 "000000001001010110110" | |
| 2343 "111111101000100011111" | |
| 2344 "100000101000001010100" | |
| 2345 "101110101100100101100" | |
| 2346 "101110100010010010110" | |
| 2347 "101110101010100101001" | |
| 2348 "100000101111110111001" | |
| 2349 "111111101101001101111" | |
| 2350 }, | |
| 2351 /* 48*/ { BARCODE_QRCODE, UNICODE_MODE, 9, 1, -1, 8 << 8, { 0, 0, "" }, "Μέρος #. α123", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 9 Example 1 with explicit mask 111; BWIPP uses mask 000", | |
| 2352 "111111100100101111111" | |
| 2353 "100000101101001000001" | |
| 2354 "101110101101101011101" | |
| 2355 "101110100101001011101" | |
| 2356 "101110101001001011101" | |
| 2357 "100000101000101000001" | |
| 2358 "111111101010101111111" | |
| 2359 "000000001110100000000" | |
| 2360 "110100110110101110110" | |
| 2361 "101100010001010100111" | |
| 2362 "111111111001010000110" | |
| 2363 "101011001100011111111" | |
| 2364 "010111101110110010101" | |
| 2365 "000000001011000100100" | |
| 2366 "111111101001101010110" | |
| 2367 "100000100000001010100" | |
| 2368 "101110100110110111110" | |
| 2369 "101110101011011011111" | |
| 2370 "101110100010100101001" | |
| 2371 "100000101101100101011" | |
| 2372 "111111101100000100110" | |
| 2373 }, | |
| 2374 /* 49*/ { BARCODE_QRCODE, UNICODE_MODE, 9, 1, -1, 1 << 8, { 0, 0, "" }, "Μέρος #. α123", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 9 Example 1 **NOT SAME** explicit mask 000", | |
| 2375 "111111100100101111111" | |
| 2376 "100000100111001000001" | |
| 2377 "101110101100101011101" | |
| 2378 "101110100101001011101" | |
| 2379 "101110100011001011101" | |
| 2380 "100000100001101000001" | |
| 2381 "111111101010101111111" | |
| 2382 "000000001100100000000" | |
| 2383 "111011111111111000100" | |
| 2384 "101100010001010100111" | |
| 2385 "101101101011000010100" | |
| 2386 "100010000101010110110" | |
| 2387 "010111101110110010101" | |
| 2388 "000000001001010110110" | |
| 2389 "111111101000100011111" | |
| 2390 "100000101000001010100" | |
| 2391 "101110101100100101100" | |
| 2392 "101110100010010010110" | |
| 2393 "101110101010100101001" | |
| 2394 "100000101111110111001" | |
| 2395 "111111101101001101111" | |
| 2396 }, | |
| 2397 /* 50*/ { BARCODE_QRCODE, UNICODE_MODE, 10, 1, -1, -1, { 0, 0, "" }, "דרכון", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 10 Example 1; BWIPP uses mask 000 instead of 101", | |
| 2398 "111111100000101111111" | |
| 2399 "100000100010101000001" | |
| 2400 "101110100011101011101" | |
| 2401 "101110101010101011101" | |
| 2402 "101110101100101011101" | |
| 2403 "100000100101001000001" | |
| 2404 "111111101010101111111" | |
| 2405 "000000000000000000000" | |
| 2406 "110001110001000011000" | |
| 2407 "101110010001110011011" | |
| 2408 "001110111110101100010" | |
| 2409 "011100010001111000100" | |
| 2410 "010100111101111110011" | |
| 2411 "000000001100100111000" | |
| 2412 "111111101111010011010" | |
| 2413 "100000101100001000000" | |
| 2414 "101110100001010010101" | |
| 2415 "101110100101111101000" | |
| 2416 "101110100001110011011" | |
| 2417 "100000101111111010011" | |
| 2418 "111111101110100011010" | |
| 2419 }, | |
| 2420 /* 51*/ { BARCODE_QRCODE, UNICODE_MODE, 10, 1, -1, 1 << 8, { 0, 0, "" }, "דרכון", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 10 Example 1 **NOT SAME** explicit mask 000", | |
| 2421 "111111100101101111111" | |
| 2422 "100000100111001000001" | |
| 2423 "101110101101101011101" | |
| 2424 "101110100101001011101" | |
| 2425 "101110100010101011101" | |
| 2426 "100000100000101000001" | |
| 2427 "111111101010101111111" | |
| 2428 "000000001101100000000" | |
| 2429 "111011111111011000100" | |
| 2430 "010001001110001100100" | |
| 2431 "000000110000100010011" | |
| 2432 "101001000100001101010" | |
| 2433 "000001101000101011001" | |
| 2434 "000000001001010010110" | |
| 2435 "111111101001011101011" | |
| 2436 "100000101011110111111" | |
| 2437 "101110101111011100100" | |
| 2438 "101110100000001000110" | |
| 2439 "101110101100100110001" | |
| 2440 "100000101010001111101" | |
| 2441 "111111101000101101011" | |
| 2442 }, | |
| 2443 /* 52*/ { BARCODE_QRCODE, UNICODE_MODE, 10, 1, -1, -1, { 0, 0, "" }, "מספר חלק: A20200715001", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 10 Example 2 **NOT SAME** different encodation; BWIPP uses mask 000 instead of 100", | |
| 2444 "1111111011101100001111111" | |
| 2445 "1000001011100001001000001" | |
| 2446 "1011101010110001001011101" | |
| 2447 "1011101011010000001011101" | |
| 2448 "1011101000000110001011101" | |
| 2449 "1000001010011010001000001" | |
| 2450 "1111111010101010101111111" | |
| 2451 "0000000001001001100000000" | |
| 2452 "1100111000010110000101111" | |
| 2453 "1011100011101011010011100" | |
| 2454 "0001001000011110110110001" | |
| 2455 "0111110010110101001111111" | |
| 2456 "1001111010101101000111010" | |
| 2457 "1001010100000110100001110" | |
| 2458 "0011011100100000110010011" | |
| 2459 "0001110001101010111110110" | |
| 2460 "1111011000010110111110001" | |
| 2461 "0000000010101000100011101" | |
| 2462 "1111111001111111101010000" | |
| 2463 "1000001010010101100011011" | |
| 2464 "1011101010001100111110000" | |
| 2465 "1011101001000111001000001" | |
| 2466 "1011101001000001110101010" | |
| 2467 "1000001011001010100011101" | |
| 2468 "1111111011010110001000011" | |
| 2469 }, | |
| 2470 /* 53*/ { BARCODE_QRCODE, UNICODE_MODE, 10, 1, -1, 1 << 8, { 0, 0, "" }, "מספר חלק: A20200715001", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 10 Example 2 **NOT SAME** different encodation", | |
| 2471 "1111111001001000101111111" | |
| 2472 "1000001000111010001000001" | |
| 2473 "1011101011101010001011101" | |
| 2474 "1011101001110100101011101" | |
| 2475 "1011101000100010101011101" | |
| 2476 "1000001001000001001000001" | |
| 2477 "1111111010101010101111111" | |
| 2478 "0000000011101101000000000" | |
| 2479 "1110111110110010111000100" | |
| 2480 "0000110000110000001000111" | |
| 2481 "1010011011000101101101010" | |
| 2482 "0011010110010001101011011" | |
| 2483 "1101011110001001100011110" | |
| 2484 "0010000111011101111010101" | |
| 2485 "1000001111111011101001000" | |
| 2486 "0101010101001110011010010" | |
| 2487 "1011111100110010111110101" | |
| 2488 "0000000011110011100010110" | |
| 2489 "1111111010100100101011011" | |
| 2490 "1000001010110001100011111" | |
| 2491 "1011101010101000111110100" | |
| 2492 "1011101000011100010011010" | |
| 2493 "1011101010011010101110001" | |
| 2494 "1000001011101110000111001" | |
| 2495 "1111111011110010101100111" | |
| 2496 }, | |
| 2497 /* 54*/ { BARCODE_QRCODE, UNICODE_MODE, 11, 1, -1, -1, { 0, 0, "" }, "Amerika Birleşik Devletleri", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 11 Example 1", | |
| 2498 "1111111000111100101111111" | |
| 2499 "1000001001101101001000001" | |
| 2500 "1011101000001000101011101" | |
| 2501 "1011101010000010001011101" | |
| 2502 "1011101011001001001011101" | |
| 2503 "1000001000011011001000001" | |
| 2504 "1111111010101010101111111" | |
| 2505 "0000000000110001100000000" | |
| 2506 "1100011101001011000011000" | |
| 2507 "1010000001011011001011111" | |
| 2508 "0101111100100110111011101" | |
| 2509 "0011010001010001101001101" | |
| 2510 "1000001111010100011010101" | |
| 2511 "1110010010000010100001010" | |
| 2512 "1001101010001111011011100" | |
| 2513 "1001000001110001000111111" | |
| 2514 "1011111100001111111110001" | |
| 2515 "0000000010100000100011001" | |
| 2516 "1111111011001001101010001" | |
| 2517 "1000001010110101100010010" | |
| 2518 "1011101001101010111111100" | |
| 2519 "1011101000100010000101101" | |
| 2520 "1011101001000110011011101" | |
| 2521 "1000001010110000111010110" | |
| 2522 "1111111010110101100010101" | |
| 2523 }, | |
| 2524 /* 55*/ { BARCODE_QRCODE, UNICODE_MODE, 11, 1, -1, -1, { 0, 0, "" }, "Biniş kartı #120921039", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 11 Example 2 **NOT SAME** different encodation; BWIPP same encodation as Zint but uses mask 101 instead of 111", | |
| 2525 "1111111000100110101111111" | |
| 2526 "1000001011100110001000001" | |
| 2527 "1011101010000001001011101" | |
| 2528 "1011101001001011001011101" | |
| 2529 "1011101011101110101011101" | |
| 2530 "1000001010101101001000001" | |
| 2531 "1111111010101010101111111" | |
| 2532 "0000000010110000100000000" | |
| 2533 "1101001100011100101110110" | |
| 2534 "0011000111011101000100011" | |
| 2535 "1111101100011000111100101" | |
| 2536 "0101010011111101011011100" | |
| 2537 "0001011110110010001101111" | |
| 2538 "0101100100010100111010100" | |
| 2539 "1011001100010110101010000" | |
| 2540 "0111000011010000001000110" | |
| 2541 "1110001000101100111110101" | |
| 2542 "0000000010101111100010000" | |
| 2543 "1111111010011010101010011" | |
| 2544 "1000001001001011100011001" | |
| 2545 "1011101000100000111111110" | |
| 2546 "1011101010010011100100110" | |
| 2547 "1011101000100000001111101" | |
| 2548 "1000001011100010011100111" | |
| 2549 "1111111010001001010010011" | |
| 2550 }, | |
| 2551 /* 56*/ { BARCODE_QRCODE, UNICODE_MODE, 11, 1, -1, 6 << 8, { 0, 0, "" }, "Biniş kartı #120921039", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 11 Example 2 **NOT SAME** different encodation", | |
| 2552 "1111111001110011101111111" | |
| 2553 "1000001000011111101000001" | |
| 2554 "1011101001110000101011101" | |
| 2555 "1011101010110100101011101" | |
| 2556 "1011101010101001101011101" | |
| 2557 "1000001001100010001000001" | |
| 2558 "1111111010101010101111111" | |
| 2559 "0000000001001001000000000" | |
| 2560 "1100011101101101000011000" | |
| 2561 "1100110000100010111011100" | |
| 2562 "1000101011011111111011101" | |
| 2563 "1010010100110010010100101" | |
| 2564 "0100001011100111011000101" | |
| 2565 "1100010101101101000011011" | |
| 2566 "1010111101100111011011110" | |
| 2567 "1000110100101111110111001" | |
| 2568 "1001001111101011111111101" | |
| 2569 "0000000011100000100011001" | |
| 2570 "1111111011001111101011001" | |
| 2571 "1000001010110010100010110" | |
| 2572 "1011101001010001111110000" | |
| 2573 "1011101001101100011011001" | |
| 2574 "1011101001100111001000101" | |
| 2575 "1000001010101101010011110" | |
| 2576 "1111111011011100000111001" | |
| 2577 }, | |
| 2578 /* 57*/ { BARCODE_QRCODE, UNICODE_MODE, 12, 1, -1, -1, { 0, 0, "" }, "Kūrybiškumą", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 12 Example 1; BWIPP uses mask 111 instead of 100", | |
| 2579 "111111101111101111111" | |
| 2580 "100000101010101000001" | |
| 2581 "101110101000001011101" | |
| 2582 "101110101111001011101" | |
| 2583 "101110100000101011101" | |
| 2584 "100000101101001000001" | |
| 2585 "111111101010101111111" | |
| 2586 "000000000111100000000" | |
| 2587 "110011100101000101111" | |
| 2588 "100110001010110101100" | |
| 2589 "010011100011011101001" | |
| 2590 "000000001101001101100" | |
| 2591 "001101101010110101011" | |
| 2592 "000000001101101010011" | |
| 2593 "111111100101001110110" | |
| 2594 "100000101100101100100" | |
| 2595 "101110101110000100000" | |
| 2596 "101110100111101101111" | |
| 2597 "101110100100111100100" | |
| 2598 "100000101011110001011" | |
| 2599 "111111101001101100001" | |
| 2600 }, | |
| 2601 /* 58*/ { BARCODE_QRCODE, UNICODE_MODE, 12, 1, -1, 8 << 8, { 0, 0, "" }, "Kūrybiškumą", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 12 Example 1 **NOT SAME** explicit mask 111", | |
| 2602 "111111100101101111111" | |
| 2603 "100000101101001000001" | |
| 2604 "101110101100101011101" | |
| 2605 "101110100101001011101" | |
| 2606 "101110101000101011101" | |
| 2607 "100000101001101000001" | |
| 2608 "111111101010101111111" | |
| 2609 "000000001111100000000" | |
| 2610 "110100110110001110110" | |
| 2611 "001011000111011000001" | |
| 2612 "101100111100100010110" | |
| 2613 "011011010110010110111" | |
| 2614 "011111111000100111001" | |
| 2615 "000000001010010101100" | |
| 2616 "111111101001101010010" | |
| 2617 "100000100110111110110" | |
| 2618 "101110100110000100000" | |
| 2619 "101110101011001001011" | |
| 2620 "101110100001010001001" | |
| 2621 "100000101011110001011" | |
| 2622 "111111101010110111010" | |
| 2623 }, | |
| 2624 /* 59*/ { BARCODE_QRCODE, UNICODE_MODE, 13, 1, -1, -1, { 0, 0, "" }, "บาร๋แค่ด", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 13 Example 1; BWIPP uses mask 001 instead of 111", | |
| 2625 "111111100010101111111" | |
| 2626 "100000101010101000001" | |
| 2627 "101110101011001011101" | |
| 2628 "101110100000101011101" | |
| 2629 "101110101111101011101" | |
| 2630 "100000101110001000001" | |
| 2631 "111111101010101111111" | |
| 2632 "000000001000000000000" | |
| 2633 "110100110011101110110" | |
| 2634 "011110001111001101110" | |
| 2635 "101100111101010101010" | |
| 2636 "001101001100110110111" | |
| 2637 "010011101111001000001" | |
| 2638 "000000001100001010100" | |
| 2639 "111111101111111010110" | |
| 2640 "100000100110000111000" | |
| 2641 "101110100010111110000" | |
| 2642 "101110101000011011111" | |
| 2643 "101110100111001000101" | |
| 2644 "100000101011100101011" | |
| 2645 "111111101010000100010" | |
| 2646 }, | |
| 2647 /* 60*/ { BARCODE_QRCODE, UNICODE_MODE, 13, 1, -1, 2 << 8, { 0, 0, "" }, "บาร๋แค่ด", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 13 Example 1 **NOT SAME** explicit mask 001", | |
| 2648 "111111101111101111111" | |
| 2649 "100000101101101000001" | |
| 2650 "101110100111001011101" | |
| 2651 "101110100101101011101" | |
| 2652 "101110101000101011101" | |
| 2653 "100000101010001000001" | |
| 2654 "111111101010101111111" | |
| 2655 "000000001111000000000" | |
| 2656 "111001101111111110011" | |
| 2657 "001011011010011000100" | |
| 2658 "101011111010010010010" | |
| 2659 "010001010000101010100" | |
| 2660 "000110111010011101011" | |
| 2661 "000000001011001101100" | |
| 2662 "111111100011100110101" | |
| 2663 "100000101011010010010" | |
| 2664 "101110100101111001000" | |
| 2665 "101110100100000111100" | |
| 2666 "101110101010011101111" | |
| 2667 "100000101100100010011" | |
| 2668 "111111101110011000001" | |
| 2669 }, | |
| 2670 /* 61*/ { BARCODE_QRCODE, UNICODE_MODE, 15, 1, -1, -1, { 0, 0, "" }, "uzņēmums", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 15 Example 1; BWIPP uses mask 011 instead of 111", | |
| 2671 "111111100010101111111" | |
| 2672 "100000101010101000001" | |
| 2673 "101110101011001011101" | |
| 2674 "101110100000101011101" | |
| 2675 "101110101111101011101" | |
| 2676 "100000101110001000001" | |
| 2677 "111111101010101111111" | |
| 2678 "000000001000000000000" | |
| 2679 "110100110011101110110" | |
| 2680 "110000001011000000010" | |
| 2681 "000011101101010101010" | |
| 2682 "011011001110100011011" | |
| 2683 "000010110011011111101" | |
| 2684 "000000001100010010000" | |
| 2685 "111111101101111100010" | |
| 2686 "100000100000010111101" | |
| 2687 "101110100110100100000" | |
| 2688 "101110101110011011111" | |
| 2689 "101110100111001111001" | |
| 2690 "100000101111100101011" | |
| 2691 "111111101000000101010" | |
| 2692 }, | |
| 2693 /* 62*/ { BARCODE_QRCODE, UNICODE_MODE, 15, 1, -1, 4 << 8, { 0, 0, "" }, "uzņēmums", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 15 Example 1 **NOT SAME** explicit mask 011", | |
| 2694 "111111101100101111111" | |
| 2695 "100000100100101000001" | |
| 2696 "101110101010101011101" | |
| 2697 "101110101001001011101" | |
| 2698 "101110101110001011101" | |
| 2699 "100000100000001000001" | |
| 2700 "111111101010101111111" | |
| 2701 "000000000110000000000" | |
| 2702 "111100101010010011101" | |
| 2703 "000001011010110001100" | |
| 2704 "110010111100100100100" | |
| 2705 "010101000000101101010" | |
| 2706 "001100111101010001100" | |
| 2707 "000000001010011100001" | |
| 2708 "111111100100001101100" | |
| 2709 "100000100001100110011" | |
| 2710 "101110100111010101110" | |
| 2711 "101110101000010101110" | |
| 2712 "101110101001000001000" | |
| 2713 "100000101001101011010" | |
| 2714 "111111101001110100100" | |
| 2715 }, | |
| 2716 /* 63*/ { BARCODE_QRCODE, UNICODE_MODE, 16, 1, -1, -1, { 0, 0, "" }, "ṁórṡáċ", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 16 Example 1; BWIPP uses mask 001 instead of 111", | |
| 2717 "111111100010101111111" | |
| 2718 "100000101010101000001" | |
| 2719 "101110101011001011101" | |
| 2720 "101110100000101011101" | |
| 2721 "101110101111101011101" | |
| 2722 "100000101110001000001" | |
| 2723 "111111101010101111111" | |
| 2724 "000000001000000000000" | |
| 2725 "110100110011101110110" | |
| 2726 "000100000111010001111" | |
| 2727 "011010111101011101001" | |
| 2728 "001001001000111111011" | |
| 2729 "110111110011001001101" | |
| 2730 "000000001100011010100" | |
| 2731 "111111101001101010010" | |
| 2732 "100000100010001111010" | |
| 2733 "101110100100111111011" | |
| 2734 "101110101000011011001" | |
| 2735 "101110100111011101001" | |
| 2736 "100000101101100001011" | |
| 2737 "111111101010010001010" | |
| 2738 }, | |
| 2739 /* 64*/ { BARCODE_QRCODE, UNICODE_MODE, 16, 1, -1, 2 << 8, { 0, 0, "" }, "ṁórṡáċ", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 16 Example 1 **NOT SAME** explicit mask 001", | |
| 2740 "111111101111101111111" | |
| 2741 "100000101101101000001" | |
| 2742 "101110100111001011101" | |
| 2743 "101110100101101011101" | |
| 2744 "101110101000101011101" | |
| 2745 "100000101010001000001" | |
| 2746 "111111101010101111111" | |
| 2747 "000000001111000000000" | |
| 2748 "111001101111111110011" | |
| 2749 "010001010010000100101" | |
| 2750 "011101111010011010001" | |
| 2751 "010101010100100011000" | |
| 2752 "100010100110011100111" | |
| 2753 "000000001011011101100" | |
| 2754 "111111100101110110001" | |
| 2755 "100000101111011010000" | |
| 2756 "101110100011111000011" | |
| 2757 "101110100100000111010" | |
| 2758 "101110101010001000011" | |
| 2759 "100000101010100110011" | |
| 2760 "111111101110001101001" | |
| 2761 }, | |
| 2762 /* 65*/ { BARCODE_QRCODE, UNICODE_MODE, 17, 1, -1, -1, { 0, 0, "" }, "Price: €13.50", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 17 Example 1", | |
| 2763 "111111100100101111111" | |
| 2764 "100000101101001000001" | |
| 2765 "101110101101101011101" | |
| 2766 "101110100101001011101" | |
| 2767 "101110101000101011101" | |
| 2768 "100000101000001000001" | |
| 2769 "111111101010101111111" | |
| 2770 "000000001110100000000" | |
| 2771 "110100110111101110110" | |
| 2772 "100010000000010110000" | |
| 2773 "100010101001110011100" | |
| 2774 "101110010101111010011" | |
| 2775 "011001111010101010101" | |
| 2776 "000000001101101010000" | |
| 2777 "111111101000001110010" | |
| 2778 "100000100111100111000" | |
| 2779 "101110100110111100011" | |
| 2780 "101110101011111011001" | |
| 2781 "101110100100110010001" | |
| 2782 "100000101000100101111" | |
| 2783 "111111101101110110110" | |
| 2784 }, | |
| 2785 /* 66*/ { BARCODE_QRCODE, UNICODE_MODE, 18, 1, -1, -1, { 0, 0, "" }, "Te słowa są głębokie", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 18 Example 1; BWIPP uses mask 001 instead of 100", | |
| 2786 "1111111010000111001111111" | |
| 2787 "1000001010011000001000001" | |
| 2788 "1011101011001100001011101" | |
| 2789 "1011101011101111001011101" | |
| 2790 "1011101001101100101011101" | |
| 2791 "1000001011100001101000001" | |
| 2792 "1111111010101010101111111" | |
| 2793 "0000000000110100000000000" | |
| 2794 "1100111000101011100101111" | |
| 2795 "0001100010000101011111001" | |
| 2796 "1010101111100111010011000" | |
| 2797 "1010100011001100111100100" | |
| 2798 "1101011110010111101001011" | |
| 2799 "1001100100101101101010001" | |
| 2800 "0011101111111111100111000" | |
| 2801 "0011100111110000001101100" | |
| 2802 "1100101100101100111110001" | |
| 2803 "0000000011100100100011001" | |
| 2804 "1111111000100001101010000" | |
| 2805 "1000001010001001100011111" | |
| 2806 "1011101011010110111111101" | |
| 2807 "1011101001101010101000111" | |
| 2808 "1011101000011111101110010" | |
| 2809 "1000001011110101011011101" | |
| 2810 "1111111010001100000011111" | |
| 2811 }, | |
| 2812 /* 67*/ { BARCODE_QRCODE, UNICODE_MODE, 18, 1, -1, 2 << 8, { 0, 0, "" }, "Te słowa są głębokie", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 18 Example 1 **NOT SAME** explicit mask 001", | |
| 2813 "1111111011110110101111111" | |
| 2814 "1000001010010110001000001" | |
| 2815 "1011101001000010001011101" | |
| 2816 "1011101000011110101011101" | |
| 2817 "1011101010011101001011101" | |
| 2818 "1000001011101111101000001" | |
| 2819 "1111111010101010101111111" | |
| 2820 "0000000011000101100000000" | |
| 2821 "1110011011011010011110011" | |
| 2822 "1111100100001011010001000" | |
| 2823 "0100101001101001011101001" | |
| 2824 "1011010010111101001101010" | |
| 2825 "1100101111100110011000101" | |
| 2826 "0111100010100011100100000" | |
| 2827 "1101101001110001101001001" | |
| 2828 "0010010110000001111100010" | |
| 2829 "1101011101011101111111111" | |
| 2830 "0000000011101010100011000" | |
| 2831 "1111111000101111101010001" | |
| 2832 "1000001011111000100010001" | |
| 2833 "1011101000100111111110011" | |
| 2834 "1011101001100100100110110" | |
| 2835 "1011101010010001100000011" | |
| 2836 "1000001010000100101010011" | |
| 2837 "1111111011111101110010001" | |
| 2838 }, | |
| 2839 /* 68*/ { BARCODE_QRCODE, UNICODE_MODE, 20, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 20 Example 1; BWIPP uses mask 011 instead of 111", | |
| 2840 "111111100010101111111" | |
| 2841 "100000101010101000001" | |
| 2842 "101110101011001011101" | |
| 2843 "101110100000101011101" | |
| 2844 "101110101111101011101" | |
| 2845 "100000101110001000001" | |
| 2846 "111111101010101111111" | |
| 2847 "000000001000000000000" | |
| 2848 "110100110011101110110" | |
| 2849 "101011011011011001000" | |
| 2850 "110011111001000000101" | |
| 2851 "000111011100111101111" | |
| 2852 "100111110011001011101" | |
| 2853 "000000001000011110000" | |
| 2854 "111111101101110110001" | |
| 2855 "100000100110000111110" | |
| 2856 "101110100110111000101" | |
| 2857 "101110101000011010001" | |
| 2858 "101110100011001010101" | |
| 2859 "100000101011100110011" | |
| 2860 "111111101010000101010" | |
| 2861 }, | |
| 2862 /* 69*/ { BARCODE_QRCODE, UNICODE_MODE, 20, 1, -1, 4 << 8, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 20 Example 1 **NOT SAME** explicit mask 011", | |
| 2863 "111111101100101111111" | |
| 2864 "100000100100101000001" | |
| 2865 "101110101010101011101" | |
| 2866 "101110101001001011101" | |
| 2867 "101110101110001011101" | |
| 2868 "100000100000001000001" | |
| 2869 "111111101010101111111" | |
| 2870 "000000000110000000000" | |
| 2871 "111100101010010011101" | |
| 2872 "011010001010101000110" | |
| 2873 "000010101000110001011" | |
| 2874 "001001010010110011110" | |
| 2875 "101001111101000101100" | |
| 2876 "000000001110010000001" | |
| 2877 "111111100100000111111" | |
| 2878 "100000100111110110000" | |
| 2879 "101110100111001001011" | |
| 2880 "101110101110010100000" | |
| 2881 "101110101101000100100" | |
| 2882 "100000101101101000010" | |
| 2883 "111111101011110100100" | |
| 2884 }, | |
| 2885 /* 70*/ { BARCODE_QRCODE, UNICODE_MODE, 20, 1, -1, -1, { 0, 0, "" }, "東京都", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 20 Example 2; BWIPP uses mask 000 instead of 100", | |
| 2886 "111111101111101111111" | |
| 2887 "100000101010101000001" | |
| 2888 "101110101000001011101" | |
| 2889 "101110101111001011101" | |
| 2890 "101110100000101011101" | |
| 2891 "100000101101001000001" | |
| 2892 "111111101010101111111" | |
| 2893 "000000000111100000000" | |
| 2894 "110011100101000101111" | |
| 2895 "011110011101100001100" | |
| 2896 "111011100111001111100" | |
| 2897 "101110011100011110100" | |
| 2898 "010010111000111000011" | |
| 2899 "000000001100111011111" | |
| 2900 "111111100000110011101" | |
| 2901 "100000101001100101000" | |
| 2902 "101110101101001101101" | |
| 2903 "101110100011100111001" | |
| 2904 "101110100101001100100" | |
| 2905 "100000101010011010011" | |
| 2906 "111111101100111011001" | |
| 2907 }, | |
| 2908 /* 71*/ { BARCODE_QRCODE, UNICODE_MODE, 20, 1, -1, 1 << 8, { 0, 0, "" }, "東京都", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 20 Example 2 **NOT SAME** explicit mask 000", | |
| 2909 "111111100101101111111" | |
| 2910 "100000100111001000001" | |
| 2911 "101110101101101011101" | |
| 2912 "101110100101001011101" | |
| 2913 "101110100010101011101" | |
| 2914 "100000100000101000001" | |
| 2915 "111111101010101111111" | |
| 2916 "000000001101100000000" | |
| 2917 "111011111111011000100" | |
| 2918 "110011010000001100001" | |
| 2919 "010110101010100010001" | |
| 2920 "111100001110001100110" | |
| 2921 "000000101010101010001" | |
| 2922 "000000001001010110010" | |
| 2923 "111111101101011110000" | |
| 2924 "100000101011110111010" | |
| 2925 "101110101111011111111" | |
| 2926 "101110100110001010100" | |
| 2927 "101110101000100001001" | |
| 2928 "100000101000001000001" | |
| 2929 "111111101110101001011" | |
| 2930 }, | |
| 2931 /* 72*/ { BARCODE_QRCODE, UNICODE_MODE, 21, 1, -1, -1, { 0, 0, "" }, "Študentska št. 2198390", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 21 Example 1 **NOT SAME** different encodation", | |
| 2932 "1111111010000110001111111" | |
| 2933 "1000001010011110101000001" | |
| 2934 "1011101011001111101011101" | |
| 2935 "1011101011101011101011101" | |
| 2936 "1011101001101010001011101" | |
| 2937 "1000001011100100001000001" | |
| 2938 "1111111010101010101111111" | |
| 2939 "0000000000110110100000000" | |
| 2940 "1100111000101010000101111" | |
| 2941 "1000000010000001110111000" | |
| 2942 "1001011011100010100110011" | |
| 2943 "0110100101001010111100110" | |
| 2944 "1111111100010110000110000" | |
| 2945 "1011000111101000110011010" | |
| 2946 "0000001011011011000110001" | |
| 2947 "0011000100010000011100110" | |
| 2948 "1101101101001110111111001" | |
| 2949 "0000000011000110100011001" | |
| 2950 "1111111001100000101011000" | |
| 2951 "1000001011001001100010100" | |
| 2952 "1011101011110111111110011" | |
| 2953 "1011101001001011001101011" | |
| 2954 "1011101001011111000111010" | |
| 2955 "1000001010010101110010101" | |
| 2956 "1111111010101100000011011" | |
| 2957 }, | |
| 2958 /* 73*/ { BARCODE_QRCODE, UNICODE_MODE, 22, 1, -1, -1, { 0, 0, "" }, "Россия", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 22 Example 1", | |
| 2959 "111111100010101111111" | |
| 2960 "100000101010101000001" | |
| 2961 "101110101011001011101" | |
| 2962 "101110100000101011101" | |
| 2963 "101110101111101011101" | |
| 2964 "100000101110001000001" | |
| 2965 "111111101010101111111" | |
| 2966 "000000001000000000000" | |
| 2967 "110100110011101110110" | |
| 2968 "101000001111010010111" | |
| 2969 "011101110101011111101" | |
| 2970 "110011010010111010011" | |
| 2971 "101010101111001100101" | |
| 2972 "000000001000011110100" | |
| 2973 "111111101001101001010" | |
| 2974 "100000100010001110111" | |
| 2975 "101110100000111110001" | |
| 2976 "101110101010011001101" | |
| 2977 "101110100011011011001" | |
| 2978 "100000101001100001011" | |
| 2979 "111111101100010100110" | |
| 2980 }, | |
| 2981 /* 74*/ { BARCODE_QRCODE, UNICODE_MODE, 22, 1, -1, -1, { 0, 0, "" }, "Монголулс", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 22 Example 2; BWIPP uses mask 000 instead of 100", | |
| 2982 "111111101111101111111" | |
| 2983 "100000101010101000001" | |
| 2984 "101110101000001011101" | |
| 2985 "101110101111001011101" | |
| 2986 "101110100000101011101" | |
| 2987 "100000101101001000001" | |
| 2988 "111111101010101111111" | |
| 2989 "000000000111100000000" | |
| 2990 "110011100101000101111" | |
| 2991 "110010000001100111001" | |
| 2992 "101001110101011101001" | |
| 2993 "011011001100000100100" | |
| 2994 "110110111100100110111" | |
| 2995 "000000001100100011011" | |
| 2996 "111111100000101001110" | |
| 2997 "100000101011101100101" | |
| 2998 "101110101111000110001" | |
| 2999 "101110100110100111001" | |
| 3000 "101110100101011111100" | |
| 3001 "100000101001000100111" | |
| 3002 "111111101000101111101" | |
| 3003 }, | |
| 3004 /* 75*/ { BARCODE_QRCODE, UNICODE_MODE, 22, 1, -1, 1 << 8, { 0, 0, "" }, "Монголулс", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 22 Example 2 **NOT SAME** explicit mask 000", | |
| 3005 "111111100101101111111" | |
| 3006 "100000100111001000001" | |
| 3007 "101110101101101011101" | |
| 3008 "101110100101001011101" | |
| 3009 "101110100010101011101" | |
| 3010 "100000100000101000001" | |
| 3011 "111111101010101111111" | |
| 3012 "000000001101100000000" | |
| 3013 "111011111111011000100" | |
| 3014 "011111001100001010100" | |
| 3015 "000100111000110000100" | |
| 3016 "001001011110010110110" | |
| 3017 "100100101110110100101" | |
| 3018 "000000001001001110110" | |
| 3019 "111111101101000100011" | |
| 3020 "100000101001111110111" | |
| 3021 "101110101101010100011" | |
| 3022 "101110100011001010100" | |
| 3023 "101110101000110010001" | |
| 3024 "100000101011010110101" | |
| 3025 "111111101010111101111" | |
| 3026 }, | |
| 3027 /* 76*/ { BARCODE_QRCODE, UNICODE_MODE, 23, 1, -1, -1, { 0, 0, "" }, "bœuf", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 23 Example 1; BWIPP uses mask 000 instead of 111", | |
| 3028 "111111100010101111111" | |
| 3029 "100000101010101000001" | |
| 3030 "101110101011001011101" | |
| 3031 "101110100000101011101" | |
| 3032 "101110101111101011101" | |
| 3033 "100000101110001000001" | |
| 3034 "111111101010101111111" | |
| 3035 "000000001000000000000" | |
| 3036 "110100110011101110110" | |
| 3037 "010001001111010100010" | |
| 3038 "010001100011001110001" | |
| 3039 "111111001100111110011" | |
| 3040 "010100110101011100001" | |
| 3041 "000000001010011111100" | |
| 3042 "111111101011101010110" | |
| 3043 "100000100100001100101" | |
| 3044 "101110100110111000101" | |
| 3045 "101110101100011111001" | |
| 3046 "101110100101011111001" | |
| 3047 "100000101001100100011" | |
| 3048 "111111101000010110110" | |
| 3049 }, | |
| 3050 /* 77*/ { BARCODE_QRCODE, UNICODE_MODE, 23, 1, -1, 1 << 8, { 0, 0, "" }, "bœuf", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 23 Example 1 ** NOT SAME** explicit mask 000", | |
| 3051 "111111100010101111111" | |
| 3052 "100000100000101000001" | |
| 3053 "101110101010001011101" | |
| 3054 "101110100000101011101" | |
| 3055 "101110100101101011101" | |
| 3056 "100000100111001000001" | |
| 3057 "111111101010101111111" | |
| 3058 "000000001010000000000" | |
| 3059 "111011111010111000100" | |
| 3060 "010001001111010100010" | |
| 3061 "000011110001011100011" | |
| 3062 "110110000101110111010" | |
| 3063 "010100110101011100001" | |
| 3064 "000000001000001101110" | |
| 3065 "111111101010100011111" | |
| 3066 "100000101100001100101" | |
| 3067 "101110101100101010111" | |
| 3068 "101110100101010110000" | |
| 3069 "101110101101011111001" | |
| 3070 "100000101011110110001" | |
| 3071 "111111101001011111111" | |
| 3072 }, | |
| 3073 /* 78*/ { BARCODE_QRCODE, UNICODE_MODE, 24, 1, -1, -1, { 0, 0, "" }, "جواز السفر", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 24 Example 1", | |
| 3074 "111111100010101111111" | |
| 3075 "100000100000101000001" | |
| 3076 "101110101010001011101" | |
| 3077 "101110100000101011101" | |
| 3078 "101110100101101011101" | |
| 3079 "100000100111001000001" | |
| 3080 "111111101010101111111" | |
| 3081 "000000001010000000000" | |
| 3082 "111011111010111000100" | |
| 3083 "001010011111001010111" | |
| 3084 "101100101101000110100" | |
| 3085 "100010010001110100110" | |
| 3086 "100111110011011100101" | |
| 3087 "000000001011001100110" | |
| 3088 "111111101010111010011" | |
| 3089 "100000101001010110010" | |
| 3090 "101110101110110010000" | |
| 3091 "101110100010001110100" | |
| 3092 "101110101100111010101" | |
| 3093 "100000101010001000001" | |
| 3094 "111111101101011101011" | |
| 3095 }, | |
| 3096 /* 79*/ { BARCODE_QRCODE, UNICODE_MODE, 24, 1, -1, -1, { 0, 0, "" }, "المنشأ: المملكة العربية السعودية", -1, 0, 29, 29, 0, "AIM ITS/04-023:2022 ECI 24 Example 2; BWIPP uses mask 000 instead of 100", | |
| 3097 "11111110111010000111101111111" | |
| 3098 "10000010111000001100101000001" | |
| 3099 "10111010101101011000101011101" | |
| 3100 "10111010110100111111101011101" | |
| 3101 "10111010000001101101101011101" | |
| 3102 "10000010100111110001001000001" | |
| 3103 "11111110101010101010101111111" | |
| 3104 "00000000010010100000100000000" | |
| 3105 "11001110000101110010100101111" | |
| 3106 "10011100111010000000111010010" | |
| 3107 "10011111000111111001100110111" | |
| 3108 "11111101101101011100110010010" | |
| 3109 "01010011101011001010000110011" | |
| 3110 "01100001000001100111111010011" | |
| 3111 "01001010010000001110000110101" | |
| 3112 "01111000100010110101110011011" | |
| 3113 "10100011111101111100000101111" | |
| 3114 "11111101001010001100010110000" | |
| 3115 "00010110111111101010000101011" | |
| 3116 "00001000110101000100101011010" | |
| 3117 "11101010100011011010111111100" | |
| 3118 "00000000110001111101100010000" | |
| 3119 "11111110000000001110101010001" | |
| 3120 "10000010110010110110100010011" | |
| 3121 "10111010111101110111111110001" | |
| 3122 "10111010011010011101011011110" | |
| 3123 "10111010010111111110000101111" | |
| 3124 "10000010111101000011000110100" | |
| 3125 "11111110111011010111000011010" | |
| 3126 }, | |
| 3127 /* 80*/ { BARCODE_QRCODE, UNICODE_MODE, 24, 1, -1, 1 << 8, { 0, 0, "" }, "المنشأ: المملكة العربية السعودية", -1, 0, 29, 29, 1, "AIM ITS/04-023:2022 ECI 24 Example 2 **NOT SAME** explicit mask 000", | |
| 3128 "11111110010011001110101111111" | |
| 3129 "10000010001110111010001000001" | |
| 3130 "10111010111011101110001011101" | |
| 3131 "10111010011101110110101011101" | |
| 3132 "10111010001000100100101011101" | |
| 3133 "10000010010001000111101000001" | |
| 3134 "11111110101010101010101111111" | |
| 3135 "00000000111011101001100000000" | |
| 3136 "11101111101100111011111000100" | |
| 3137 "00101000001100110110001100100" | |
| 3138 "00101011110001001111010000001" | |
| 3139 "10110100100100010101111011011" | |
| 3140 "00011010100010000011001111010" | |
| 3141 "11010101110111010001001100101" | |
| 3142 "11111110100110111000110000011" | |
| 3143 "00110001101011111100111010010" | |
| 3144 "11101010110100110101001100110" | |
| 3145 "01001001111100111010100000110" | |
| 3146 "10100010001001011100110011101" | |
| 3147 "01000001111100001101100010011" | |
| 3148 "10100011101010010011111110101" | |
| 3149 "00000000100111001011100010110" | |
| 3150 "11111110110110111000101010111" | |
| 3151 "10000010111011111111100011010" | |
| 3152 "10111010110100111110111111000" | |
| 3153 "10111010001100101011101101000" | |
| 3154 "10111010100001001000110011001" | |
| 3155 "10000010110100001010001111101" | |
| 3156 "11111110110010011110001010011" | |
| 3157 }, | |
| 3158 /* 81*/ { BARCODE_QRCODE, UNICODE_MODE, 25, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 25 Example 1", | |
| 3159 "111111100010101111111" | |
| 3160 "100000100000101000001" | |
| 3161 "101110101010001011101" | |
| 3162 "101110100000101011101" | |
| 3163 "101110100101101011101" | |
| 3164 "100000100111001000001" | |
| 3165 "111111101010101111111" | |
| 3166 "000000001010000000000" | |
| 3167 "111011111010111000100" | |
| 3168 "000001010011010100010" | |
| 3169 "010011110001011100011" | |
| 3170 "100001001011110110010" | |
| 3171 "001100101101011101001" | |
| 3172 "000000001100001100010" | |
| 3173 "111111101010100010011" | |
| 3174 "100000101110001101000" | |
| 3175 "101110101100101011100" | |
| 3176 "101110100001010000000" | |
| 3177 "101110101001011011001" | |
| 3178 "100000101011110101101" | |
| 3179 "111111101111011010111" | |
| 3180 }, | |
| 3181 /* 82*/ { BARCODE_QRCODE, UNICODE_MODE, 25, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 25 Example 2; BWIPP uses mask 000 instead of 111", | |
| 3182 "111111100010101111111" | |
| 3183 "100000101010101000001" | |
| 3184 "101110101011001011101" | |
| 3185 "101110100000101011101" | |
| 3186 "101110101111101011101" | |
| 3187 "100000101110001000001" | |
| 3188 "111111101010101111111" | |
| 3189 "000000001000000000000" | |
| 3190 "110100110011101110110" | |
| 3191 "011011010111010011011" | |
| 3192 "110010110011000001010" | |
| 3193 "111100010110111010011" | |
| 3194 "000001100011001000101" | |
| 3195 "000000001001011110100" | |
| 3196 "111111101001111010110" | |
| 3197 "100000100001001011000" | |
| 3198 "101110100100111000110" | |
| 3199 "101110101001011100001" | |
| 3200 "101110100000010101001" | |
| 3201 "100000101001000001011" | |
| 3202 "111111101110000101110" | |
| 3203 }, | |
| 3204 /* 83*/ { BARCODE_QRCODE, UNICODE_MODE, 25, 1, -1, 1 << 8, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 25 Example 2 **NOT SAME** explicit mask 000", | |
| 3205 "111111100010101111111" | |
| 3206 "100000100000101000001" | |
| 3207 "101110101010001011101" | |
| 3208 "101110100000101011101" | |
| 3209 "101110100101101011101" | |
| 3210 "100000100111001000001" | |
| 3211 "111111101010101111111" | |
| 3212 "000000001010000000000" | |
| 3213 "111011111010111000100" | |
| 3214 "011011010111010011011" | |
| 3215 "100000100001010011000" | |
| 3216 "110101011111110011010" | |
| 3217 "000001100011001000101" | |
| 3218 "000000001011001100110" | |
| 3219 "111111101000110011111" | |
| 3220 "100000101001001011000" | |
| 3221 "101110101110101010100" | |
| 3222 "101110100000010101000" | |
| 3223 "101110101000010101001" | |
| 3224 "100000101011010011001" | |
| 3225 "111111101111001100111" | |
| 3226 }, | |
| 3227 /* 84*/ { BARCODE_QRCODE, UNICODE_MODE, 25, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 25 Example 3", | |
| 3228 "111111100010101111111" | |
| 3229 "100000100000101000001" | |
| 3230 "101110101010001011101" | |
| 3231 "101110100000101011101" | |
| 3232 "101110100101101011101" | |
| 3233 "100000100111001000001" | |
| 3234 "111111101010101111111" | |
| 3235 "000000001010000000000" | |
| 3236 "111011111010111000100" | |
| 3237 "011011000011010101111" | |
| 3238 "110010110001001101011" | |
| 3239 "011111001111110000110" | |
| 3240 "100010110011001100101" | |
| 3241 "000000001100001101010" | |
| 3242 "111111101100100111111" | |
| 3243 "100000101100001010000" | |
| 3244 "101110101010101000100" | |
| 3245 "101110100001010100100" | |
| 3246 "101110101011011110101" | |
| 3247 "100000101101110000101" | |
| 3248 "111111101001011111011" | |
| 3249 }, | |
| 3250 /* 85*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 26 Example 1; BWIPP uses mask 000 instead of 111", | |
| 3251 "111111100010101111111" | |
| 3252 "100000101010101000001" | |
| 3253 "101110101011001011101" | |
| 3254 "101110100000101011101" | |
| 3255 "101110101111101011101" | |
| 3256 "100000101110001000001" | |
| 3257 "111111101010101111111" | |
| 3258 "000000001000000000000" | |
| 3259 "110100110011101110110" | |
| 3260 "010111001111010000111" | |
| 3261 "111010100011011000001" | |
| 3262 "111010010000111101011" | |
| 3263 "011001110101001000001" | |
| 3264 "000000001100011111100" | |
| 3265 "111111101111101010110" | |
| 3266 "100000100110001110111" | |
| 3267 "101110100010111011110" | |
| 3268 "101110101110011010101" | |
| 3269 "101110100011011110001" | |
| 3270 "100000101111100101011" | |
| 3271 "111111101110010100110" | |
| 3272 }, | |
| 3273 /* 86*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 1, -1, 1 << 8, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 26 Example 1 **NOT SAME** explicit mask 000", | |
| 3274 "111111100010101111111" | |
| 3275 "100000100000101000001" | |
| 3276 "101110101010001011101" | |
| 3277 "101110100000101011101" | |
| 3278 "101110100101101011101" | |
| 3279 "100000100111001000001" | |
| 3280 "111111101010101111111" | |
| 3281 "000000001010000000000" | |
| 3282 "111011111010111000100" | |
| 3283 "010111001111010000111" | |
| 3284 "101000110001001010011" | |
| 3285 "110011011001110100010" | |
| 3286 "011001110101001000001" | |
| 3287 "000000001110001101110" | |
| 3288 "111111101110100011111" | |
| 3289 "100000101110001110111" | |
| 3290 "101110101000101001100" | |
| 3291 "101110100111010011100" | |
| 3292 "101110101011011110001" | |
| 3293 "100000101101110111001" | |
| 3294 "111111101111011101111" | |
| 3295 }, | |
| 3296 /* 87*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 2, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 26 Example 2; BWIPP uses mask 101 instead of 010", | |
| 3297 "1111111001111101001111111" | |
| 3298 "1000001001001111001000001" | |
| 3299 "1011101011101101001011101" | |
| 3300 "1011101011111011101011101" | |
| 3301 "1011101010011001001011101" | |
| 3302 "1000001010100000001000001" | |
| 3303 "1111111010101010101111111" | |
| 3304 "0000000010100011000000000" | |
| 3305 "1011111001011000101111100" | |
| 3306 "0000010010010110000001110" | |
| 3307 "0110001111000111000001001" | |
| 3308 "1010010010111101010011000" | |
| 3309 "1111111010111010101110110" | |
| 3310 "1000110001100000010001110" | |
| 3311 "1001011111111001010010010" | |
| 3312 "1010100110110010100111001" | |
| 3313 "1010101001110000111111001" | |
| 3314 "0000000011001111100010101" | |
| 3315 "1111111001000111101011111" | |
| 3316 "1000001011001100100011000" | |
| 3317 "1011101010101010111110100" | |
| 3318 "1011101011100000101001111" | |
| 3319 "1011101010011001110111001" | |
| 3320 "1000001001110010100111010" | |
| 3321 "1111111010110001001010111" | |
| 3322 }, | |
| 3323 /* 88*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 2, -1, 6 << 8, { 0, 0, "" }, "バーコード", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 26 Example 2 **NOT SAME** explicit mask 101", | |
| 3324 "1111111001001011101111111" | |
| 3325 "1000001010001110001000001" | |
| 3326 "1011101011101101001011101" | |
| 3327 "1011101010011000001011101" | |
| 3328 "1011101000011001001011101" | |
| 3329 "1000001001100001001000001" | |
| 3330 "1111111010101010101111111" | |
| 3331 "0000000011100010000000000" | |
| 3332 "1000001011011000111001110" | |
| 3333 "0011110001110101100010010" | |
| 3334 "0110001111000111000001001" | |
| 3335 "1011010011111100010010000" | |
| 3336 "1001001100001100011000000" | |
| 3337 "1001110000100001010000110" | |
| 3338 "1001011111111001010010010" | |
| 3339 "1001000101010001000100101" | |
| 3340 "1010101001110000111111001" | |
| 3341 "0000000010001110100011101" | |
| 3342 "1111111001110001101011001" | |
| 3343 "1000001000001101100010000" | |
| 3344 "1011101000101010111110100" | |
| 3345 "1011101000000011001010011" | |
| 3346 "1011101000011001110111001" | |
| 3347 "1000001000110011100110010" | |
| 3348 "1111111010000111111100001" | |
| 3349 }, | |
| 3350 /* 89*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 2, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 26 Example 3; BWIPP uses mask 111 instead of 001", | |
| 3351 "111111101011001111111" | |
| 3352 "100000100001001000001" | |
| 3353 "101110101100101011101" | |
| 3354 "101110100001001011101" | |
| 3355 "101110100111101011101" | |
| 3356 "100000101001101000001" | |
| 3357 "111111101010101111111" | |
| 3358 "000000000110100000000" | |
| 3359 "101000110110000100101" | |
| 3360 "111001010101011001110" | |
| 3361 "110010100011110011010" | |
| 3362 "010000010011001100100" | |
| 3363 "010101100111100100011" | |
| 3364 "000000001110001100100" | |
| 3365 "111111101110001000001" | |
| 3366 "100000100010100110001" | |
| 3367 "101110100110000101110" | |
| 3368 "101110100100001000110" | |
| 3369 "101110101011101000111" | |
| 3370 "100000100010011011011" | |
| 3371 "111111101011111001101" | |
| 3372 }, | |
| 3373 /* 90*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 2, -1, 8 << 8, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 26 Example 3 **NOT SAME** explicit mask 111", | |
| 3374 "111111100110001111111" | |
| 3375 "100000100110001000001" | |
| 3376 "101110100000101011101" | |
| 3377 "101110100100001011101" | |
| 3378 "101110100000101011101" | |
| 3379 "100000101101101000001" | |
| 3380 "111111101010101111111" | |
| 3381 "000000000001100000000" | |
| 3382 "100101101010010100000" | |
| 3383 "101100000000001100100" | |
| 3384 "110101100100110100010" | |
| 3385 "001100001111010000111" | |
| 3386 "000000110010110001001" | |
| 3387 "000000001001001011100" | |
| 3388 "111111100010010100010" | |
| 3389 "100000101111110011011" | |
| 3390 "101110100001000010110" | |
| 3391 "101110101000010100101" | |
| 3392 "101110100110111101101" | |
| 3393 "100000100101011100011" | |
| 3394 "111111101111100101110" | |
| 3395 }, | |
| 3396 /* 91*/ { BARCODE_QRCODE, UNICODE_MODE, 27, 2, -1, 5 << 8, { 0, 0, "" }, "sn:7QPB4MN", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 27 Example 1 **NOT SAME** different encodation; explicit mask 100 (auto 011) to match BWIPP", | |
| 3397 "111111101110101111111" | |
| 3398 "100000100110001000001" | |
| 3399 "101110100011001011101" | |
| 3400 "101110101101001011101" | |
| 3401 "101110101100101011101" | |
| 3402 "100000101001001000001" | |
| 3403 "111111101010101111111" | |
| 3404 "000000001011100000000" | |
| 3405 "100010111101011111001" | |
| 3406 "011010010001101101110" | |
| 3407 "101110101111001010100" | |
| 3408 "110010010110010011000" | |
| 3409 "001111110110100011011" | |
| 3410 "000000001010100111111" | |
| 3411 "111111101000100111110" | |
| 3412 "100000100111111110111" | |
| 3413 "101110101011001110010" | |
| 3414 "101110100000100110101" | |
| 3415 "101110100101011011100" | |
| 3416 "100000100101001111011" | |
| 3417 "111111101010010100101" | |
| 3418 }, | |
| 3419 /* 92*/ { BARCODE_QRCODE, UNICODE_MODE, 28, 1, -1, -1, { 0, 0, "" }, "條碼", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 28 Example 1", | |
| 3420 "111111100010101111111" | |
| 3421 "100000100000101000001" | |
| 3422 "101110101010001011101" | |
| 3423 "101110100000101011101" | |
| 3424 "101110100101101011101" | |
| 3425 "100000100111001000001" | |
| 3426 "111111101010101111111" | |
| 3427 "000000001010000000000" | |
| 3428 "111011111010111000100" | |
| 3429 "000101001011010101110" | |
| 3430 "000000101101011101011" | |
| 3431 "100101001011110111010" | |
| 3432 "010001100101011101101" | |
| 3433 "000000001000001100110" | |
| 3434 "111111101000100011011" | |
| 3435 "100000101110001101110" | |
| 3436 "101110101100101010110" | |
| 3437 "101110100011010101100" | |
| 3438 "101110101001011001001" | |
| 3439 "100000101101110000101" | |
| 3440 "111111101101011111111" | |
| 3441 }, | |
| 3442 /* 93*/ { BARCODE_QRCODE, UNICODE_MODE, 29, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 29 Example 1", | |
| 3443 "111111100010101111111" | |
| 3444 "100000100000101000001" | |
| 3445 "101110101010001011101" | |
| 3446 "101110100000101011101" | |
| 3447 "101110100101101011101" | |
| 3448 "100000100111001000001" | |
| 3449 "111111101010101111111" | |
| 3450 "000000001010000000000" | |
| 3451 "111011111010111000100" | |
| 3452 "100001010001010100110" | |
| 3453 "110111111101011100111" | |
| 3454 "000011001001110110110" | |
| 3455 "001101101111011100101" | |
| 3456 "000000001000001100110" | |
| 3457 "111111101100100011011" | |
| 3458 "100000101110001100000" | |
| 3459 "101110101000101011110" | |
| 3460 "101110100011010010100" | |
| 3461 "101110101101011000101" | |
| 3462 "100000101111110111001" | |
| 3463 "111111101101011100011" | |
| 3464 }, | |
| 3465 /* 94*/ { BARCODE_QRCODE, UNICODE_MODE, 29, 1, -1, -1, { 0, 0, "" }, "北京", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 29 Example 2", | |
| 3466 "111111100100101111111" | |
| 3467 "100000101001001000001" | |
| 3468 "101110100100001011101" | |
| 3469 "101110101001001011101" | |
| 3470 "101110100011101011101" | |
| 3471 "100000101110101000001" | |
| 3472 "111111101010101111111" | |
| 3473 "000000000011100000000" | |
| 3474 "111110111100110101010" | |
| 3475 "001011001010100100000" | |
| 3476 "010100101111010011010" | |
| 3477 "011101010100000110100" | |
| 3478 "001010110001010011100" | |
| 3479 "000000001101111100000" | |
| 3480 "111111101010101101010" | |
| 3481 "100000100111111100110" | |
| 3482 "101110101100100101111" | |
| 3483 "101110101000100000010" | |
| 3484 "101110101101010111000" | |
| 3485 "100000101100000111011" | |
| 3486 "111111101011010110010" | |
| 3487 }, | |
| 3488 /* 95*/ { BARCODE_QRCODE, UNICODE_MODE, 30, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 30 Example 1; BWIPP uses mask 000 instead of 111", | |
| 3489 "111111100010101111111" | |
| 3490 "100000101010101000001" | |
| 3491 "101110101011001011101" | |
| 3492 "101110100000101011101" | |
| 3493 "101110101111101011101" | |
| 3494 "100000101110001000001" | |
| 3495 "111111101010101111111" | |
| 3496 "000000001000000000000" | |
| 3497 "110100110011101110110" | |
| 3498 "000010000001010001111" | |
| 3499 "000111110001011101001" | |
| 3500 "001010010010111110111" | |
| 3501 "100110110111001101101" | |
| 3502 "000000001000011010100" | |
| 3503 "111111101101101110110" | |
| 3504 "100000100110001011111" | |
| 3505 "101110100010111011100" | |
| 3506 "101110101110011111101" | |
| 3507 "101110100001011000101" | |
| 3508 "100000101001100010011" | |
| 3509 "111111101110010101110" | |
| 3510 }, | |
| 3511 /* 96*/ { BARCODE_QRCODE, UNICODE_MODE, 30, 1, -1, 1 << 8, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 30 Example 1 **NOT SAME** explicit mask 000", | |
| 3512 "111111100010101111111" | |
| 3513 "100000100000101000001" | |
| 3514 "101110101010001011101" | |
| 3515 "101110100000101011101" | |
| 3516 "101110100101101011101" | |
| 3517 "100000100111001000001" | |
| 3518 "111111101010101111111" | |
| 3519 "000000001010000000000" | |
| 3520 "111011111010111000100" | |
| 3521 "000010000001010001111" | |
| 3522 "010101100011001111011" | |
| 3523 "000011011011110111110" | |
| 3524 "100110110111001101101" | |
| 3525 "000000001010001000110" | |
| 3526 "111111101100100111111" | |
| 3527 "100000101110001011111" | |
| 3528 "101110101000101001110" | |
| 3529 "101110100111010110100" | |
| 3530 "101110101001011000101" | |
| 3531 "100000101011110000001" | |
| 3532 "111111101111011100111" | |
| 3533 }, | |
| 3534 /* 97*/ { BARCODE_QRCODE, UNICODE_MODE, 30, 1, -1, -1, { 0, 0, "" }, "서울", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 30 Example 2", | |
| 3535 "111111100010101111111" | |
| 3536 "100000100000101000001" | |
| 3537 "101110101010001011101" | |
| 3538 "101110100000101011101" | |
| 3539 "101110100101101011101" | |
| 3540 "100000100111001000001" | |
| 3541 "111111101010101111111" | |
| 3542 "000000001010000000000" | |
| 3543 "111011111010111000100" | |
| 3544 "110000001101010101110" | |
| 3545 "011011110001011101011" | |
| 3546 "100111001111110110110" | |
| 3547 "000000101101011100101" | |
| 3548 "000000001100001101110" | |
| 3549 "111111101000100010011" | |
| 3550 "100000101110001100111" | |
| 3551 "101110101100101011110" | |
| 3552 "101110100001010011100" | |
| 3553 "101110101001011101001" | |
| 3554 "100000101001110110101" | |
| 3555 "111111101011011101011" | |
| 3556 }, | |
| 3557 /* 98*/ { BARCODE_QRCODE, UNICODE_MODE, 31, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 31 Example 1", | |
| 3558 "111111100010101111111" | |
| 3559 "100000100000101000001" | |
| 3560 "101110101010001011101" | |
| 3561 "101110100000101011101" | |
| 3562 "101110100101101011101" | |
| 3563 "100000100111001000001" | |
| 3564 "111111101010101111111" | |
| 3565 "000000001010000000000" | |
| 3566 "111011111010111000100" | |
| 3567 "100011011101010100110" | |
| 3568 "001000101111011100111" | |
| 3569 "111101011011110110110" | |
| 3570 "011100111111011100101" | |
| 3571 "000000001100001100110" | |
| 3572 "111111101010100011011" | |
| 3573 "100000101000001100001" | |
| 3574 "101110101010101011110" | |
| 3575 "101110100011010010100" | |
| 3576 "101110101001011000101" | |
| 3577 "100000101011110111001" | |
| 3578 "111111101101011100011" | |
| 3579 }, | |
| 3580 /* 99*/ { BARCODE_QRCODE, UNICODE_MODE, 31, 1, -1, -1, { 0, 0, "" }, "北京", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 31 Example 2; BWIPP uses mask 011 instead of 010", | |
| 3581 "111111100100101111111" | |
| 3582 "100000101001001000001" | |
| 3583 "101110100100001011101" | |
| 3584 "101110101001001011101" | |
| 3585 "101110100011101011101" | |
| 3586 "100000101110101000001" | |
| 3587 "111111101010101111111" | |
| 3588 "000000000011100000000" | |
| 3589 "111110111100110101010" | |
| 3590 "001001000110100100000" | |
| 3591 "101011111101010011010" | |
| 3592 "100011000110000110100" | |
| 3593 "011011100001010011100" | |
| 3594 "000000001001111100000" | |
| 3595 "111111101100101101010" | |
| 3596 "100000100001111100111" | |
| 3597 "101110101110100101111" | |
| 3598 "101110101000100000010" | |
| 3599 "101110101001010111000" | |
| 3600 "100000101000000111011" | |
| 3601 "111111101011010110010" | |
| 3602 }, | |
| 3603 /*100*/ { BARCODE_QRCODE, UNICODE_MODE, 31, 1, -1, 4 << 8, { 0, 0, "" }, "北京", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 31 Example 2 **NOT SAME** explicit mask 011", | |
| 3604 "111111101100101111111" | |
| 3605 "100000100100101000001" | |
| 3606 "101110101010101011101" | |
| 3607 "101110101001001011101" | |
| 3608 "101110101110001011101" | |
| 3609 "100000100000001000001" | |
| 3610 "111111101010101111111" | |
| 3611 "000000000110000000000" | |
| 3612 "111100101010010011101" | |
| 3613 "001001000110100100000" | |
| 3614 "000110110000111110111" | |
| 3615 "010101010000110000010" | |
| 3616 "011011100001010011100" | |
| 3617 "000000001100010001101" | |
| 3618 "111111100010011011100" | |
| 3619 "100000100001111100111" | |
| 3620 "101110100011001000010" | |
| 3621 "101110101110010110100" | |
| 3622 "101110101001010111000" | |
| 3623 "100000101101101010110" | |
| 3624 "111111101101100000100" | |
| 3625 }, | |
| 3626 /*101*/ { BARCODE_QRCODE, UNICODE_MODE, 31, 1, -1, -1, { 0, 0, "" }, "條碼", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 31 Example 3", | |
| 3627 "111111100010101111111" | |
| 3628 "100000100000101000001" | |
| 3629 "101110101010001011101" | |
| 3630 "101110100000101011101" | |
| 3631 "101110100101101011101" | |
| 3632 "100000100111001000001" | |
| 3633 "111111101010101111111" | |
| 3634 "000000001010000000000" | |
| 3635 "111011111010111000100" | |
| 3636 "000100011111010101110" | |
| 3637 "000100110101011101111" | |
| 3638 "011101011001110110010" | |
| 3639 "110010111001011101001" | |
| 3640 "000000001000001100010" | |
| 3641 "111111101010100010011" | |
| 3642 "100000101010001100101" | |
| 3643 "101110101110101010110" | |
| 3644 "101110100001010001100" | |
| 3645 "101110101101011011001" | |
| 3646 "100000101001110110001" | |
| 3647 "111111101111011110111" | |
| 3648 }, | |
| 3649 /*102*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 32 Example 1", | |
| 3650 "111111100100101111111" | |
| 3651 "100000101001001000001" | |
| 3652 "101110100100001011101" | |
| 3653 "101110101001001011101" | |
| 3654 "101110100011101011101" | |
| 3655 "100000101110101000001" | |
| 3656 "111111101010101111111" | |
| 3657 "000000000011100000000" | |
| 3658 "111110111100110101010" | |
| 3659 "100111001100100101000" | |
| 3660 "110011110101010010110" | |
| 3661 "101111010110000111000" | |
| 3662 "100010101001010010100" | |
| 3663 "000000001101111101000" | |
| 3664 "111111101000101101010" | |
| 3665 "100000100111111101100" | |
| 3666 "101110101010100101100" | |
| 3667 "101110101110100011001" | |
| 3668 "101110101011010110100" | |
| 3669 "100000101100000110111" | |
| 3670 "111111101111010010010" | |
| 3671 }, | |
| 3672 /*103*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "北京", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 32 Example 2; BWIPP uses mask 011 instead of 111", | |
| 3673 "111111100010101111111" | |
| 3674 "100000101010101000001" | |
| 3675 "101110101011001011101" | |
| 3676 "101110100000101011101" | |
| 3677 "101110101111101011101" | |
| 3678 "100000101110001000001" | |
| 3679 "111111101010101111111" | |
| 3680 "000000001000000000000" | |
| 3681 "110100110011101110110" | |
| 3682 "001101010111010101110" | |
| 3683 "000010110101001111001" | |
| 3684 "111000000010111110011" | |
| 3685 "100101110111011101101" | |
| 3686 "000000001010011111100" | |
| 3687 "111111101111101010010" | |
| 3688 "100000100110001101010" | |
| 3689 "101110100100111001111" | |
| 3690 "101110101100011000110" | |
| 3691 "101110100011011001001" | |
| 3692 "100000101101100100111" | |
| 3693 "111111101000010001010" | |
| 3694 }, | |
| 3695 /*104*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, 4 << 8, { 0, 0, "" }, "北京", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 32 Example 2 **NOT SAME** explicit mask 011", | |
| 3696 "111111101100101111111" | |
| 3697 "100000100100101000001" | |
| 3698 "101110101010101011101" | |
| 3699 "101110101001001011101" | |
| 3700 "101110101110001011101" | |
| 3701 "100000100000001000001" | |
| 3702 "111111101010101111111" | |
| 3703 "000000000110000000000" | |
| 3704 "111100101010010011101" | |
| 3705 "111100000110100100000" | |
| 3706 "110011100100111110111" | |
| 3707 "110110001100110000010" | |
| 3708 "101011111001010011100" | |
| 3709 "000000001100010001101" | |
| 3710 "111111100110011011100" | |
| 3711 "100000100111111100100" | |
| 3712 "101110100101001000001" | |
| 3713 "101110101010010110111" | |
| 3714 "101110101101010111000" | |
| 3715 "100000101011101010110" | |
| 3716 "111111101001100000100" | |
| 3717 }, | |
| 3718 /*105*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "條碼", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 32 Example 3; BWIPP uses mask 011 instead of 001", | |
| 3719 "111111101111101111111" | |
| 3720 "100000101101101000001" | |
| 3721 "101110100111001011101" | |
| 3722 "101110100101101011101" | |
| 3723 "101110101000101011101" | |
| 3724 "100000101010001000001" | |
| 3725 "111111101010101111111" | |
| 3726 "000000001111000000000" | |
| 3727 "111001101111111110011" | |
| 3728 "100100001010000000100" | |
| 3729 "100100110100001000101" | |
| 3730 "101011010000100011000" | |
| 3731 "010111110100001000011" | |
| 3732 "000000001101011001000" | |
| 3733 "111111100011110111001" | |
| 3734 "100000101001011001100" | |
| 3735 "101110100101111111111" | |
| 3736 "101110100000000100101" | |
| 3737 "101110101100001110011" | |
| 3738 "100000101010100011011" | |
| 3739 "111111101110001011101" | |
| 3740 }, | |
| 3741 /*106*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, 4 << 8, { 0, 0, "" }, "條碼", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 32 Example 3 **NOT SAME** explicit mask 011", | |
| 3742 "111111101100101111111" | |
| 3743 "100000100100101000001" | |
| 3744 "101110101010101011101" | |
| 3745 "101110101001001011101" | |
| 3746 "101110101110001011101" | |
| 3747 "100000100000001000001" | |
| 3748 "111111101010101111111" | |
| 3749 "000000000110000000000" | |
| 3750 "111100101010010011101" | |
| 3751 "000000001110100100000" | |
| 3752 "010010100010111110011" | |
| 3753 "111001000010110001010" | |
| 3754 "001100101111010011000" | |
| 3755 "000000001100010000001" | |
| 3756 "111111100110011010100" | |
| 3757 "100000100101111101000" | |
| 3758 "101110100011001001001" | |
| 3759 "101110101010010110111" | |
| 3760 "101110101111010101000" | |
| 3761 "100000101011101010010" | |
| 3762 "111111101011100110000" | |
| 3763 }, | |
| 3764 /*107*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "པེ་ཅིང།", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 32 Example 4", | |
| 3765 "1111111011110110001111111" | |
| 3766 "1000001000011010101000001" | |
| 3767 "1011101010110101101011101" | |
| 3768 "1011101011000001101011101" | |
| 3769 "1011101011010001101011101" | |
| 3770 "1000001001010001101000001" | |
| 3771 "1111111010101010101111111" | |
| 3772 "0000000001001001100000000" | |
| 3773 "1111001010010001110011101" | |
| 3774 "0101100111011100000101011" | |
| 3775 "1111001000011100111101110" | |
| 3776 "0011010100010111100100100" | |
| 3777 "1000111001000101101001100" | |
| 3778 "0111000001110000000111110" | |
| 3779 "0100101011000000100011011" | |
| 3780 "1001000110001111010111011" | |
| 3781 "0000111000000011111110010" | |
| 3782 "0000000011110001100010100" | |
| 3783 "1111111001100001101010111" | |
| 3784 "1000001001100011100010110" | |
| 3785 "1011101001001100111110100" | |
| 3786 "1011101011110010101011100" | |
| 3787 "1011101011100110011010010" | |
| 3788 "1000001010111111111010111" | |
| 3789 "1111111010011101100000011" | |
| 3790 }, | |
| 3791 /*108*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 32 Example 5; BWIPP uses mask 011 instead of 111", | |
| 3792 "111111100010101111111" | |
| 3793 "100000101010101000001" | |
| 3794 "101110101011001011101" | |
| 3795 "101110100000101011101" | |
| 3796 "101110101111101011101" | |
| 3797 "100000101110001000001" | |
| 3798 "111111101010101111111" | |
| 3799 "000000001000000000000" | |
| 3800 "110100110011101110110" | |
| 3801 "110111001101011011111" | |
| 3802 "101101100111010000010" | |
| 3803 "000110011000110011011" | |
| 3804 "111110100101011001101" | |
| 3805 "000000001011010010100" | |
| 3806 "111111101101101110110" | |
| 3807 "100000100011010111010" | |
| 3808 "101110100000111010111" | |
| 3809 "101110101011010100110" | |
| 3810 "101110100010000010001" | |
| 3811 "100000101001010101111" | |
| 3812 "111111101110010110110" | |
| 3813 }, | |
| 3814 /*109*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, 4 << 8, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 32 Example 5 **NOT SAME** explicit mask 011", | |
| 3815 "111111101100101111111" | |
| 3816 "100000100100101000001" | |
| 3817 "101110101010101011101" | |
| 3818 "101110101001001011101" | |
| 3819 "101110101110001011101" | |
| 3820 "100000100000001000001" | |
| 3821 "111111101010101111111" | |
| 3822 "000000000110000000000" | |
| 3823 "111100101010010011101" | |
| 3824 "000110011100101010001" | |
| 3825 "011100110110100001100" | |
| 3826 "001000010110111101010" | |
| 3827 "110000101011010111100" | |
| 3828 "000000001101011100101" | |
| 3829 "111111100100011111000" | |
| 3830 "100000100010100110100" | |
| 3831 "101110100001001011001" | |
| 3832 "101110101101011010111" | |
| 3833 "101110101100001100000" | |
| 3834 "100000101111011011110" | |
| 3835 "111111101111100111000" | |
| 3836 }, | |
| 3837 /*110*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 32 Example 6; BWIPP uses mask 011 instead of 111", | |
| 3838 "111111100010101111111" | |
| 3839 "100000101010101000001" | |
| 3840 "101110101011001011101" | |
| 3841 "101110100000101011101" | |
| 3842 "101110101110101011101" | |
| 3843 "100000101110001000001" | |
| 3844 "111111101010101111111" | |
| 3845 "000000001001000000000" | |
| 3846 "110100110011101110110" | |
| 3847 "100110010010101101110" | |
| 3848 "100011100010110100100" | |
| 3849 "111110001111101010011" | |
| 3850 "101000110100111011001" | |
| 3851 "000000001111100001000" | |
| 3852 "111111101110111010010" | |
| 3853 "100000100010111101010" | |
| 3854 "101110100000001010111" | |
| 3855 "101110101001010001110" | |
| 3856 "101110100100001011001" | |
| 3857 "100000101110100001011" | |
| 3858 "111111101101101010110" | |
| 3859 }, | |
| 3860 /*111*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, 4 << 8, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 32 Example 6 **NOT SAME** explicit mask 011", | |
| 3861 "111111101100101111111" | |
| 3862 "100000100100101000001" | |
| 3863 "101110101010101011101" | |
| 3864 "101110101001001011101" | |
| 3865 "101110101111001011101" | |
| 3866 "100000100000001000001" | |
| 3867 "111111101010101111111" | |
| 3868 "000000000111000000000" | |
| 3869 "111100101010010011101" | |
| 3870 "010111000011011100000" | |
| 3871 "010010110011000101010" | |
| 3872 "110000000001100100010" | |
| 3873 "100110111010110101000" | |
| 3874 "000000001001101111001" | |
| 3875 "111111100111001011100" | |
| 3876 "100000100011001100100" | |
| 3877 "101110100001111011001" | |
| 3878 "101110101111011111111" | |
| 3879 "101110101010000101000" | |
| 3880 "100000101000101111010" | |
| 3881 "111111101100011011000" | |
| 3882 }, | |
| 3883 /*112*/ { BARCODE_QRCODE, UNICODE_MODE, 33, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 33 Example 1; BWIPP uses mask 111 instead of 010", | |
| 3884 "111111100100101111111" | |
| 3885 "100000101001001000001" | |
| 3886 "101110100100001011101" | |
| 3887 "101110101001001011101" | |
| 3888 "101110100011101011101" | |
| 3889 "100000101110101000001" | |
| 3890 "111111101010101111111" | |
| 3891 "000000000011100000000" | |
| 3892 "111110111100110101010" | |
| 3893 "110010000100100101100" | |
| 3894 "000001111101010010010" | |
| 3895 "110101000100000110100" | |
| 3896 "001111101111010011100" | |
| 3897 "000000001011111101100" | |
| 3898 "111111101000101100010" | |
| 3899 "100000100001111101110" | |
| 3900 "101110101110100101000" | |
| 3901 "101110101010100100101" | |
| 3902 "101110101111010110100" | |
| 3903 "100000101010000010111" | |
| 3904 "111111101101010001110" | |
| 3905 }, | |
| 3906 /*113*/ { BARCODE_QRCODE, UNICODE_MODE, 33, 1, -1, 8 << 8, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 33 Example 1 **NOT SAME** explicit mask 111", | |
| 3907 "111111100010101111111" | |
| 3908 "100000101010101000001" | |
| 3909 "101110101011001011101" | |
| 3910 "101110100000101011101" | |
| 3911 "101110101111101011101" | |
| 3912 "100000101110001000001" | |
| 3913 "111111101010101111111" | |
| 3914 "000000001000000000000" | |
| 3915 "110100110011101110110" | |
| 3916 "000011010101010100010" | |
| 3917 "011101100001001110001" | |
| 3918 "001101011100111110011" | |
| 3919 "000001100001011101101" | |
| 3920 "000000001000011110000" | |
| 3921 "111111101111101011010" | |
| 3922 "100000100000001100000" | |
| 3923 "101110100010111001011" | |
| 3924 "101110101010011100010" | |
| 3925 "101110100001011000101" | |
| 3926 "100000101001100001011" | |
| 3927 "111111101010010110110" | |
| 3928 }, | |
| 3929 /*114*/ { BARCODE_QRCODE, UNICODE_MODE, 33, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 33 Example 2", | |
| 3930 "111111100010101111111" | |
| 3931 "100000100000101000001" | |
| 3932 "101110101010001011101" | |
| 3933 "101110100000101011101" | |
| 3934 "101110100101101011101" | |
| 3935 "100000100111001000001" | |
| 3936 "111111101010101111111" | |
| 3937 "000000001010000000000" | |
| 3938 "111011111010111000100" | |
| 3939 "011110010011001100111" | |
| 3940 "111100101001010011100" | |
| 3941 "010000011111101011010" | |
| 3942 "010000111111001010101" | |
| 3943 "000000001101010011010" | |
| 3944 "111111101100110011011" | |
| 3945 "100000101101010011000" | |
| 3946 "101110101110101000101" | |
| 3947 "101110100101001100111" | |
| 3948 "101110101100101011001" | |
| 3949 "100000101100111010101" | |
| 3950 "111111101110111010111" | |
| 3951 }, | |
| 3952 /*115*/ { BARCODE_QRCODE, UNICODE_MODE, 33, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 33 Example 3; BWIPP uses mask 000 instead of 111", | |
| 3953 "111111100010101111111" | |
| 3954 "100000101010101000001" | |
| 3955 "101110101011001011101" | |
| 3956 "101110100000101011101" | |
| 3957 "101110101111101011101" | |
| 3958 "100000101110001000001" | |
| 3959 "111111101010101111111" | |
| 3960 "000000001000000000000" | |
| 3961 "110100110011101110110" | |
| 3962 "111111011101010101011" | |
| 3963 "010100100001011101101" | |
| 3964 "101101001110111011011" | |
| 3965 "001101111001001000101" | |
| 3966 "000000001110011111100" | |
| 3967 "111111101001101100010" | |
| 3968 "100000100110001000100" | |
| 3969 "101110100010111110111" | |
| 3970 "101110101100011011010" | |
| 3971 "101110100101011101101" | |
| 3972 "100000101111100110011" | |
| 3973 "111111101000010101110" | |
| 3974 }, | |
| 3975 /*116*/ { BARCODE_QRCODE, UNICODE_MODE, 33, 1, -1, 1 << 8, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 33 Example 3 **NOT SAME** explicit mask 000", | |
| 3976 "111111100010101111111" | |
| 3977 "100000100000101000001" | |
| 3978 "101110101010001011101" | |
| 3979 "101110100000101011101" | |
| 3980 "101110100101101011101" | |
| 3981 "100000100111001000001" | |
| 3982 "111111101010101111111" | |
| 3983 "000000001010000000000" | |
| 3984 "111011111010111000100" | |
| 3985 "111111011101010101011" | |
| 3986 "000110110011001111111" | |
| 3987 "100100000111110010010" | |
| 3988 "001101111001001000101" | |
| 3989 "000000001100001101110" | |
| 3990 "111111101000100101011" | |
| 3991 "100000101110001000100" | |
| 3992 "101110101000101100101" | |
| 3993 "101110100101010010011" | |
| 3994 "101110101101011101101" | |
| 3995 "100000101101110100001" | |
| 3996 "111111101001011100111" | |
| 3997 }, | |
| 3998 /*117*/ { BARCODE_QRCODE, UNICODE_MODE, 34, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 34 Example 1", | |
| 3999 "111111100010101111111" | |
| 4000 "100000101010101000001" | |
| 4001 "101110101011001011101" | |
| 4002 "101110100000101011101" | |
| 4003 "101110101111101011101" | |
| 4004 "100000101110001000001" | |
| 4005 "111111101010101111111" | |
| 4006 "000000001000000000000" | |
| 4007 "110100110011101110110" | |
| 4008 "001000011111000101010" | |
| 4009 "000111110001000000110" | |
| 4010 "010001000010110100011" | |
| 4011 "000000111011001010101" | |
| 4012 "000000001110000111000" | |
| 4013 "111111101101100011110" | |
| 4014 "100000100000010101011" | |
| 4015 "101110100000101000111" | |
| 4016 "101110101110011001010" | |
| 4017 "101110100011001010001" | |
| 4018 "100000101011100100011" | |
| 4019 "111111101110000110010" | |
| 4020 }, | |
| 4021 /*118*/ { BARCODE_QRCODE, UNICODE_MODE, 34, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 34 Example 2", | |
| 4022 "1111111000100010001111111" | |
| 4023 "1000001001000100101000001" | |
| 4024 "1011101010010011001011101" | |
| 4025 "1011101001001100001011101" | |
| 4026 "1011101001001010101011101" | |
| 4027 "1000001000111101101000001" | |
| 4028 "1111111010101010101111111" | |
| 4029 "0000000010010100000000000" | |
| 4030 "1110111110001010111000100" | |
| 4031 "1101000011011101010011010" | |
| 4032 "1111111100111110101100101" | |
| 4033 "1001010011101111010011010" | |
| 4034 "0011101010110010101010101" | |
| 4035 "0110100100110001010101010" | |
| 4036 "1011101001100000101101011" | |
| 4037 "0100110111010001010101000" | |
| 4038 "1011111001101010111110101" | |
| 4039 "0000000010111110100010110" | |
| 4040 "1111111010111011101011111" | |
| 4041 "1000001011001101100011011" | |
| 4042 "1011101010010010111110101" | |
| 4043 "1011101001110000110101011" | |
| 4044 "1011101011000100001010101" | |
| 4045 "1000001010110001010101001" | |
| 4046 "1111111010001000110010111" | |
| 4047 }, | |
| 4048 /*119*/ { BARCODE_QRCODE, UNICODE_MODE, 34, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 34 Example 3", | |
| 4049 "111111100010101111111" | |
| 4050 "100000100000101000001" | |
| 4051 "101110101010001011101" | |
| 4052 "101110100000101011101" | |
| 4053 "101110100100101011101" | |
| 4054 "100000100111001000001" | |
| 4055 "111111101010101111111" | |
| 4056 "000000001011000000000" | |
| 4057 "111011111010111000100" | |
| 4058 "001101000001001101010" | |
| 4059 "101010100101001010110" | |
| 4060 "010101011000001101010" | |
| 4061 "100001100001010010101" | |
| 4062 "000000001001000101010" | |
| 4063 "111111101001111010111" | |
| 4064 "100000101010100101011" | |
| 4065 "101110101110001010101" | |
| 4066 "101110100001010101111" | |
| 4067 "101110101000101111001" | |
| 4068 "100000101101010000101" | |
| 4069 "111111101010101010111" | |
| 4070 }, | |
| 4071 /*120*/ { BARCODE_QRCODE, UNICODE_MODE, 35, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 35 Example 1", | |
| 4072 "111111100010101111111" | |
| 4073 "100000101010101000001" | |
| 4074 "101110101011001011101" | |
| 4075 "101110100000101011101" | |
| 4076 "101110101111101011101" | |
| 4077 "100000101110001000001" | |
| 4078 "111111101010101111111" | |
| 4079 "000000001000000000000" | |
| 4080 "110100110011101110110" | |
| 4081 "000011001001010100010" | |
| 4082 "000000100001011010010" | |
| 4083 "111010000100111010011" | |
| 4084 "111110100011001111101" | |
| 4085 "000000001000000010000" | |
| 4086 "111111101011100011010" | |
| 4087 "100000100010010100001" | |
| 4088 "101110100010111001011" | |
| 4089 "101110101000011100010" | |
| 4090 "101110100011001010101" | |
| 4091 "100000101011100111011" | |
| 4092 "111111101110000011110" | |
| 4093 }, | |
| 4094 /*121*/ { BARCODE_QRCODE, UNICODE_MODE, 35, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 35 Example 2", | |
| 4095 "1111111000100110101111111" | |
| 4096 "1000001001000111001000001" | |
| 4097 "1011101010010110101011101" | |
| 4098 "1011101001001101001011101" | |
| 4099 "1011101001001000101011101" | |
| 4100 "1000001000111001001000001" | |
| 4101 "1111111010101010101111111" | |
| 4102 "0000000010010111000000000" | |
| 4103 "1110111110001010111000100" | |
| 4104 "0111100101011101010101010" | |
| 4105 "1111111010111010000011001" | |
| 4106 "1100110101101100001101000" | |
| 4107 "1111001010110010101010110" | |
| 4108 "0101100100110101101101010" | |
| 4109 "1001011110000011001010111" | |
| 4110 "0101010100010100101101000" | |
| 4111 "1010001101101011111110101" | |
| 4112 "0000000011111101100011010" | |
| 4113 "1111111011011010101010111" | |
| 4114 "1000001011001101100011001" | |
| 4115 "1011101011010010111110101" | |
| 4116 "1011101001010001010100111" | |
| 4117 "1011101011100100101011001" | |
| 4118 "1000001010110001010010101" | |
| 4119 "1111111011001000101010111" | |
| 4120 }, | |
| 4121 /*122*/ { BARCODE_QRCODE, UNICODE_MODE, 35, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 35 Example 3; BWIPP uses mask 011 instead of 111", | |
| 4122 "111111100010101111111" | |
| 4123 "100000101010101000001" | |
| 4124 "101110101011001011101" | |
| 4125 "101110100000101011101" | |
| 4126 "101110101110101011101" | |
| 4127 "100000101110001000001" | |
| 4128 "111111101010101111111" | |
| 4129 "000000001001000000000" | |
| 4130 "110100110011101110110" | |
| 4131 "011011011001010011010" | |
| 4132 "100001110010111111100" | |
| 4133 "001111010100011101011" | |
| 4134 "111011100110101100101" | |
| 4135 "000000001101000111100" | |
| 4136 "111111101111100110010" | |
| 4137 "100000100001010000101" | |
| 4138 "101110100110111100111" | |
| 4139 "101110101100000100010" | |
| 4140 "101110100111111010101" | |
| 4141 "100000101000111111011" | |
| 4142 "111111101101000011110" | |
| 4143 }, | |
| 4144 /*123*/ { BARCODE_QRCODE, UNICODE_MODE, 35, 1, -1, 4 << 8, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 35 Example 3 **NOT SAME** explicit mask 011", | |
| 4145 "111111101100101111111" | |
| 4146 "100000100100101000001" | |
| 4147 "101110101010101011101" | |
| 4148 "101110101001001011101" | |
| 4149 "101110101111001011101" | |
| 4150 "100000100000001000001" | |
| 4151 "111111101010101111111" | |
| 4152 "000000000111000000000" | |
| 4153 "111100101010010011101" | |
| 4154 "101010001000100010100" | |
| 4155 "010000100011001110010" | |
| 4156 "000001011010010011010" | |
| 4157 "110101101000100010100" | |
| 4158 "000000001011001001101" | |
| 4159 "111111100110010111100" | |
| 4160 "100000100000100001011" | |
| 4161 "101110100111001101001" | |
| 4162 "101110101010001010011" | |
| 4163 "101110101001110100100" | |
| 4164 "100000101110110001010" | |
| 4165 "111111101100110010000" | |
| 4166 }, | |
| 4167 /*124*/ { BARCODE_QRCODE, UNICODE_MODE, 170, 1, -1, 5 << 8, { 0, 0, "" }, "sn:7QPB4MN", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 170 Example 1 **NOT SAME** different encodation; explicit mask 100 (auto 011) to match BWIPP", | |
| 4168 "111111101000101111111" | |
| 4169 "100000101101001000001" | |
| 4170 "101110101111101011101" | |
| 4171 "101110101010101011101" | |
| 4172 "101110100111101011101" | |
| 4173 "100000101010101000001" | |
| 4174 "111111101010101111111" | |
| 4175 "000000000000000000000" | |
| 4176 "110011100000100101111" | |
| 4177 "111011000010110110111" | |
| 4178 "000100110100110111010" | |
| 4179 "000011000001110111001" | |
| 4180 "100111111111001110010" | |
| 4181 "000000001010101111110" | |
| 4182 "111111100001001010101" | |
| 4183 "100000101001010111000" | |
| 4184 "101110101100000101011" | |
| 4185 "101110100110000001111" | |
| 4186 "101110100111100111101" | |
| 4187 "100000101110111100111" | |
| 4188 "111111101001001000001" | |
| 4189 }, | |
| 4190 /*125*/ { BARCODE_QRCODE, DATA_MODE, 899, 1, -1, -1, { 0, 0, "" }, "\000\001\002\133\134\135\375\376\377", 9, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 899 Example 1", | |
| 4191 "111111101111101111111" | |
| 4192 "100000101101101000001" | |
| 4193 "101110100111001011101" | |
| 4194 "101110100101101011101" | |
| 4195 "101110101000101011101" | |
| 4196 "100000101010001000001" | |
| 4197 "111111101010101111111" | |
| 4198 "000000001111000000000" | |
| 4199 "111001101111111110011" | |
| 4200 "101010000100010000000" | |
| 4201 "110000111010001001101" | |
| 4202 "001100010100111100111" | |
| 4203 "010100101010001010111" | |
| 4204 "000000001000011110000" | |
| 4205 "111111100011100101110" | |
| 4206 "100000101000011100011" | |
| 4207 "101110100011101011111" | |
| 4208 "101110100101111010000" | |
| 4209 "101110101100000111110" | |
| 4210 "100000101111111000011" | |
| 4211 "111111101000010110101" | |
| 4212 }, | |
| 4213 /*126*/ { BARCODE_QRCODE, UNICODE_MODE, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHI", 9, 0, 21, 21, 0, "Automatic mask 011; BWIPP uses mask 111", | |
| 4214 "111111100000001111111" | |
| 4215 "100000100111101000001" | |
| 4216 "101110100000001011101" | |
| 4217 "101110100110001011101" | |
| 4218 "101110101100101011101" | |
| 4219 "100000100011001000001" | |
| 4220 "111111101010101111111" | |
| 4221 "000000001101100000000" | |
| 4222 "001100111101111010000" | |
| 4223 "100111011101100101110" | |
| 4224 "010011111000101001010" | |
| 4225 "110100001001011011010" | |
| 4226 "011101110001100101111" | |
| 4227 "000000001011110001011" | |
| 4228 "111111101100111110111" | |
| 4229 "100000100100101110000" | |
| 4230 "101110100111101011111" | |
| 4231 "101110101111110010010" | |
| 4232 "101110101000100101100" | |
| 4233 "100000100001111110000" | |
| 4234 "111111100101000111010" | |
| 4235 }, | |
| 4236 /*127*/ { BARCODE_QRCODE, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHI", 9, 0, 21, 21, 0, "Fast automatic mask 010; BWIPP uses mask 111", | |
| 4237 "111111101000001111111" | |
| 4238 "100000101010001000001" | |
| 4239 "101110101110101011101" | |
| 4240 "101110100110001011101" | |
| 4241 "101110100001001011101" | |
| 4242 "100000101101101000001" | |
| 4243 "111111101010101111111" | |
| 4244 "000000001000000000000" | |
| 4245 "001110101011011100111" | |
| 4246 "100111011101100101110" | |
| 4247 "111110110101000100111" | |
| 4248 "000010011111101101100" | |
| 4249 "011101110001100101111" | |
| 4250 "000000001110011100110" | |
| 4251 "111111100010001000001" | |
| 4252 "100000100100101110000" | |
| 4253 "101110101010000110010" | |
| 4254 "101110101001000100100" | |
| 4255 "101110101000100101100" | |
| 4256 "100000100100010011101" | |
| 4257 "111111100011110001100" | |
| 4258 }, | |
| 4259 /*128*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, -1, 1 << 8, { 0, 0, "" }, "202404110011看看16", -1, ZINT_WARN_NONCOMPLIANT, 21, 21, 1, "Shift-JIS range (BWIPP via bwip-js issue #335)", | |
| 4260 "111111100000101111111" | |
| 4261 "100000101111101000001" | |
| 4262 "101110100111001011101" | |
| 4263 "101110100100001011101" | |
| 4264 "101110101110101011101" | |
| 4265 "100000100100101000001" | |
| 4266 "111111101010101111111" | |
| 4267 "000000000111100000000" | |
| 4268 "101010100001000010010" | |
| 4269 "110111010011011110011" | |
| 4270 "000000111000101100000" | |
| 4271 "010100000001011100010" | |
| 4272 "111100101000100001110" | |
| 4273 "000000001101000101010" | |
| 4274 "111111100110010010101" | |
| 4275 "100000100001000100001" | |
| 4276 "101110101010001010001" | |
| 4277 "101110100011000110110" | |
| 4278 "101110101100111100001" | |
| 4279 "100000100011010111000" | |
| 4280 "111111101110111010101" | |
| 4281 }, | |
| 4282 }; | |
| 4283 const int data_size = ARRAY_SIZE(data); | |
| 4284 int i, length, ret; | |
| 4285 struct zint_symbol *symbol = NULL; | |
| 4286 | |
| 4287 char escaped[4096]; | |
| 4288 char cmp_buf[32768]; | |
| 4289 char cmp_msg[1024]; | |
| 4290 | |
| 4291 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 4292 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 4293 | |
| 4294 testStartSymbol("test_qr_encode", &symbol); | |
| 4295 | |
| 4296 for (i = 0; i < data_size; i++) { | |
| 4297 | |
| 4298 if (testContinue(p_ctx, i)) continue; | |
| 4299 | |
| 4300 symbol = ZBarcode_Create(); | |
| 4301 assert_nonnull(symbol, "Symbol not created\n"); | |
| 4302 | |
| 4303 length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, data[i].eci, | |
| 4304 data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/, | |
| 4305 data[i].data, data[i].length, debug); | |
| 4306 if (data[i].structapp.count) { | |
| 4307 symbol->structapp = data[i].structapp; | |
| 4308 } | |
| 4309 | |
| 4310 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 4311 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 4312 | |
| 4313 if (p_ctx->generate) { | |
| 4314 printf(" /*%3d*/ { %s, %s, %d, %d, %d, %s, { %d, %d, \"%s\" }, \"%s\", %d, %s, %d, %d, %d, \"%s\",\n", | |
| 4315 i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), | |
| 4316 data[i].eci, data[i].option_1, data[i].option_2, testUtilOption3Name(data[i].symbology, data[i].option_3), | |
| 4317 data[i].structapp.index, data[i].structapp.count, data[i].structapp.id, | |
| 4318 testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), data[i].length, testUtilErrorName(data[i].ret), | |
| 4319 symbol->rows, symbol->width, data[i].bwipp_cmp, data[i].comment); | |
| 4320 testUtilModulesPrint(symbol, " ", "\n"); | |
| 4321 printf(" },\n"); | |
| 4322 } else { | |
| 4323 if (ret < ZINT_ERROR) { | |
| 4324 int width, row; | |
| 4325 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d (%s)\n", i, symbol->rows, data[i].expected_rows, data[i].data); | |
| 4326 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data); | |
| 4327 | |
| 4328 ret = testUtilModulesCmp(symbol, data[i].expected, &width, &row); | |
| 4329 assert_zero(ret, "i:%d testUtilModulesCmp ret %d != 0 width %d row %d (%s)\n", i, ret, width, row, data[i].data); | |
| 4330 | |
| 4331 if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, debug)) { | |
| 4332 if (!data[i].bwipp_cmp) { | |
| 4333 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 4334 } else { | |
| 4335 ret = testUtilBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); | |
| 4336 assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 4337 | |
| 4338 ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, data[i].expected); | |
| 4339 assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", | |
| 4340 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, data[i].expected); | |
| 4341 } | |
| 4342 } | |
| 4343 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { | |
| 4344 int cmp_len, ret_len; | |
| 4345 char modules_dump[32768]; | |
| 4346 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 4347 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 4348 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 4349 | |
| 4350 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); | |
| 4351 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 4352 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 4353 } | |
| 4354 } | |
| 4355 } | |
| 4356 | |
| 4357 ZBarcode_Delete(symbol); | |
| 4358 } | |
| 4359 | |
| 4360 testFinish(); | |
| 4361 } | |
| 4362 | |
| 4363 static void test_qr_encode_segs(const testCtx *const p_ctx) { | |
| 4364 int debug = p_ctx->debug; | |
| 4365 | |
| 4366 struct item { | |
| 4367 int symbology; | |
| 4368 int input_mode; | |
| 4369 int option_1; | |
| 4370 int option_2; | |
| 4371 int option_3; | |
| 4372 struct zint_structapp structapp; | |
| 4373 struct zint_seg segs[3]; | |
| 4374 int ret; | |
| 4375 | |
| 4376 int expected_rows; | |
| 4377 int expected_width; | |
| 4378 int bwipp_cmp; | |
| 4379 char *comment; | |
| 4380 char *expected; | |
| 4381 }; | |
| 4382 static const struct item data[] = { | |
| 4383 /* 0*/ { BARCODE_QRCODE, UNICODE_MODE, 4, -1, 8 << 8, { 0, 0, "" }, { { TU("¶"), -1, 0 }, { TU("Ж"), -1, 7 }, { TU(""), 0, 0 } }, 0, 21, 21, 1, "Standard example", | |
| 4384 "111111101101001111111" | |
| 4385 "100000101100101000001" | |
| 4386 "101110100010101011101" | |
| 4387 "101110101011101011101" | |
| 4388 "101110101011101011101" | |
| 4389 "100000101110101000001" | |
| 4390 "111111101010101111111" | |
| 4391 "000000000100000000000" | |
| 4392 "000100100011000111011" | |
| 4393 "001000000000000001001" | |
| 4394 "111100111101110000101" | |
| 4395 "010111011010000001010" | |
| 4396 "111110101101111011011" | |
| 4397 "000000001100110110011" | |
| 4398 "111111100001100101101" | |
| 4399 "100000100110101111000" | |
| 4400 "101110100101001110111" | |
| 4401 "101110101100010100011" | |
| 4402 "101110100110100011101" | |
| 4403 "100000100100111101100" | |
| 4404 "111111100010000110010" | |
| 4405 }, | |
| 4406 /* 1*/ { BARCODE_QRCODE, UNICODE_MODE, 4, -1, 8 << 8, { 0, 0, "" }, { { TU("¶"), -1, 0 }, { TU("Ж"), -1, 0 }, { TU(""), 0, 0 } }, ZINT_WARN_USES_ECI, 21, 21, 1, "Standard example auto-ECI", | |
| 4407 "111111101101001111111" | |
| 4408 "100000101100101000001" | |
| 4409 "101110100010101011101" | |
| 4410 "101110101011101011101" | |
| 4411 "101110101011101011101" | |
| 4412 "100000101110101000001" | |
| 4413 "111111101010101111111" | |
| 4414 "000000000100000000000" | |
| 4415 "000100100011000111011" | |
| 4416 "001000000000000001001" | |
| 4417 "111100111101110000101" | |
| 4418 "010111011010000001010" | |
| 4419 "111110101101111011011" | |
| 4420 "000000001100110110011" | |
| 4421 "111111100001100101101" | |
| 4422 "100000100110101111000" | |
| 4423 "101110100101001110111" | |
| 4424 "101110101100010100011" | |
| 4425 "101110100110100011101" | |
| 4426 "100000100100111101100" | |
| 4427 "111111100010000110010" | |
| 4428 }, | |
| 4429 /* 2*/ { BARCODE_QRCODE, UNICODE_MODE, 4, -1, 8 << 8, { 0, 0, "" }, { { TU("Ж"), -1, 7 }, { TU("¶"), -1, 0 }, { TU(""), 0, 0 } }, 0, 21, 21, 1, "Standard example inverted", | |
| 4430 "111111101111101111111" | |
| 4431 "100000101011001000001" | |
| 4432 "101110100000101011101" | |
| 4433 "101110101110101011101" | |
| 4434 "101110101101101011101" | |
| 4435 "100000101010001000001" | |
| 4436 "111111101010101111111" | |
| 4437 "000000000011000000000" | |
| 4438 "000100100000000111011" | |
| 4439 "001100000111100101100" | |
| 4440 "110010100000011001011" | |
| 4441 "011000000001100101011" | |
| 4442 "101000101011111010001" | |
| 4443 "000000001001111100000" | |
| 4444 "111111100101010110010" | |
| 4445 "100000100110100011001" | |
| 4446 "101110100111101010101" | |
| 4447 "101110101000001000011" | |
| 4448 "101110100001001011001" | |
| 4449 "100000100100110110011" | |
| 4450 "111111100001000011110" | |
| 4451 }, | |
| 4452 /* 3*/ { BARCODE_QRCODE, UNICODE_MODE, 4, -1, 8 << 8, { 0, 0, "" }, { { TU("Ж"), -1, 0 }, { TU("¶"), -1, 0 }, { TU(""), 0, 0 } }, ZINT_WARN_USES_ECI, 21, 21, 1, "Standard example inverted auto-ECI", | |
| 4453 "111111101111101111111" | |
| 4454 "100000101011001000001" | |
| 4455 "101110100000101011101" | |
| 4456 "101110101110101011101" | |
| 4457 "101110101101101011101" | |
| 4458 "100000101010001000001" | |
| 4459 "111111101010101111111" | |
| 4460 "000000000011000000000" | |
| 4461 "000100100000000111011" | |
| 4462 "001100000111100101100" | |
| 4463 "110010100000011001011" | |
| 4464 "011000000001100101011" | |
| 4465 "101000101011111010001" | |
| 4466 "000000001001111100000" | |
| 4467 "111111100101010110010" | |
| 4468 "100000100110100011001" | |
| 4469 "101110100111101010101" | |
| 4470 "101110101000001000011" | |
| 4471 "101110100001001011001" | |
| 4472 "100000100100110110011" | |
| 4473 "111111100001000011110" | |
| 4474 }, | |
| 4475 /* 4*/ { BARCODE_QRCODE, UNICODE_MODE, -1, -1, -1, { 0, 0, "" }, { { TU("product:Google Pixel 4a - 128 GB of Storage - Black;price:$439.97"), -1, 3 }, { TU("品名:Google 谷歌 Pixel 4a -128 GB的存储空间-黑色;零售价:¥3149.79"), -1, 29 }, { TU("Produkt:Google Pixel 4a - 128 GB Speicher - Schwarz;Preis:444,90 €"), -1, 17 } }, 0, 53, 53, 0, "AIM ITS/04-023:2022 Annex A example; BWIPP different encodation", | |
| 4476 "11111110010010001110011110000111001001011110001111111" | |
| 4477 "10000010100101111001000000001000010110100111001000001" | |
| 4478 "10111010010101001110001011100010000010111101001011101" | |
| 4479 "10111010111101111000000010111011000100010010101011101" | |
| 4480 "10111010001100111110110111111110011010010110001011101" | |
| 4481 "10000010111000011101010110001111000011110110001000001" | |
| 4482 "11111110101010101010101010101010101010101010101111111" | |
| 4483 "00000000011101001000110110001101000000001111000000000" | |
| 4484 "11111011100100000100000011111000011010101000010101010" | |
| 4485 "11100000100111010011110110011110110010011011001001101" | |
| 4486 "00110110000101000010110100111001100110000111110110101" | |
| 4487 "10100100101111110111100110011000111111000010010011011" | |
| 4488 "00001110111010001100110011100001100110011001110111000" | |
| 4489 "00100100001010101011010001000110110110111010011011000" | |
| 4490 "00111011011011100011010010001010100111110101001110110" | |
| 4491 "10111001010100100110000111101101100011010010100101001" | |
| 4492 "01000010001111110011000000001101011011010000011110001" | |
| 4493 "00100100001100001110010100101100010000011010000001011" | |
| 4494 "10001110001010011011010111100011001011110010100110110" | |
| 4495 "01100001001101001110011111010010010001101000001011101" | |
| 4496 "11110011100011000010011011100011110100010001100101000" | |
| 4497 "00010101000010110010010000100000011000011000001111010" | |
| 4498 "10100110010110000101011010110000000101100100011011110" | |
| 4499 "01000000010101000000110101111100000111011010110101011" | |
| 4500 "01101111111100000100010111111010011101110000111111001" | |
| 4501 "10001000101101010011110010001100111001010100100011110" | |
| 4502 "10011010111011100010110110101000001010000111101011010" | |
| 4503 "10011000100111010001101010001111011100001111100011101" | |
| 4504 "10111111111101111010000011111001101010111110111110100" | |
| 4505 "01001100101111011100010101001100111100101001111101000" | |
| 4506 "00001111111111100011101010101011010101110100010000101" | |
| 4507 "10101000110010100110011011101011010011001011010110000" | |
| 4508 "10100110010001110011001111010101001010100001101011111" | |
| 4509 "10010101111110001110010011100000111001110011000011000" | |
| 4510 "01111010110001011001011000001011001011100011110110111" | |
| 4511 "01110001010100101000001010111110011001001000111011101" | |
| 4512 "10011110000101101010101111100001110010111000000101010" | |
| 4513 "01010001100011010110110100100100100010001011100101000" | |
| 4514 "11011011001100001101010010111110010011000110010001100" | |
| 4515 "01000001001101000000000011101101100111010010010111000" | |
| 4516 "10100111010100000100010110011000001111110100000000001" | |
| 4517 "10100100110001010011100111110000110000011011010010110" | |
| 4518 "11011111010110100110110001001001010110110111011111000" | |
| 4519 "01100000111011110111101110110011010110001100001101101" | |
| 4520 "00010010010100111000010011111011110000011111111111010" | |
| 4521 "00000000101011011000011010001100101010001011100010010" | |
| 4522 "11111110110011000011001110101000111011000001101011100" | |
| 4523 "10000010001011100110011110001011000101010011100010111" | |
| 4524 "10111010100100010011001011111110101110111100111110100" | |
| 4525 "10111010101000001110010011011100110000001010000101010" | |
| 4526 "10111010100110111101011111100111011111010000111111010" | |
| 4527 "10000010110010101000001000110100010100101010011010001" | |
| 4528 "11111110100110011010100111101001110010111100100111000" | |
| 4529 }, | |
| 4530 /* 5*/ { BARCODE_QRCODE, DATA_MODE, 2, -1, 3 << 8, { 0, 0, "" }, { { TU("\266"), 1, 0 }, { TU("\266"), 1, 7 }, { TU("\266"), 1, 0 } }, 0, 21, 21, 1, "Standard example + extra seg, data mode", | |
| 4531 "111111100111001111111" | |
| 4532 "100000100010001000001" | |
| 4533 "101110101010001011101" | |
| 4534 "101110101101101011101" | |
| 4535 "101110101000101011101" | |
| 4536 "100000101101001000001" | |
| 4537 "111111101010101111111" | |
| 4538 "000000001100000000000" | |
| 4539 "101111100001001111100" | |
| 4540 "011001000111100100111" | |
| 4541 "100010111100110100110" | |
| 4542 "001100001101101101101" | |
| 4543 "100110100000111001010" | |
| 4544 "000000001010110011111" | |
| 4545 "111111100101001100101" | |
| 4546 "100000101000000100110" | |
| 4547 "101110101101000100100" | |
| 4548 "101110101001111010100" | |
| 4549 "101110101110101001100" | |
| 4550 "100000100101111110000" | |
| 4551 "111111101110100001010" | |
| 4552 }, | |
| 4553 /* 6*/ { BARCODE_QRCODE, UNICODE_MODE, 2, -1, 3 << 8, { 0, 0, "" }, { { TU("éé"), -1, 0 }, { TU("กขฯ"), -1, 0 }, { TU("βββ"), -1, 0 } }, ZINT_WARN_USES_ECI, 21, 21, 1, "Auto-ECI", | |
| 4554 "111111100001001111111" | |
| 4555 "100000100111001000001" | |
| 4556 "101110101011101011101" | |
| 4557 "101110101000101011101" | |
| 4558 "101110101100101011101" | |
| 4559 "100000101100101000001" | |
| 4560 "111111101010101111111" | |
| 4561 "000000001100000000000" | |
| 4562 "101111100110101111100" | |
| 4563 "111100011010011100001" | |
| 4564 "011000100111011011111" | |
| 4565 "101011010000010111110" | |
| 4566 "100100101010111101001" | |
| 4567 "000000001000000110101" | |
| 4568 "111111100011000110111" | |
| 4569 "100000101100001001001" | |
| 4570 "101110101010110101100" | |
| 4571 "101110101000010111100" | |
| 4572 "101110101011000110100" | |
| 4573 "100000100101000010100" | |
| 4574 "111111101100100100110" | |
| 4575 }, | |
| 4576 /* 7*/ { BARCODE_QRCODE, UNICODE_MODE, -1, -1, -1, { 2, 3, "123" }, { { TU("éé"), -1, 23 }, { TU("กขฯ"), -1, 13 }, { TU("βββ"), -1, 9 } }, 0, 25, 25, 1, "Structured Append", | |
| 4577 "1111111010110011001111111" | |
| 4578 "1000001010010000001000001" | |
| 4579 "1011101011111011101011101" | |
| 4580 "1011101010001101001011101" | |
| 4581 "1011101010110111001011101" | |
| 4582 "1000001001010010001000001" | |
| 4583 "1111111010101010101111111" | |
| 4584 "0000000011110000000000000" | |
| 4585 "0110101101111000101011111" | |
| 4586 "0001100000010100111110001" | |
| 4587 "1101111111001011001100111" | |
| 4588 "0010000101000110000101000" | |
| 4589 "0000011011100010100010101" | |
| 4590 "0011010001011111011101001" | |
| 4591 "1000101100001000101010011" | |
| 4592 "0100100111100101111000101" | |
| 4593 "1000011110011100111110000" | |
| 4594 "0000000010110000100011101" | |
| 4595 "1111111011001110101011111" | |
| 4596 "1000001001010111100010111" | |
| 4597 "1011101010111111111110001" | |
| 4598 "1011101001011111001001100" | |
| 4599 "1011101011110010101101101" | |
| 4600 "1000001010100000101100001" | |
| 4601 "1111111000101101110011001" | |
| 4602 }, | |
| 4603 }; | |
| 4604 const int data_size = ARRAY_SIZE(data); | |
| 4605 int i, j, seg_count, ret; | |
| 4606 struct zint_symbol *symbol = NULL; | |
| 4607 | |
| 4608 char escaped[4096]; | |
| 4609 char cmp_buf[32768]; | |
| 4610 char cmp_msg[1024]; | |
| 4611 | |
| 4612 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 4613 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 4614 | |
| 4615 testStartSymbol("test_qr_encode_segs", &symbol); | |
| 4616 | |
| 4617 for (i = 0; i < data_size; i++) { | |
| 4618 | |
| 4619 if (testContinue(p_ctx, i)) continue; | |
| 4620 | |
| 4621 symbol = ZBarcode_Create(); | |
| 4622 assert_nonnull(symbol, "Symbol not created\n"); | |
| 4623 | |
| 4624 testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/, | |
| 4625 data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/, | |
| 4626 NULL, 0, debug); | |
| 4627 if (data[i].structapp.count) { | |
| 4628 symbol->structapp = data[i].structapp; | |
| 4629 } | |
| 4630 for (j = 0, seg_count = 0; j < 3 && data[i].segs[j].length; j++, seg_count++); | |
| 4631 | |
| 4632 ret = ZBarcode_Encode_Segs(symbol, data[i].segs, seg_count); | |
| 4633 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode_Segs ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 4634 | |
| 4635 if (p_ctx->generate) { | |
| 4636 char escaped1[4096]; | |
| 4637 char escaped2[4096]; | |
| 4638 int length = data[i].segs[0].length == -1 ? (int) ustrlen(data[i].segs[0].source) : data[i].segs[0].length; | |
| 4639 int length1 = data[i].segs[1].length == -1 ? (int) ustrlen(data[i].segs[1].source) : data[i].segs[1].length; | |
| 4640 int length2 = data[i].segs[2].length == -1 ? (int) ustrlen(data[i].segs[2].source) : data[i].segs[2].length; | |
| 4641 printf(" /*%3d*/ { %s, %s, %d, %d, %s, { %d, %d, \"%s\" }, { { TU(\"%s\"), %d, %d }, { TU(\"%s\"), %d, %d }, { TU(\"%s\"), %d, %d } }, %s, %d, %d, %d, \"%s\",\n", | |
| 4642 i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), | |
| 4643 data[i].option_1, data[i].option_2, testUtilOption3Name(data[i].symbology, data[i].option_3), | |
| 4644 data[i].structapp.index, data[i].structapp.count, data[i].structapp.id, | |
| 4645 testUtilEscape((const char *) data[i].segs[0].source, length, escaped, sizeof(escaped)), data[i].segs[0].length, data[i].segs[0].eci, | |
| 4646 testUtilEscape((const char *) data[i].segs[1].source, length1, escaped1, sizeof(escaped1)), data[i].segs[1].length, data[i].segs[1].eci, | |
| 4647 testUtilEscape((const char *) data[i].segs[2].source, length2, escaped2, sizeof(escaped2)), data[i].segs[2].length, data[i].segs[2].eci, | |
| 4648 testUtilErrorName(data[i].ret), symbol->rows, symbol->width, data[i].bwipp_cmp, data[i].comment); | |
| 4649 testUtilModulesPrint(symbol, " ", "\n"); | |
| 4650 printf(" },\n"); | |
| 4651 } else { | |
| 4652 if (ret < ZINT_ERROR) { | |
| 4653 int width, row; | |
| 4654 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows); | |
| 4655 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width); | |
| 4656 | |
| 4657 ret = testUtilModulesCmp(symbol, data[i].expected, &width, &row); | |
| 4658 assert_zero(ret, "i:%d testUtilModulesCmp ret %d != 0 width %d row %d\n", i, ret, width, row); | |
| 4659 | |
| 4660 if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, debug)) { | |
| 4661 if (!data[i].bwipp_cmp) { | |
| 4662 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 4663 } else { | |
| 4664 ret = testUtilBwippSegs(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, data[i].segs, seg_count, NULL, cmp_buf, sizeof(cmp_buf)); | |
| 4665 assert_zero(ret, "i:%d %s testUtilBwippSegs ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 4666 | |
| 4667 ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, data[i].expected); | |
| 4668 assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", | |
| 4669 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, data[i].expected); | |
| 4670 } | |
| 4671 } | |
| 4672 if (do_zxingcpp) { | |
| 4673 if ((symbol->input_mode & 0x07) == DATA_MODE) { | |
| 4674 if (debug & ZINT_DEBUG_TEST_PRINT) { | |
| 4675 printf("i:%d multiple segments in DATA_MODE not currently supported for ZXing-C++ testing (%s)\n", | |
| 4676 i, testUtilBarcodeName(symbol->symbology)); | |
| 4677 } | |
| 4678 } else { | |
| 4679 int length = data[i].segs[0].length == -1 ? (int) ustrlen(data[i].segs[0].source) : data[i].segs[0].length; | |
| 4680 if (testUtilCanZXingCPP(i, symbol, (const char *) data[i].segs[0].source, length, debug)) { | |
| 4681 int cmp_len, ret_len; | |
| 4682 char modules_dump[32768]; | |
| 4683 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 4684 ret = testUtilZXingCPP(i, symbol, (const char *) data[i].segs[0].source, length, | |
| 4685 modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 4686 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 4687 | |
| 4688 ret = testUtilZXingCPPCmpSegs(symbol, cmp_msg, cmp_buf, cmp_len, data[i].segs, seg_count, | |
| 4689 NULL /*primary*/, escaped, &ret_len); | |
| 4690 assert_zero(ret, "i:%d %s testUtilZXingCPPCmpSegs %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 4691 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 4692 } | |
| 4693 } | |
| 4694 } | |
| 4695 } | |
| 4696 } | |
| 4697 | |
| 4698 ZBarcode_Delete(symbol); | |
| 4699 } | |
| 4700 | |
| 4701 testFinish(); | |
| 4702 } | |
| 4703 | |
| 4704 #include <time.h> | |
| 4705 | |
| 4706 #define TEST_PERF_ITER_MILLES 5 | |
| 4707 #define TEST_PERF_ITERATIONS (TEST_PERF_ITER_MILLES * 1000) | |
| 4708 #define TEST_PERF_TIME(arg) (((arg) * 1000.0) / CLOCKS_PER_SEC) | |
| 4709 | |
| 4710 /* Not a real test, just performance indicator */ | |
| 4711 static void test_qr_perf(const testCtx *const p_ctx) { | |
| 4712 int debug = p_ctx->debug; | |
| 4713 | |
| 4714 struct item { | |
| 4715 int symbology; | |
| 4716 int input_mode; | |
| 4717 int option_1; | |
| 4718 int option_2; | |
| 4719 char *data; | |
| 4720 int ret; | |
| 4721 | |
| 4722 int expected_rows; | |
| 4723 int expected_width; | |
| 4724 char *comment; | |
| 4725 }; | |
| 4726 static const struct item data[] = { | |
| 4727 /* 0*/ { BARCODE_QRCODE, UNICODE_MODE, -1, -1, "12345678901234", 0, 21, 21, "14 chars, Numeric mode" }, | |
| 4728 /* 1*/ { BARCODE_QRCODE, UNICODE_MODE, -1, -1, "ABC 123 ABC 123 ABCD", 0, 21, 21, "20 chars, Alphanumeric" }, | |
| 4729 /* 2*/ { BARCODE_QRCODE, UNICODE_MODE, -1, -1, "ABCde fG H 123456 IJKlmn, 1234567890 opQ Rst uvwxyz. 1234", 0, 29, 29, "57 chars, Alphanumeric" }, | |
| 4730 /* 3*/ { BARCODE_QRCODE, UNICODE_MODE, -1, -1, | |
| 4731 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点", | |
| 4732 ZINT_WARN_NONCOMPLIANT, 37, 37, "107 chars, Mixed modes" }, | |
| 4733 /* 4*/ { BARCODE_QRCODE, UNICODE_MODE, -1, -1, | |
| 4734 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4735 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点", | |
| 4736 ZINT_WARN_NONCOMPLIANT, 53, 53, "214 chars, Mixed modes" }, | |
| 4737 /* 5*/ { BARCODE_QRCODE, UNICODE_MODE, -1, -1, | |
| 4738 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4739 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4740 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4741 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点", | |
| 4742 ZINT_WARN_NONCOMPLIANT, 73, 73, "428 chars, Mixed modes" }, | |
| 4743 /* 6*/ { BARCODE_QRCODE, UNICODE_MODE, -1, -1, | |
| 4744 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4745 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4746 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4747 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4748 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4749 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4750 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4751 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4752 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点", | |
| 4753 ZINT_WARN_NONCOMPLIANT, 105, 105, "963 chars, Mixed modes" }, | |
| 4754 /* 7*/ { BARCODE_QRCODE, UNICODE_MODE, -1, -1, | |
| 4755 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4756 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4757 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4758 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4759 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4760 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4761 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4762 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4763 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4764 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4765 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4766 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4767 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点" | |
| 4768 "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 12345678901234567890123456 点点点点点点点点点点点点点点点点点点点点点点点点点点", | |
| 4769 ZINT_WARN_NONCOMPLIANT, 133, 133, "1498 chars, Mixed modes" }, | |
| 4770 }; | |
| 4771 const int data_size = ARRAY_SIZE(data); | |
| 4772 int i, length, ret; | |
| 4773 struct zint_symbol *symbol; | |
| 4774 | |
| 4775 clock_t start; | |
| 4776 clock_t total_create = 0, total_encode = 0, total_buffer = 0; | |
| 4777 clock_t diff_create, diff_encode, diff_buffer; | |
| 4778 int comment_max = 0; | |
| 4779 | |
| 4780 if (!(debug & ZINT_DEBUG_TEST_PERFORMANCE)) { /* -d 256 */ | |
| 4781 return; | |
| 4782 } | |
| 4783 | |
| 4784 for (i = 0; i < data_size; i++) if ((int) strlen(data[i].comment) > comment_max) comment_max = (int) strlen(data[i].comment); | |
| 4785 | |
| 4786 printf("Iterations %d\n", TEST_PERF_ITERATIONS); | |
| 4787 | |
| 4788 printf("FAST_MODE\n"); | |
| 4789 for (i = 0; i < data_size; i++) { | |
| 4790 int j; | |
| 4791 | |
| 4792 if (testContinue(p_ctx, i)) continue; | |
| 4793 | |
| 4794 diff_create = diff_encode = diff_buffer = 0; | |
| 4795 | |
| 4796 for (j = 0; j < TEST_PERF_ITERATIONS; j++) { | |
| 4797 int input_mode = data[i].input_mode == -1 ? FAST_MODE : (data[i].input_mode | FAST_MODE); | |
| 4798 start = clock(); | |
| 4799 symbol = ZBarcode_Create(); | |
| 4800 diff_create += clock() - start; | |
| 4801 assert_nonnull(symbol, "Symbol not created\n"); | |
| 4802 | |
| 4803 length = testUtilSetSymbol(symbol, data[i].symbology, input_mode, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, -1 /*output_options*/, data[i].data, -1, debug); | |
| 4804 | |
| 4805 start = clock(); | |
| 4806 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 4807 diff_encode += clock() - start; | |
| 4808 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 4809 | |
| 4810 #if 0 | |
| 4811 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d (%s)\n", i, symbol->rows, data[i].expected_rows, data[i].data); | |
| 4812 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data); | |
| 4813 #endif | |
| 4814 | |
| 4815 start = clock(); | |
| 4816 ret = ZBarcode_Buffer(symbol, 0 /*rotate_angle*/); | |
| 4817 diff_buffer += clock() - start; | |
| 4818 assert_zero(ret, "i:%d ZBarcode_Buffer ret %d != 0 (%s)\n", i, ret, symbol->errtxt); | |
| 4819 | |
| 4820 ZBarcode_Delete(symbol); | |
| 4821 } | |
| 4822 | |
| 4823 printf("%*s: encode % 8gms, buffer % 8gms, create % 8gms\n", comment_max, data[i].comment, | |
| 4824 TEST_PERF_TIME(diff_encode), TEST_PERF_TIME(diff_buffer), TEST_PERF_TIME(diff_create)); | |
| 4825 | |
| 4826 total_create += diff_create; | |
| 4827 total_encode += diff_encode; | |
| 4828 total_buffer += diff_buffer; | |
| 4829 } | |
| 4830 if (p_ctx->index != -1) { | |
| 4831 printf("%*s: encode % 8gms, buffer % 8gms, create % 8gms\n", comment_max, "totals", | |
| 4832 TEST_PERF_TIME(total_encode), TEST_PERF_TIME(total_buffer), TEST_PERF_TIME(total_create)); | |
| 4833 } | |
| 4834 | |
| 4835 printf("OPTIMIZED\n"); | |
| 4836 for (i = 0; i < data_size; i++) { | |
| 4837 int j; | |
| 4838 | |
| 4839 if (testContinue(p_ctx, i)) continue; | |
| 4840 | |
| 4841 diff_create = diff_encode = diff_buffer = 0; | |
| 4842 | |
| 4843 for (j = 0; j < TEST_PERF_ITERATIONS; j++) { | |
| 4844 start = clock(); | |
| 4845 symbol = ZBarcode_Create(); | |
| 4846 diff_create += clock() - start; | |
| 4847 assert_nonnull(symbol, "Symbol not created\n"); | |
| 4848 | |
| 4849 length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, -1 /*output_options*/, data[i].data, -1, debug); | |
| 4850 | |
| 4851 start = clock(); | |
| 4852 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 4853 diff_encode += clock() - start; | |
| 4854 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 4855 | |
| 4856 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d (%s)\n", i, symbol->rows, data[i].expected_rows, data[i].data); | |
| 4857 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data); | |
| 4858 | |
| 4859 start = clock(); | |
| 4860 ret = ZBarcode_Buffer(symbol, 0 /*rotate_angle*/); | |
| 4861 diff_buffer += clock() - start; | |
| 4862 assert_zero(ret, "i:%d ZBarcode_Buffer ret %d != 0 (%s)\n", i, ret, symbol->errtxt); | |
| 4863 | |
| 4864 ZBarcode_Delete(symbol); | |
| 4865 } | |
| 4866 | |
| 4867 printf("%*s: encode % 8gms, buffer % 8gms, create % 8gms\n", comment_max, data[i].comment, | |
| 4868 TEST_PERF_TIME(diff_encode), TEST_PERF_TIME(diff_buffer), TEST_PERF_TIME(diff_create)); | |
| 4869 | |
| 4870 total_create += diff_create; | |
| 4871 total_encode += diff_encode; | |
| 4872 total_buffer += diff_buffer; | |
| 4873 } | |
| 4874 if (p_ctx->index != -1) { | |
| 4875 printf("%*s: encode % 8gms, buffer % 8gms, create % 8gms\n", comment_max, "totals", | |
| 4876 TEST_PERF_TIME(total_encode), TEST_PERF_TIME(total_buffer), TEST_PERF_TIME(total_create)); | |
| 4877 } | |
| 4878 } | |
| 4879 | |
| 4880 static void test_microqr_options(const testCtx *const p_ctx) { | |
| 4881 int debug = p_ctx->debug; | |
| 4882 | |
| 4883 struct item { | |
| 4884 int option_1; | |
| 4885 int option_2; | |
| 4886 char *data; | |
| 4887 int ret_encode; | |
| 4888 int ret_vector; | |
| 4889 int expected_size; | |
| 4890 char *expected_errtxt; | |
| 4891 int compare_previous; | |
| 4892 }; | |
| 4893 /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ | |
| 4894 static const struct item data[] = { | |
| 4895 /* 0*/ { -1, -1, "12345", 0, 0, 11, "", -1 }, /* ECC auto-set to 1 (L), version auto-set to 1 */ | |
| 4896 /* 1*/ { 1, -1, "12345", 0, 0, 11, "", 0 }, /* ECC 1 (L), version auto-set to 1 */ | |
| 4897 /* 2*/ { 2, -1, "12345", 0, 0, 13, "", 1 }, /* ECC 2 (M), version auto-set to 2 */ | |
| 4898 /* 3*/ { 3, -1, "12345", 0, 0, 17, "", 1 }, /* ECC 3 (Q), version auto-set to 3 */ | |
| 4899 /* 4*/ { 4, -1, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, "Error 566: Error correction level H not available", -1 }, | |
| 4900 /* 5*/ { -1, 1, "12345", 0, 0, 11, "", -1 }, /* ECC auto-set to 1, version 1 */ | |
| 4901 /* 6*/ { -1, 2, "12345", 0, 0, 13, "", 1 }, /* ECC auto-set to 2, version 2 */ | |
| 4902 /* 7*/ { 2, 2, "12345", 0, 0, 13, "", 0 }, | |
| 4903 /* 8*/ { -1, 3, "12345", 0, 0, 15, "", 1 }, /* ECC auto-set to 2, version 3 */ | |
| 4904 /* 9*/ { 2, 3, "12345", 0, 0, 15, "", 0 }, | |
| 4905 /* 10*/ { 1, 3, "12345", 0, 0, 15, "", 1 }, | |
| 4906 /* 11*/ { -1, 4, "12345", 0, 0, 17, "", 1 }, /* ECC auto-set to 3, version 4 */ | |
| 4907 /* 12*/ { 3, 4, "12345", 0, 0, 17, "", 0 }, /* ECC auto-set to 3, version 4 */ | |
| 4908 /* 13*/ { 2, 4, "12345", 0, 0, 17, "", 1 }, | |
| 4909 /* 14*/ { -1, 5, "12345", 0, 0, 11, "", -1 }, /* Size > 4 ignored */ | |
| 4910 /* 15*/ { 1, 5, "12345", 0, 0, 11, "", 0 }, /* Ignored also if ECC given */ | |
| 4911 /* 16*/ { 1, 1, "12345", 0, 0, 11, "", 0 }, /* ECC 1, version 1 */ | |
| 4912 /* 17*/ { 1, 2, "12345", 0, 0, 13, "", 1 }, /* ECC 1, version 2 */ | |
| 4913 /* 18*/ { 1, 3, "12345", 0, 0, 15, "", 1 }, /* ECC 1, version 3 */ | |
| 4914 /* 19*/ { 1, 4, "12345", 0, 0, 17, "", 1 }, /* ECC 1, version 4 */ | |
| 4915 /* 20*/ { 2, 1, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, "Error 574: Version M1 supports error correction level L only", -1 }, | |
| 4916 /* 21*/ { 2, 2, "12345", 0, -1, 13, "", -1 }, /* ECC 2, version 2 */ | |
| 4917 /* 22*/ { 2, 3, "12345", 0, -1, 15, "", 1 }, /* ECC 2, version 3 */ | |
| 4918 /* 23*/ { 2, 4, "12345", 0, -1, 17, "", 1 }, /* ECC 2, version 4 */ | |
| 4919 /* 24*/ { 3, 1, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, "Error 574: Version M1 supports error correction level L only", -1 }, | |
| 4920 /* 25*/ { 3, 2, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, "Error 563: Error correction level Q requires Version M4", -1 }, | |
| 4921 /* 26*/ { 3, 3, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, "Error 563: Error correction level Q requires Version M4", -1 }, | |
| 4922 /* 27*/ { 3, 4, "12345", 0, -1, 17, "", -1 }, /* ECC 3, version 4 */ | |
| 4923 /* 28*/ { 4, 4, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, "Error 566: Error correction level H not available", -1 }, | |
| 4924 /* 29*/ { 5, -1, "12345", 0, 0, 11, "", -1 }, /* ECC > 4 ignored */ | |
| 4925 /* 30*/ { 5, 1, "12345", 0, 0, 11, "", 0 }, /* Ignored also if size given */ | |
| 4926 /* 31*/ { 1, 1, "123456", ZINT_ERROR_TOO_LONG, -1, 0, "Error 570: Input too long for Version M1-L, requires 4 codewords (maximum 3)", -1 }, | |
| 4927 /* 32*/ { 1, -1, "123456", 0, 0, 13, "", -1 }, /* ECC 1 (L), version auto-set to 2 */ | |
| 4928 /* 33*/ { 1, 2, "123456", 0, 0, 13, "", 0 }, | |
| 4929 /* 34*/ { 2, 2, "ABCDEF", ZINT_ERROR_TOO_LONG, -1, 0, "Error 570: Input too long for Version M2-M, requires 5 codewords (maximum 4)", -1 }, | |
| 4930 /* 35*/ { 1, -1, "ABCDEF", 0, 0, 13, "", -1 }, /* ECC 1 (L), version auto-set to 2 */ | |
| 4931 /* 36*/ { 1, 2, "ABCDEF", 0, 0, 13, "", 0 }, | |
| 4932 /* 37*/ { 2, -1, "ABCDE", 0, 0, 13, "", -1 }, /* ECC 2 (M), version auto-set to 2 */ | |
| 4933 /* 38*/ { 2, 2, "ABCDE", 0, 0, 13, "", 0 }, /* ECC 2 (M), version auto-set to 2 */ | |
| 4934 /* 39*/ { 1, -1, "ABCDEABCDEABCD", 0, 0, 15, "", -1 }, /* 14 alphanumerics, ECC 1, version auto-set to 3 */ | |
| 4935 /* 40*/ { 1, 3, "ABCDEABCDEABCD", 0, 0, 15, "", 0 }, | |
| 4936 /* 41*/ { 2, 3, "ABCDEABCDEABCD", ZINT_ERROR_TOO_LONG, -1, 0, "Error 570: Input too long for Version M3-M, requires 11 codewords (maximum 9)", -1 }, | |
| 4937 /* 42*/ { 2, 3, "ABCDEABCDEA", 0, 0, 15, "", -1 }, /* 11 alphanumerics, ECC 2, version 3 */ | |
| 4938 /* 43*/ { 1, -1, "ABCDEFGHIJABCDEFGHIJA", 0, 0, 17, "", -1 }, /* 21 alphanumerics, ECC 1, version auto-set to 4 */ | |
| 4939 /* 44*/ { 1, 4, "ABCDEFGHIJABCDEFGHIJA", 0, 0, 17, "", 0 }, | |
| 4940 /* 45*/ { 2, 4, "ABCDEFGHIJABCDEFGHIJA", ZINT_ERROR_TOO_LONG, -1, 0, "Error 565: Input too long for Version M4-M, requires 16 codewords (maximum 14)", -1 }, | |
| 4941 /* 46*/ { 2, 4, "ABCDEFGHIJABCDEFGH", 0, 0, 17, "", -1 }, /* 18 alphanumerics, ECC 2, version 4 */ | |
| 4942 /* 47*/ { 3, 4, "ABCDEFGHIJABCDEFGH", ZINT_ERROR_TOO_LONG, -1, 0, "Error 565: Input too long for Version M4-Q, requires 14 codewords (maximum 10)", -1 }, | |
| 4943 /* 48*/ { 3, 4, "ABCDEFGHIJABC", 0, 0, 17, "", -1 }, /* 13 alphanumerics, ECC 3 (Q), version 4 */ | |
| 4944 /* 49*/ { -1, -1, "123456789012345678901234567890123456", ZINT_ERROR_TOO_LONG, -1, 0, "Error 562: Input length 36 too long (maximum 35)", -1 }, /* 35 absolute max */ | |
| 4945 /* 50*/ { -1, -1, "貫貫貫貫貫", 0, 0, 17, "", -1 }, /* 5 Kanji max */ | |
| 4946 /* 51*/ { -1, -1, "貫貫貫貫貫貫", ZINT_ERROR_TOO_LONG, -1, 0, "Error 565: Input too long for Version M4-L, requires 19 codewords (maximum 16)", -1 }, | |
| 4947 /* 52*/ { -1, 1, "A", ZINT_ERROR_INVALID_DATA, -1, 0, "Error 758: Invalid character at position 1 in input for Version M1 (digits only)", -1 }, /* Numeric only */ | |
| 4948 /* 53*/ { -1, 2, "A", 0, 0, 13, "", -1 }, | |
| 4949 /* 54*/ { -1, 2, " ", 0, 0, 13, "", -1 }, | |
| 4950 /* 55*/ { -1, 2, "$%*+", 0, 0, 13, "", -1 }, | |
| 4951 /* 56*/ { -1, 2, "-./:", 0, 0, 13, "", -1 }, | |
| 4952 /* 57*/ { -1, 2, "a", ZINT_ERROR_INVALID_DATA, -1, 0, "Error 759: Invalid character in input for Version M2 (digits, A-Z, space and \"$%*+-./:\" only)", -1 }, /* Uppercase only */ | |
| 4953 /* 58*/ { -1, 2, "!", ZINT_ERROR_INVALID_DATA, -1, 0, "Error 759: Invalid character in input for Version M2 (digits, A-Z, space and \"$%*+-./:\" only)", -1 }, /* Certain punctuation only */ | |
| 4954 /* 59*/ { -1, 2, "#", ZINT_ERROR_INVALID_DATA, -1, 0, "Error 759: Invalid character in input for Version M2 (digits, A-Z, space and \"$%*+-./:\" only)", -1 }, /* Certain punctuation only */ | |
| 4955 /* 60*/ { -1, 2, ",", ZINT_ERROR_INVALID_DATA, -1, 0, "Error 759: Invalid character in input for Version M2 (digits, A-Z, space and \"$%*+-./:\" only)", -1 }, /* Certain punctuation only */ | |
| 4956 /* 61*/ { -1, 2, "@", ZINT_ERROR_INVALID_DATA, -1, 0, "Error 759: Invalid character in input for Version M2 (digits, A-Z, space and \"$%*+-./:\" only)", -1 }, /* Certain punctuation only */ | |
| 4957 /* 62*/ { -1, 2, "\177", ZINT_ERROR_INVALID_DATA, -1, 0, "Error 759: Invalid character in input for Version M2 (digits, A-Z, space and \"$%*+-./:\" only)", -1 }, | |
| 4958 }; | |
| 4959 const int data_size = ARRAY_SIZE(data); | |
| 4960 int i, length, ret; | |
| 4961 struct zint_symbol *symbol = NULL; | |
| 4962 | |
| 4963 struct zint_symbol previous_symbol; | |
| 4964 | |
| 4965 testStartSymbol("test_microqr_options", &symbol); | |
| 4966 | |
| 4967 for (i = 0; i < data_size; i++) { | |
| 4968 | |
| 4969 if (testContinue(p_ctx, i)) continue; | |
| 4970 | |
| 4971 symbol = ZBarcode_Create(); | |
| 4972 assert_nonnull(symbol, "Symbol not created\n"); | |
| 4973 | |
| 4974 length = testUtilSetSymbol(symbol, BARCODE_MICROQR, -1 /*input_mode*/, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, -1 /*output_options*/, data[i].data, -1, debug); | |
| 4975 | |
| 4976 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 4977 assert_equal(ret, data[i].ret_encode, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret_encode, symbol->errtxt); | |
| 4978 assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected_errtxt); | |
| 4979 if (p_ctx->index == -1 && data[i].compare_previous != -1) { | |
| 4980 ret = testUtilSymbolCmp(symbol, &previous_symbol); | |
| 4981 assert_equal(!ret, !data[i].compare_previous, "i:%d testUtilSymbolCmp !ret %d != %d\n", i, ret, data[i].compare_previous); | |
| 4982 } | |
| 4983 memcpy(&previous_symbol, symbol, sizeof(previous_symbol)); | |
| 4984 | |
| 4985 if (data[i].ret_vector != -1) { | |
| 4986 ret = ZBarcode_Buffer_Vector(symbol, 0); | |
| 4987 assert_equal(ret, data[i].ret_vector, "i:%d ZBarcode_Buffer_Vector ret %d != %d\n", i, ret, data[i].ret_vector); | |
| 4988 assert_equal(symbol->width, data[i].expected_size, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_size); | |
| 4989 assert_equal(symbol->rows, data[i].expected_size, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_size); | |
| 4990 } | |
| 4991 | |
| 4992 ZBarcode_Delete(symbol); | |
| 4993 } | |
| 4994 | |
| 4995 testFinish(); | |
| 4996 } | |
| 4997 | |
| 4998 static void test_microqr_input(const testCtx *const p_ctx) { | |
| 4999 int debug = p_ctx->debug; | |
| 5000 | |
| 5001 struct item { | |
| 5002 int input_mode; | |
| 5003 int option_3; | |
| 5004 char *data; | |
| 5005 int ret; | |
| 5006 char *expected; | |
| 5007 int bwipp_cmp; | |
| 5008 int zxingcpp_cmp; | |
| 5009 char *comment; | |
| 5010 }; | |
| 5011 /* é U+00E9 in ISO 8859-1 plus other ISO 8859 (but not in ISO 8859-7 or ISO 8859-11), Win 1250 plus other Win, not in Shift JIS, UTF-8 C3A9 */ | |
| 5012 /* β U+03B2 in ISO 8859-7 Greek (but not other ISO 8859 or Win page), in Shift JIS 0x83C0, UTF-8 CEB2 */ | |
| 5013 /* ก U+0E01 in ISO 8859-11 Thai (but not other ISO 8859 or Win page), not in Shift JIS, UTF-8 E0B881 */ | |
| 5014 /* Ж U+0416 in ISO 8859-5 Cyrillic (but not other ISO 8859), Win 1251, in Shift JIS 0x8447 (\204\107), UTF-8 D096 */ | |
| 5015 /* ກ U+0E81 Lao not in any ISO 8859 (or Win page) or Shift JIS, UTF-8 E0BA81 */ | |
| 5016 /* ¥ U+00A5 in ISO 8859-1 0xA5 (\245), in Shift JIS single-byte 0x5C (\134) (backslash); 0xA5 same codepoint as single-byte half-width katakana ・ (U+FF65) in Shift JIS (below), UTF-8 C2A5 */ | |
| 5017 /* ・ U+FF65 half-width katakana, not in ISO/Win, in Shift JIS single-byte 0xA5 (\245), UTF-8 EFBDA5 */ | |
| 5018 /* ¿ U+00BF in ISO 8859-1 0xBF (\277), not in Shift JIS; 0xBF same codepoint as single-byte half-width katakana ソ (U+FF7F) in Shift JIS (below), UTF-8 C2BF */ | |
| 5019 /* ソ U+FF7F half-width katakana, not in ISO/Win, in Shift JIS single-byte 0xBF (\277), UTF-8 EFBDBF */ | |
| 5020 /* ‾ U+203E overline, not in ISO/Win, in Shift JIS single-byte 0x7E (\176) (tilde), UTF-8 E280BE */ | |
| 5021 /* 点 U+70B9 kanji, in Shift JIS 0x935F (\223\137), UTF-8 E782B9 */ | |
| 5022 /* 茗 U+8317 kanji, in Shift JIS 0xE4AA (\344\252), UTF-8 E88C97 */ | |
| 5023 /* Á U+00C1, UTF-8 C381; ȁ U+0201, UTF-8 C881; Ȃ U+0202, UTF-8 C882; ¢ U+00A2, UTF-8 C2A2; á U+00E1, UTF-8 C3A1 */ | |
| 5024 static const struct item data[] = { | |
| 5025 /* 0*/ { UNICODE_MODE, -1, "é", 0, "87 A4 00 EC 11 EC 11 EC 00 (68)", 1, 1, "B1 (ISO 8859-1)" }, | |
| 5026 /* 1*/ { DATA_MODE, -1, "é", 0, "8B 0E A4 00 EC 11 EC 11 00 (68)", 1, 0, "B2 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 5027 /* 2*/ { UNICODE_MODE, -1, "β", 0, "C8 80 00 00 EC 11 EC 11 00 (68)", 1, 1, "K1 (Shift JIS)" }, | |
| 5028 /* 3*/ { UNICODE_MODE, -1, "ก", ZINT_ERROR_INVALID_DATA, "Error 800: Invalid character in input", 1, 1, "ก not in Shift JIS" }, | |
| 5029 /* 4*/ { UNICODE_MODE, -1, "Ж", 0, "C8 91 C0 00 EC 11 EC 11 00 (68)", 1, 1, "K1 (Shift JIS)" }, | |
| 5030 /* 5*/ { UNICODE_MODE, -1, "ກ", ZINT_ERROR_INVALID_DATA, "Error 800: Invalid character in input", 1, 1, "ກ not in Shift JIS" }, | |
| 5031 /* 6*/ { UNICODE_MODE, -1, "\\", 0, "85 70 00 EC 11 EC 11 EC 00 (68)", 1, 1, "B1 (ASCII)" }, | |
| 5032 /* 7*/ { UNICODE_MODE, -1, "¥", 0, "86 94 00 EC 11 EC 11 EC 00 (68)", 1, 1, "B1 (ISO 8859-1) (same bytes as ・ Shift JIS below, so ambiguous)" }, | |
| 5033 /* 8*/ { UNICODE_MODE, -1, "・", 0, "86 94 00 EC 11 EC 11 EC 00 (68)", 1, 1, "B1 (Shift JIS) single-byte codepoint A5 (same bytes as ¥ ISO 8859-1 above, so ambiguous)" }, | |
| 5034 /* 9*/ { UNICODE_MODE, -1, "¿", 0, "86 FC 00 EC 11 EC 11 EC 00 (68)", 1, 1, "B1 (ISO 8859-1) (same bytes as ソ Shift JIS below, so ambiguous)" }, | |
| 5035 /* 10*/ { UNICODE_MODE, -1, "ソ", 0, "86 FC 00 EC 11 EC 11 EC 00 (68)", 1, 1, "B1 (Shift JIS) (same bytes as ¿ ISO 8859-1 above, so ambiguous)" }, | |
| 5036 /* 11*/ { UNICODE_MODE, -1, "~", 0, "85 F8 00 EC 11 EC 11 EC 00 (68)", 1, 1, "B1 (ASCII) (same bytes as ‾ Shift JIS below, so ambiguous)" }, | |
| 5037 /* 12*/ { UNICODE_MODE, -1, "‾", 0, "85 F8 00 EC 11 EC 11 EC 00 (68)", 1, 0, "B1 (Shift JIS) (same bytes as ~ ASCII above, so ambiguous); ZXing-C++ doesn't map Shift JIS ASCII" }, | |
| 5038 /* 13*/ { UNICODE_MODE, -1, "点", 0, "CB 67 C0 00 EC 11 EC 11 00 (68)", 1, 1, "K1 (Shift JIS)" }, | |
| 5039 /* 14*/ { DATA_MODE, -1, "\223\137", 0, "8A 4D 7C 00 EC 11 EC 11 00 (68)", 0, 0, "B2 (Shift JIS); BWIPP uses Kanji (ZINT_FULL_MULTIBYTE) mode, see below); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 5040 /* 15*/ { DATA_MODE, ZINT_FULL_MULTIBYTE, "\223\137", 0, "CB 67 C0 00 EC 11 EC 11 00 (68)", 1, 1, "K1 (Shift JIS) (full multibyte)" }, | |
| 5041 /* 16*/ { DATA_MODE, -1, "点", 0, "8F 9E 0A E4 00 EC 11 EC 00 (68)", 1, 0, "B3 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 5042 /* 17*/ { UNICODE_MODE, -1, "茗", 0, "CE AA 80 00 EC 11 EC 11 00 (68)", 1, 1, "K1 (Shift JIS)" }, | |
| 5043 /* 18*/ { DATA_MODE, -1, "\344\252", 0, "8B 92 A8 00 EC 11 EC 11 00 (68)", 0, 0, "B2 (Shift JIS); BWIPP uses Kanji (ZINT_FULL_MULTIBYTE) mode, see below; ZXing-C++ test can't handle DATA_MODE for certain inputs)" }, | |
| 5044 /* 19*/ { DATA_MODE, ZINT_FULL_MULTIBYTE, "\344\252", 0, "CE AA 80 00 EC 11 EC 11 00 (68)", 1, 1, "K1 (Shift JIS) (full multibyte)" }, | |
| 5045 /* 20*/ { DATA_MODE, -1, "茗", 0, "8F A2 32 5C 00 EC 11 EC 00 (68)", 1, 0, "B3 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 5046 /* 21*/ { UNICODE_MODE, -1, "¥点", 0, "8D 72 4D 7C 00 EC 11 EC 00 (68)", 1, 0, "B3 (Shift JIS) (optimized from B1 K1); ZXing-C++ doesn't map Shift JIS ASCII" }, | |
| 5047 /* 22*/ { DATA_MODE, -1, "\134\223\137", 0, "8D 72 4D 7C 00 EC 11 EC 00 (68)", 1, 0, "B3 (Shift JIS) (optimized from B1 K1); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 5048 /* 23*/ { DATA_MODE, -1, "¥点", 0, "97 0A 97 9E 0A E4 00 EC 00 (68)", 1, 0, "B5 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 5049 /* 24*/ { UNICODE_MODE, -1, "点茗", 0, "D3 67 F5 54 00 EC 11 EC 00 (68)", 1, 1, "K2 (Shift JIS)" }, | |
| 5050 /* 25*/ { DATA_MODE, -1, "\223\137\344\252", 0, "92 4D 7F 92 A8 00 EC 11 00 (68)", 0, 0, "B4 (Shift JIS; BWIPP uses Kanji (ZINT_FULL_MULTIBYTE) mode, see below)); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 5051 /* 26*/ { DATA_MODE, ZINT_FULL_MULTIBYTE, "\223\137\344\252", 0, "D3 67 F5 54 00 EC 11 EC 00 (68)", 1, 1, "K2 (Shift JIS) (full multibyte)" }, | |
| 5052 /* 27*/ { DATA_MODE, -1, "点茗", 0, "9B 9E 0A E7 A2 32 5C 00 00 (68)", 1, 0, "B6 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 5053 /* 28*/ { DATA_MODE, ZINT_FULL_MULTIBYTE, "点茗", 0, "9B 9E 0A E7 A2 32 5C 00 00 (68)", 1, 1, "B6 (UTF-8)" }, | |
| 5054 /* 29*/ { UNICODE_MODE, -1, "点茗・", 0, "D3 67 F5 55 0D 28 00 EC 00 (68)", 1, 1, "K2 B1 (Shift JIS)" }, | |
| 5055 /* 30*/ { DATA_MODE, -1, "\223\137\344\252\245", 0, "96 4D 7F 92 AA 94 00 EC 00 (68)", 0, 0, "B5 (Shift JIS); BWIPP uses Kanji (ZINT_FULL_MULTIBYTE) mode, see below); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 5056 /* 31*/ { DATA_MODE, ZINT_FULL_MULTIBYTE, "\223\137\344\252\245", 0, "D3 67 F5 55 0D 28 00 EC 00 (68)", 1, 1, "K2 B1 (Shift JIS) (full multibyte)" }, | |
| 5057 /* 32*/ { DATA_MODE, -1, "点茗・", 0, "A7 9E 0A E7 A2 32 5F BE F6 94 00 (84)", 1, 0, "B9 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 5058 /* 33*/ { UNICODE_MODE, -1, "¥点茗・", 0, "99 72 4D 7F 92 AA 94 00 00 (68)", 1, 0, "B6 (Shift JIS) (optimized from B1 K2 B1); ZXing-C++ doesn't map Shift JIS ASCII" }, | |
| 5059 /* 34*/ { DATA_MODE, -1, "\134\223\137\344\252\245", 0, "99 72 4D 7F 92 AA 94 00 00 (68)", 1, 0, "B6 (Shift JIS) (optimized from B1 K2 B1); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 5060 /* 35*/ { DATA_MODE, -1, "¥点茗・", 0, "4B C2 A5 E7 82 B9 E8 8C 97 EF BD A5 00 00 (112)", 1, 0, "B11 (UTF-8); ZXing-C++ doesn't map Shift JIS ASCII" }, | |
| 5061 /* 36*/ { DATA_MODE, -1, "ÁȁȁȁȂ¢", 0, "4C C3 81 C8 81 C8 81 C8 81 C8 82 C2 A2 00 (112)", 1, 0, "B12 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 5062 /* 37*/ { DATA_MODE, -1, "ÁȁȁȁȁȂ¢", 0, "4E C3 81 C8 81 C8 81 C8 81 C8 81 C8 82 C2 A2 00 (128)", 0, 0, "B14 (UTF-8); BWIPP uses Kanji (ZINT_FULL_MULTIBYTE) mode, see below); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 5063 /* 38*/ { DATA_MODE, ZINT_FULL_MULTIBYTE, "ÁȁȁȁȁȂ¢", 0, "41 C3 6C 08 80 44 02 20 11 00 88 0A 12 0D 10 00 (128)", 1, 1, "B1 K6 B1 (UTF-8) (full multibyte)" }, | |
| 5064 /* 39*/ { UNICODE_MODE, -1, "áA", 0, "8B 85 04 00 EC 11 EC 11 00 (68)", 0, 1, "B2 (ISO 8859-1); BWIPP uses Kanji (ZINT_FULL_MULTIBYTE) mode, see below)" }, | |
| 5065 /* 40*/ { UNICODE_MODE, ZINT_FULL_MULTIBYTE, "áA", 0, "CE 00 40 00 EC 11 EC 11 00 (68)", 1, 1, "K1 (ISO 8859-1) (full multibyte)" }, | |
| 5066 }; | |
| 5067 const int data_size = ARRAY_SIZE(data); | |
| 5068 int i, length, ret; | |
| 5069 struct zint_symbol *symbol = NULL; | |
| 5070 | |
| 5071 char escaped[4096]; | |
| 5072 char cmp_buf[32768]; | |
| 5073 char cmp_msg[1024]; | |
| 5074 | |
| 5075 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 5076 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 5077 | |
| 5078 testStartSymbol("test_microqr_input", &symbol); | |
| 5079 | |
| 5080 for (i = 0; i < data_size; i++) { | |
| 5081 | |
| 5082 if (testContinue(p_ctx, i)) continue; | |
| 5083 | |
| 5084 symbol = ZBarcode_Create(); | |
| 5085 assert_nonnull(symbol, "Symbol not created\n"); | |
| 5086 | |
| 5087 debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ | |
| 5088 | |
| 5089 length = testUtilSetSymbol(symbol, BARCODE_MICROQR, data[i].input_mode, -1 /*eci*/, -1 /*option_1*/, -1, data[i].option_3, -1 /*output_options*/, data[i].data, -1, debug); | |
| 5090 | |
| 5091 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 5092 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 5093 | |
| 5094 if (p_ctx->generate) { | |
| 5095 printf(" /*%3d*/ { %s, %s, \"%s\", %s, \"%s\", %d, %d, \"%s\" },\n", | |
| 5096 i, testUtilInputModeName(data[i].input_mode), | |
| 5097 testUtilOption3Name(BARCODE_MICROQR, data[i].option_3), | |
| 5098 testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), | |
| 5099 testUtilErrorName(data[i].ret), symbol->errtxt, data[i].bwipp_cmp, data[i].zxingcpp_cmp, data[i].comment); | |
| 5100 } else { | |
| 5101 assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); | |
| 5102 | |
| 5103 if (ret < ZINT_ERROR) { | |
| 5104 if (do_bwipp && testUtilCanBwipp(i, symbol, -1, -1, data[i].option_3, debug)) { | |
| 5105 if (!data[i].bwipp_cmp) { | |
| 5106 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 5107 } else { | |
| 5108 char modules_dump[17 * 17 + 1]; | |
| 5109 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 5110 ret = testUtilBwipp(i, symbol, -1, -1, data[i].option_3, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); | |
| 5111 assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 5112 | |
| 5113 ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); | |
| 5114 assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", | |
| 5115 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); | |
| 5116 } | |
| 5117 } | |
| 5118 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { | |
| 5119 if (!data[i].zxingcpp_cmp) { | |
| 5120 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not ZXing-C++ compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 5121 } else { | |
| 5122 int cmp_len, ret_len; | |
| 5123 char modules_dump[17 * 17 + 1]; | |
| 5124 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 5125 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 5126 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 5127 | |
| 5128 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); | |
| 5129 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 5130 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 5131 } | |
| 5132 } | |
| 5133 } | |
| 5134 } | |
| 5135 | |
| 5136 ZBarcode_Delete(symbol); | |
| 5137 } | |
| 5138 | |
| 5139 testFinish(); | |
| 5140 } | |
| 5141 | |
| 5142 /* Check MICROQR padding (4-bit final codeword for M1 and M3 in particular) */ | |
| 5143 static void test_microqr_padding(const testCtx *const p_ctx) { | |
| 5144 int debug = p_ctx->debug; | |
| 5145 | |
| 5146 struct item { | |
| 5147 int option_1; | |
| 5148 char *data; | |
| 5149 int ret; | |
| 5150 char *expected; | |
| 5151 char *comment; | |
| 5152 }; | |
| 5153 static const struct item data[] = { | |
| 5154 /* 0*/ { -1, "1", 0, "22 00 00 (20)", "M1, bits left 13" }, | |
| 5155 /* 1*/ { -1, "12", 0, "43 00 00 (20)", "M1, bits left 10" }, | |
| 5156 /* 2*/ { -1, "123", 0, "63 D8 00 (20)", "M1, bits left 7" }, | |
| 5157 /* 3*/ { -1, "1234", 0, "83 DA 00 (20)", "M1, bits left 3" }, | |
| 5158 /* 4*/ { -1, "12345", 0, "A3 DA D0 (20)", "M1, bits left 0" }, | |
| 5159 /* 5*/ { 1, "123456", 0, "30 F6 E4 00 EC (40)", "M2-L, bits left 15" }, | |
| 5160 /* 6*/ { 1, "1234567", 0, "38 F6 E4 38 00 (40)", "M2-L, bits left 11" }, | |
| 5161 /* 7*/ { 1, "12345678", 0, "40 F6 E4 4E 00 (40)", "M2-L, bits left 8" }, | |
| 5162 /* 8*/ { 1, "123456789", 0, "48 F6 E4 62 A0 (40)", "M2-L, bits left 5" }, | |
| 5163 /* 9*/ { 1, "1234567890", 0, "50 F6 E4 62 A0 (40)", "M2-L, bits left 1" }, | |
| 5164 /* 10*/ { 2, "1234", 0, "20 F6 80 EC (32)", "M2-M, bits left 13" }, | |
| 5165 /* 11*/ { 2, "123456", 0, "30 F6 E4 00 (32)", "M2-M, bits left 7" }, | |
| 5166 /* 12*/ { 2, "1234567", 0, "38 F6 E4 38 (32)", "M2-M, bits left 3" }, | |
| 5167 /* 13*/ { 2, "12345678", 0, "40 F6 E4 4E (32)", "M2-M, bits left 0" }, | |
| 5168 /* 14*/ { 1, "ABCDEF", 0, "E3 9A 8A 54 28 (40)", "M2-L, bits left 3" }, | |
| 5169 /* 15*/ { 2, "ABCDE", 0, "D3 9A 8A 4E (32)", "M2-M, bits left 0" }, | |
| 5170 /* 16*/ { 1, "1234567890123456789", 0, "26 3D B9 18 A8 18 AC D4 D2 00 00 (84)", "M3-L, bits left 13" }, | |
| 5171 /* 17*/ { 1, "12345678901234567890", 0, "28 3D B9 18 A8 18 AC D4 D6 80 00 (84)", "M3-L, bits left 10" }, | |
| 5172 /* 18*/ { 1, "123456789012345678901", 0, "2A 3D B9 18 A8 18 AC D4 DC 28 00 (84)", "M3-L, bits left 7" }, | |
| 5173 /* 19*/ { 1, "1234567890123456789012", 0, "2C 3D B9 18 A8 18 AC D4 DC 29 00 (84)", "M3-L, bits left 3" }, | |
| 5174 /* 20*/ { 1, "12345678901234567890123", 0, "2E 3D B9 18 A8 18 AC D4 DC 29 70 (84)", "M3-L, bits left 0" }, | |
| 5175 /* 21*/ { 2, "1234567890", 0, "14 3D B9 18 A8 00 EC 11 00 (68)", "M3-M, bits left 27" }, | |
| 5176 /* 22*/ { 2, "123456789012345678", 0, "24 3D B9 18 A8 18 AC D4 C0 (68)", "M3-M, bits left 1" }, | |
| 5177 /* 23*/ { 1, "ABCDEFGHIJKLMN", 0, "78 E6 A2 95 0A B8 59 EB 99 7E A0 (84)", "M3-L, bits left 1" }, | |
| 5178 /* 24*/ { 2, "ABCDEFGHIJK", 0, "6C E6 A2 95 0A B8 59 EA 80 (68)", "M3-M, bits left 1" }, | |
| 5179 /* 25*/ { 1, "1234567890123456789012345678", 0, "0E 0F 6E 46 2A 06 2B 35 37 0A 75 46 F0 00 EC 11 (128)", "M4-L, bits left 25" }, | |
| 5180 /* 26*/ { 1, "123456789012345678901234567890", 0, "0F 0F 6E 46 2A 06 2B 35 37 0A 75 46 FB D0 00 EC (128)", "M4-L, bits left 19" }, | |
| 5181 /* 27*/ { 1, "1234567890123456789012345678901234", 0, "11 0F 6E 46 2A 06 2B 35 37 0A 75 46 FB D0 F6 80 (128)", "M4-L, bits left 5" }, | |
| 5182 /* 28*/ { 1, "12345678901234567890123456789012345", 0, "11 8F 6E 46 2A 06 2B 35 37 0A 75 46 FB D0 F6 B4 (128)", "M4-L, bits left 1" }, | |
| 5183 /* 29*/ { 1, "123456789012345ABCDEFGHIJK", 0, "07 8F 6E 46 2A 06 2B 25 67 35 14 A8 55 C2 CF 54 (128)", "M4-L, bits left 0" }, | |
| 5184 /* 30*/ { 2, "123456789012345678901234567890", 0, "0F 0F 6E 46 2A 06 2B 35 37 0A 75 46 FB D0 (112)", "M4-M, bits left 3" }, | |
| 5185 /* 31*/ { 3, "123456789012345678901", 0, "0A 8F 6E 46 2A 06 2B 35 37 0A (80)", "M4-Q, bits left 1" }, | |
| 5186 /* 32*/ { 1, "ABCDEFGHIJKLMNOPQRSTU", 0, "35 39 A8 A5 42 AE 16 7A E6 5F AC 51 95 B4 25 E0 (128)", "M4-L, bits left 4" }, | |
| 5187 /* 33*/ { 2, "ABCDEFGHIJKLMNOPQR", 0, "32 39 A8 A5 42 AE 16 7A E6 5F AC 51 95 A0 (112)", "M4-M, bits left 5" }, | |
| 5188 /* 34*/ { 3, "ABCDEFGHIJKLM", 0, "2D 39 A8 A5 42 AE 16 7A E6 56 (80)", "M4-Q, bits left 0" }, | |
| 5189 }; | |
| 5190 const int data_size = ARRAY_SIZE(data); | |
| 5191 int i, length, ret; | |
| 5192 struct zint_symbol *symbol = NULL; | |
| 5193 | |
| 5194 char escaped[4096]; | |
| 5195 char cmp_buf[32768]; | |
| 5196 char cmp_msg[1024]; | |
| 5197 | |
| 5198 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 5199 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 5200 | |
| 5201 testStartSymbol("test_microqr_padding", &symbol); | |
| 5202 | |
| 5203 for (i = 0; i < data_size; i++) { | |
| 5204 | |
| 5205 if (testContinue(p_ctx, i)) continue; | |
| 5206 | |
| 5207 symbol = ZBarcode_Create(); | |
| 5208 assert_nonnull(symbol, "Symbol not created\n"); | |
| 5209 | |
| 5210 symbol->symbology = BARCODE_MICROQR; | |
| 5211 symbol->input_mode = UNICODE_MODE; | |
| 5212 if (data[i].option_1 != -1) { | |
| 5213 symbol->option_1 = data[i].option_1; | |
| 5214 } | |
| 5215 symbol->debug = ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ | |
| 5216 symbol->debug |= debug; | |
| 5217 | |
| 5218 length = (int) strlen(data[i].data); | |
| 5219 | |
| 5220 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 5221 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 5222 | |
| 5223 if (p_ctx->generate) { | |
| 5224 printf(" /*%3d*/ { %d, \"%s\", %s, \"%s\", \"%s\" },\n", | |
| 5225 i, data[i].option_1, testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), | |
| 5226 testUtilErrorName(data[i].ret), symbol->errtxt, data[i].comment); | |
| 5227 } else { | |
| 5228 assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); | |
| 5229 | |
| 5230 if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, -1, -1, debug)) { | |
| 5231 char modules_dump[17 * 17 + 1]; | |
| 5232 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 5233 ret = testUtilBwipp(i, symbol, data[i].option_1, -1, -1, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); | |
| 5234 assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 5235 | |
| 5236 ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); | |
| 5237 assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", | |
| 5238 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); | |
| 5239 } | |
| 5240 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { | |
| 5241 int cmp_len, ret_len; | |
| 5242 char modules_dump[17 * 17 + 1]; | |
| 5243 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 5244 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 5245 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 5246 | |
| 5247 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); | |
| 5248 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 5249 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 5250 } | |
| 5251 } | |
| 5252 ZBarcode_Delete(symbol); | |
| 5253 } | |
| 5254 | |
| 5255 testFinish(); | |
| 5256 } | |
| 5257 | |
| 5258 static void test_microqr_optimize(const testCtx *const p_ctx) { | |
| 5259 int debug = p_ctx->debug; | |
| 5260 | |
| 5261 struct item { | |
| 5262 int input_mode; | |
| 5263 int option_1; | |
| 5264 int option_2; | |
| 5265 int option_3; | |
| 5266 char *data; | |
| 5267 int ret; | |
| 5268 char *expected; | |
| 5269 int bwipp_cmp; | |
| 5270 int zxingcpp_cmp; | |
| 5271 char *comment; | |
| 5272 }; | |
| 5273 static const struct item data[] = { | |
| 5274 /* 0*/ { UNICODE_MODE, -1, -1, -1, "1", 0, "22 00 00 (20)", 1, 1, "N1" }, | |
| 5275 /* 1*/ { UNICODE_MODE, 1, 2, -1, "A123", 0, "92 86 3D 80 EC (40)", 1, 1, "A1 N3" }, | |
| 5276 /* 2*/ { UNICODE_MODE, 1, -1, -1, "AAAAAA", 0, "E3 98 73 0E 60 (40)", 1, 1, "A6" }, | |
| 5277 /* 3*/ { UNICODE_MODE, 1, -1, -1, "AA123456", 0, "A3 98 61 ED C8 (40)", 1, 1, "A2 N6" }, | |
| 5278 /* 4*/ { UNICODE_MODE, 1, 3, -1, "01a", 0, "04 06 16 10 00 EC 11 EC 11 EC 00 (84)", 1, 1, "N3 B1" }, | |
| 5279 /* 5*/ { UNICODE_MODE, 1, 4, -1, "01a", 0, "43 30 31 61 00 00 EC 11 EC 11 EC 11 EC 11 EC 11 (128)", 1, 1, "B3" }, | |
| 5280 /* 6*/ { UNICODE_MODE, 1, -1, -1, "こんwa、αβ", 0, "46 82 B1 82 F1 77 61 66 00 10 FF 88 00 00 EC 11 (128)", 1, 1, "B6 K3" }, | |
| 5281 /* 7*/ { UNICODE_MODE, 1, -1, -1, "こんにwa、αβ", 0, "66 13 10 B8 85 25 09 DD 85 98 00 43 FE 20 00 00 (128)", 1, 1, "K3 B2 K3" }, | |
| 5282 /* 8*/ { UNICODE_MODE, 1, 3, -1, "こんAB123\177", 0, "D0 4C 42 E2 91 CD 06 3D C2 FE 00 (84)", 0, 1, "K2 A2 N3 B1; BWIPP different encodation (K2 A5 B1)" }, | |
| 5283 /* 9*/ { UNICODE_MODE, 1, 4, -1, "こんAB123\177", 0, "64 13 10 B8 92 9C D0 5E 1A 0B F8 00 EC 11 EC 11 (128)", 1, 1, "K2 A5 B1" }, | |
| 5284 /* 10*/ { DATA_MODE, 1, -1, -1, "\223\137", 0, "8A 4D 7C 00 EC 11 EC 11 EC 11 00 (84)", 0, 0, "B2; BWIPP uses Kanji (ZINT_FULL_MULTIBYTE) mode, see below); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 5285 /* 11*/ { DATA_MODE, 1, -1, ZINT_FULL_MULTIBYTE, "\223\137", 0, "CB 67 C0 00 EC 11 EC 11 EC 11 00 (84)", 1, 1, "K1" }, | |
| 5286 /* 12*/ { DATA_MODE, 1, -1, ZINT_FULL_MULTIBYTE | (1 << 8), "\223\137", 0, "CB 67 C0 00 EC 11 EC 11 EC 11 00 (84)", 1, 1, "K1" }, | |
| 5287 }; | |
| 5288 const int data_size = ARRAY_SIZE(data); | |
| 5289 int i, length, ret; | |
| 5290 struct zint_symbol *symbol = NULL; | |
| 5291 | |
| 5292 char escaped[4096]; | |
| 5293 char cmp_buf[32768]; | |
| 5294 char cmp_msg[1024]; | |
| 5295 | |
| 5296 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 5297 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 5298 | |
| 5299 testStartSymbol("test_microqr_optimize", &symbol); | |
| 5300 | |
| 5301 for (i = 0; i < data_size; i++) { | |
| 5302 | |
| 5303 if (testContinue(p_ctx, i)) continue; | |
| 5304 | |
| 5305 symbol = ZBarcode_Create(); | |
| 5306 assert_nonnull(symbol, "Symbol not created\n"); | |
| 5307 | |
| 5308 debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ | |
| 5309 | |
| 5310 length = testUtilSetSymbol(symbol, BARCODE_MICROQR, data[i].input_mode, -1 /*eci*/, data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/, data[i].data, -1, debug); | |
| 5311 | |
| 5312 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 5313 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 5314 | |
| 5315 if (p_ctx->generate) { | |
| 5316 printf(" /*%3d*/ { %s, %d, %d, %s, \"%s\", %s, \"%s\", %d, %d, \"%s\" },\n", | |
| 5317 i, testUtilInputModeName(data[i].input_mode), data[i].option_1, data[i].option_2, | |
| 5318 testUtilOption3Name(BARCODE_MICROQR, data[i].option_3), | |
| 5319 testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), | |
| 5320 testUtilErrorName(data[i].ret), symbol->errtxt, data[i].bwipp_cmp, data[i].zxingcpp_cmp, data[i].comment); | |
| 5321 } else { | |
| 5322 assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); | |
| 5323 | |
| 5324 if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, debug)) { | |
| 5325 if (!data[i].bwipp_cmp) { | |
| 5326 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 5327 } else { | |
| 5328 char modules_dump[17 * 17 + 1]; | |
| 5329 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 5330 ret = testUtilBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); | |
| 5331 assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 5332 | |
| 5333 ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); | |
| 5334 assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", | |
| 5335 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); | |
| 5336 } | |
| 5337 } | |
| 5338 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { | |
| 5339 if (!data[i].zxingcpp_cmp) { | |
| 5340 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not ZXing-C++ compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 5341 } else { | |
| 5342 int cmp_len, ret_len; | |
| 5343 char modules_dump[17 * 17 + 1]; | |
| 5344 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 5345 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 5346 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 5347 | |
| 5348 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); | |
| 5349 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 5350 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 5351 } | |
| 5352 } | |
| 5353 } | |
| 5354 | |
| 5355 ZBarcode_Delete(symbol); | |
| 5356 } | |
| 5357 | |
| 5358 testFinish(); | |
| 5359 } | |
| 5360 | |
| 5361 static void test_microqr_encode(const testCtx *const p_ctx) { | |
| 5362 int debug = p_ctx->debug; | |
| 5363 | |
| 5364 struct item { | |
| 5365 int input_mode; | |
| 5366 int option_1; | |
| 5367 int option_2; | |
| 5368 int option_3; | |
| 5369 char *data; | |
| 5370 int ret; | |
| 5371 | |
| 5372 int expected_rows; | |
| 5373 int expected_width; | |
| 5374 int bwipp_cmp; | |
| 5375 char *comment; | |
| 5376 char *expected; | |
| 5377 }; | |
| 5378 static const struct item data[] = { | |
| 5379 /* 0*/ { UNICODE_MODE, 1, -1, -1, "01234567", 0, 13, 13, 1, "ISO 18004 Figure 2 (and I.2) (mask 01)", | |
| 5380 "1111111010101" | |
| 5381 "1000001011101" | |
| 5382 "1011101001101" | |
| 5383 "1011101001111" | |
| 5384 "1011101011100" | |
| 5385 "1000001010001" | |
| 5386 "1111111001111" | |
| 5387 "0000000001100" | |
| 5388 "1101000010001" | |
| 5389 "0110101010101" | |
| 5390 "1110011111110" | |
| 5391 "0001010000110" | |
| 5392 "1110100110111" | |
| 5393 }, | |
| 5394 /* 1*/ { UNICODE_MODE, 2, -1, -1, "12345", 0, 13, 13, 1, "ISO 18004 Figure 38 (mask 00)", | |
| 5395 "1111111010101" | |
| 5396 "1000001010000" | |
| 5397 "1011101011101" | |
| 5398 "1011101000011" | |
| 5399 "1011101001110" | |
| 5400 "1000001010001" | |
| 5401 "1111111000101" | |
| 5402 "0000000001011" | |
| 5403 "1110011110000" | |
| 5404 "0111100101100" | |
| 5405 "1110000001110" | |
| 5406 "0100100010101" | |
| 5407 "1111111010011" | |
| 5408 }, | |
| 5409 /* 2*/ { UNICODE_MODE, 2, -1, 1 << 8, "12345", 0, 13, 13, 1, "ISO 18004 Figure 38, explicit mask 00", | |
| 5410 "1111111010101" | |
| 5411 "1000001010000" | |
| 5412 "1011101011101" | |
| 5413 "1011101000011" | |
| 5414 "1011101001110" | |
| 5415 "1000001010001" | |
| 5416 "1111111000101" | |
| 5417 "0000000001011" | |
| 5418 "1110011110000" | |
| 5419 "0111100101100" | |
| 5420 "1110000001110" | |
| 5421 "0100100010101" | |
| 5422 "1111111010011" | |
| 5423 }, | |
| 5424 /* 3*/ { UNICODE_MODE, 2, -1, ZINT_FULL_MULTIBYTE | 2 << 8, "12345", 0, 13, 13, 1, "Explicit mask 01", | |
| 5425 "1111111010101" | |
| 5426 "1000001000001" | |
| 5427 "1011101001100" | |
| 5428 "1011101011101" | |
| 5429 "1011101000000" | |
| 5430 "1000001000000" | |
| 5431 "1111111010100" | |
| 5432 "0000000000101" | |
| 5433 "1110001011110" | |
| 5434 "0001101011101" | |
| 5435 "1000001111111" | |
| 5436 "0101010011011" | |
| 5437 "1110001011101" | |
| 5438 }, | |
| 5439 /* 4*/ { UNICODE_MODE, 2, -1, 3 << 8, "12345", 0, 13, 13, 1, "Explicit mask 10", | |
| 5440 "1111111010101" | |
| 5441 "1000001010001" | |
| 5442 "1011101001111" | |
| 5443 "1011101010110" | |
| 5444 "1011101011010" | |
| 5445 "1000001010110" | |
| 5446 "1111111010101" | |
| 5447 "0000000011010" | |
| 5448 "1110110110010" | |
| 5449 "0101001111001" | |
| 5450 "1010100101010" | |
| 5451 "0100011010010" | |
| 5452 "1111111010011" | |
| 5453 }, | |
| 5454 /* 5*/ { UNICODE_MODE, 2, -1, ZINT_FULL_MULTIBYTE | 4 << 8, "12345", 0, 13, 13, 1, "Explicit mask 11", | |
| 5455 "1111111010101" | |
| 5456 "1000001001110" | |
| 5457 "1011101010101" | |
| 5458 "1011101001001" | |
| 5459 "1011101010000" | |
| 5460 "1000001001001" | |
| 5461 "1111111001111" | |
| 5462 "0000000010101" | |
| 5463 "1110100011000" | |
| 5464 "0010110000110" | |
| 5465 "1111110000000" | |
| 5466 "0011100101101" | |
| 5467 "1010101111001" | |
| 5468 }, | |
| 5469 /* 6*/ { UNICODE_MODE, 2, -1, 5 << 8, "12345", 0, 13, 13, 1, "Mask > 4 ignored", | |
| 5470 "1111111010101" | |
| 5471 "1000001010000" | |
| 5472 "1011101011101" | |
| 5473 "1011101000011" | |
| 5474 "1011101001110" | |
| 5475 "1000001010001" | |
| 5476 "1111111000101" | |
| 5477 "0000000001011" | |
| 5478 "1110011110000" | |
| 5479 "0111100101100" | |
| 5480 "1110000001110" | |
| 5481 "0100100010101" | |
| 5482 "1111111010011" | |
| 5483 }, | |
| 5484 /* 7*/ { UNICODE_MODE, -1, -1, -1, "12345", 0, 11, 11, 1, "Max capacity M1 5 numbers", | |
| 5485 "11111110101" | |
| 5486 "10000010110" | |
| 5487 "10111010100" | |
| 5488 "10111010000" | |
| 5489 "10111010111" | |
| 5490 "10000010011" | |
| 5491 "11111110100" | |
| 5492 "00000000011" | |
| 5493 "11001110011" | |
| 5494 "01010001100" | |
| 5495 "11110000011" | |
| 5496 }, | |
| 5497 /* 8*/ { UNICODE_MODE, -1, -1, -1, "1234567890", 0, 13, 13, 1, "Max capacity M2-L 10 numbers", | |
| 5498 "1111111010101" | |
| 5499 "1000001010110" | |
| 5500 "1011101010001" | |
| 5501 "1011101011011" | |
| 5502 "1011101000110" | |
| 5503 "1000001011101" | |
| 5504 "1111111010011" | |
| 5505 "0000000011101" | |
| 5506 "1101101010100" | |
| 5507 "0111100000010" | |
| 5508 "1111001001101" | |
| 5509 "0110010100110" | |
| 5510 "1001101111111" | |
| 5511 }, | |
| 5512 /* 9*/ { UNICODE_MODE, 2, -1, -1, "12345678", 0, 13, 13, 1, "Max capacity M2-M 8 numbers", | |
| 5513 "1111111010101" | |
| 5514 "1000001011000" | |
| 5515 "1011101011101" | |
| 5516 "1011101001101" | |
| 5517 "1011101001000" | |
| 5518 "1000001010001" | |
| 5519 "1111111000001" | |
| 5520 "0000000000111" | |
| 5521 "1110011110000" | |
| 5522 "0111000000000" | |
| 5523 "1110010000111" | |
| 5524 "0101011001100" | |
| 5525 "1100110101001" | |
| 5526 }, | |
| 5527 /* 10*/ { UNICODE_MODE, -1, -1, -1, "12345678901234567890123", 0, 15, 15, 1, "Max capacity M3-L 23 numbers", | |
| 5528 "111111101010101" | |
| 5529 "100000100110110" | |
| 5530 "101110100011111" | |
| 5531 "101110100100110" | |
| 5532 "101110101101010" | |
| 5533 "100000101010111" | |
| 5534 "111111101111110" | |
| 5535 "000000001000010" | |
| 5536 "111101100000100" | |
| 5537 "011110110100111" | |
| 5538 "110111110001111" | |
| 5539 "001111011000101" | |
| 5540 "110000101011000" | |
| 5541 "010011000101101" | |
| 5542 "100111010001111" | |
| 5543 }, | |
| 5544 /* 11*/ { UNICODE_MODE, 2, -1, -1, "123456789012345678", 0, 15, 15, 1, "Max capacity M3-L 18 numbers", | |
| 5545 "111111101010101" | |
| 5546 "100000100010110" | |
| 5547 "101110101101111" | |
| 5548 "101110101110110" | |
| 5549 "101110101011010" | |
| 5550 "100000101000111" | |
| 5551 "111111100001110" | |
| 5552 "000000001110010" | |
| 5553 "100001101110100" | |
| 5554 "010101111000111" | |
| 5555 "101010111001111" | |
| 5556 "001101001000100" | |
| 5557 "110001101011001" | |
| 5558 "001110000101101" | |
| 5559 "110011111001111" | |
| 5560 }, | |
| 5561 /* 12*/ { UNICODE_MODE, -1, -1, -1, "12345678901234567890123456789012345", 0, 17, 17, 1, "Max capacity M4-L 35 numbers", | |
| 5562 "11111110101010101" | |
| 5563 "10000010111010001" | |
| 5564 "10111010000011001" | |
| 5565 "10111010101000100" | |
| 5566 "10111010000011001" | |
| 5567 "10000010111100001" | |
| 5568 "11111110101011100" | |
| 5569 "00000000000111001" | |
| 5570 "10010111011011001" | |
| 5571 "00101001011010011" | |
| 5572 "11101001100101000" | |
| 5573 "00100011110000100" | |
| 5574 "11101101010110010" | |
| 5575 "01100001101110010" | |
| 5576 "11100000000010011" | |
| 5577 "01110010010111010" | |
| 5578 "11001001111110111" | |
| 5579 }, | |
| 5580 /* 13*/ { UNICODE_MODE, 2, -1, -1, "123456789012345678901234567890", 0, 17, 17, 1, "Max capacity M4-M 30 numbers", | |
| 5581 "11111110101010101" | |
| 5582 "10000010011010001" | |
| 5583 "10111010000011001" | |
| 5584 "10111010001000100" | |
| 5585 "10111010100011001" | |
| 5586 "10000010011100001" | |
| 5587 "11111110001011100" | |
| 5588 "00000000000111001" | |
| 5589 "10100101011011001" | |
| 5590 "01000111000010011" | |
| 5591 "11001000110101000" | |
| 5592 "00101011111000100" | |
| 5593 "10100001001110011" | |
| 5594 "00000001010110011" | |
| 5595 "11010010101010000" | |
| 5596 "00001111000111000" | |
| 5597 "11100110111110111" | |
| 5598 }, | |
| 5599 /* 14*/ { UNICODE_MODE, 3, -1, -1, "123456789012345678901", 0, 17, 17, 1, "Max capacity M4-Q 21 numbers", | |
| 5600 "11111110101010101" | |
| 5601 "10000010010101101" | |
| 5602 "10111010010010101" | |
| 5603 "10111010100010111" | |
| 5604 "10111010000101010" | |
| 5605 "10000010110001101" | |
| 5606 "11111110010010000" | |
| 5607 "00000000101101010" | |
| 5608 "10110001110101010" | |
| 5609 "00000010001001111" | |
| 5610 "10011101011110100" | |
| 5611 "00001100000100111" | |
| 5612 "11111001110010001" | |
| 5613 "01110100011101101" | |
| 5614 "11110001010001110" | |
| 5615 "00000001110011011" | |
| 5616 "11011110011010100" | |
| 5617 }, | |
| 5618 /* 15*/ { UNICODE_MODE, 1, -1, -1, "点茗テ点茗テ点茗テ", 0, 17, 17, 1, "Max capacity M4-L 9 Kanji", | |
| 5619 "11111110101010101" | |
| 5620 "10000010111110010" | |
| 5621 "10111010000011101" | |
| 5622 "10111010110011010" | |
| 5623 "10111010001011001" | |
| 5624 "10000010110110110" | |
| 5625 "11111110101100100" | |
| 5626 "00000000010011011" | |
| 5627 "10010111011110100" | |
| 5628 "00001010100100110" | |
| 5629 "11101010001000010" | |
| 5630 "00010111101000010" | |
| 5631 "11000100010110000" | |
| 5632 "01001111010011101" | |
| 5633 "10000100101100011" | |
| 5634 "01011000000010111" | |
| 5635 "11001111011101001" | |
| 5636 }, | |
| 5637 /* 16*/ { UNICODE_MODE | ESCAPE_MODE, 1, -1, -1, "P-5-B223G846\015", 0, 17, 17, 1, "Ticket #241, 2.6.7 dropping off last character if mode different (MR #21)", | |
| 5638 "11111110101010101" | |
| 5639 "10000010100001100" | |
| 5640 "10111010011110010" | |
| 5641 "10111010100000101" | |
| 5642 "10111010011011111" | |
| 5643 "10000010111110100" | |
| 5644 "11111110110111101" | |
| 5645 "00000000011001000" | |
| 5646 "10010111011010100" | |
| 5647 "01110111000001110" | |
| 5648 "10100011001110111" | |
| 5649 "00011111000101010" | |
| 5650 "10011111101100110" | |
| 5651 "01110000111010100" | |
| 5652 "11001010110000000" | |
| 5653 "00011110011010001" | |
| 5654 "11101010111111111" | |
| 5655 }, | |
| 5656 /* 17*/ { UNICODE_MODE, 1, 2, -1, "1ABCDE", 0, 13, 13, 1, "M2-L numeric/alpha mix", | |
| 5657 "1111111010101" | |
| 5658 "1000001011100" | |
| 5659 "1011101000101" | |
| 5660 "1011101001101" | |
| 5661 "1011101010111" | |
| 5662 "1000001010100" | |
| 5663 "1111111000001" | |
| 5664 "0000000001011" | |
| 5665 "1101000010011" | |
| 5666 "0001000110001" | |
| 5667 "1111101011010" | |
| 5668 "0010101010111" | |
| 5669 "1111101111110" | |
| 5670 }, | |
| 5671 /* 18*/ { UNICODE_MODE, 1, 2, -1, "ABCDE1", 0, 13, 13, 1, "M2-L numeric/alpha mix", | |
| 5672 "1111111010101" | |
| 5673 "1000001010111" | |
| 5674 "1011101011110" | |
| 5675 "1011101011010" | |
| 5676 "1011101001100" | |
| 5677 "1000001011101" | |
| 5678 "1111111011000" | |
| 5679 "0000000011000" | |
| 5680 "1101101010110" | |
| 5681 "0000100110001" | |
| 5682 "1111011100101" | |
| 5683 "0101110111101" | |
| 5684 "1110011101110" | |
| 5685 }, | |
| 5686 /* 19*/ { UNICODE_MODE, 1, 2, -1, "12ABCD", 0, 13, 13, 1, "M2-L numeric/alpha mix", | |
| 5687 "1111111010101" | |
| 5688 "1000001001011" | |
| 5689 "1011101010111" | |
| 5690 "1011101010011" | |
| 5691 "1011101010101" | |
| 5692 "1000001001001" | |
| 5693 "1111111011100" | |
| 5694 "0000000000110" | |
| 5695 "1101010111101" | |
| 5696 "0001111001000" | |
| 5697 "1011011110011" | |
| 5698 "0010110100001" | |
| 5699 "1110110110100" | |
| 5700 }, | |
| 5701 /* 20*/ { UNICODE_MODE, 1, 2, -1, "ABCD12", 0, 13, 13, 1, "M2-L numeric/alpha mix", | |
| 5702 "1111111010101" | |
| 5703 "1000001001001" | |
| 5704 "1011101011110" | |
| 5705 "1011101010000" | |
| 5706 "1011101010110" | |
| 5707 "1000001001001" | |
| 5708 "1111111010010" | |
| 5709 "0000000000110" | |
| 5710 "1101010111110" | |
| 5711 "0111000001111" | |
| 5712 "1111100101111" | |
| 5713 "0101111000101" | |
| 5714 "1101101001100" | |
| 5715 }, | |
| 5716 /* 21*/ { UNICODE_MODE, 1, 2, -1, "123ABC", 0, 13, 13, 1, "M2-L numeric/alpha mix", | |
| 5717 "1111111010101" | |
| 5718 "1000001000011" | |
| 5719 "1011101010001" | |
| 5720 "1011101011001" | |
| 5721 "1011101011101" | |
| 5722 "1000001001111" | |
| 5723 "1111111011101" | |
| 5724 "0000000000011" | |
| 5725 "1101010111100" | |
| 5726 "0000111100000" | |
| 5727 "1010000100110" | |
| 5728 "0100000001110" | |
| 5729 "1011111101011" | |
| 5730 }, | |
| 5731 /* 22*/ { UNICODE_MODE, 1, 2, -1, "1234ABC", 0, 13, 13, 1, "M2-L numeric/alpha mix", | |
| 5732 "1111111010101" | |
| 5733 "1000001010111" | |
| 5734 "1011101011001" | |
| 5735 "1011101011000" | |
| 5736 "1011101001100" | |
| 5737 "1000001010001" | |
| 5738 "1111111010111" | |
| 5739 "0000000010001" | |
| 5740 "1101101010100" | |
| 5741 "0011010001010" | |
| 5742 "1100001001001" | |
| 5743 "0100110000101" | |
| 5744 "1111010110101" | |
| 5745 }, | |
| 5746 /* 23*/ { UNICODE_MODE, 1, 2, -1, "ABC1234", 0, 13, 13, 1, "M2-L numeric/alpha mix", | |
| 5747 "1111111010101" | |
| 5748 "1000001000010" | |
| 5749 "1011101011111" | |
| 5750 "1011101011001" | |
| 5751 "1011101010001" | |
| 5752 "1000001000101" | |
| 5753 "1111111010010" | |
| 5754 "0000000001010" | |
| 5755 "1101010111110" | |
| 5756 "0000011110111" | |
| 5757 "1111000101111" | |
| 5758 "0100100011111" | |
| 5759 "1011111100110" | |
| 5760 }, | |
| 5761 /* 24*/ { UNICODE_MODE, 1, 2, -1, "12345AB", 0, 13, 13, 1, "M2-L numeric/alpha mix", | |
| 5762 "1111111010101" | |
| 5763 "1000001000101" | |
| 5764 "1011101011101" | |
| 5765 "1011101011111" | |
| 5766 "1011101011010" | |
| 5767 "1000001001001" | |
| 5768 "1111111011001" | |
| 5769 "0000000000111" | |
| 5770 "1101010111100" | |
| 5771 "0111110110000" | |
| 5772 "1000101000010" | |
| 5773 "0001111010101" | |
| 5774 "1001001101111" | |
| 5775 }, | |
| 5776 /* 25*/ { UNICODE_MODE, 1, 2, -1, "123456AB", 0, 13, 13, 1, "M2-L numeric/alpha mix", | |
| 5777 "1111111010101" | |
| 5778 "1000001001000" | |
| 5779 "1011101010101" | |
| 5780 "1011101010001" | |
| 5781 "1011101010100" | |
| 5782 "1000001001101" | |
| 5783 "1111111011101" | |
| 5784 "0000000001111" | |
| 5785 "1101010110100" | |
| 5786 "0110000100000" | |
| 5787 "1010001001011" | |
| 5788 "0100011101011" | |
| 5789 "1010110111111" | |
| 5790 }, | |
| 5791 /* 26*/ { UNICODE_MODE, 1, 2, -1, "AB123456", 0, 13, 13, 1, "M2-L numeric/alpha mix", | |
| 5792 "1111111010101" | |
| 5793 "1000001010000" | |
| 5794 "1011101010011" | |
| 5795 "1011101010111" | |
| 5796 "1011101001011" | |
| 5797 "1000001010101" | |
| 5798 "1111111010100" | |
| 5799 "0000000011000" | |
| 5800 "1101101010110" | |
| 5801 "0000111111101" | |
| 5802 "1000100111101" | |
| 5803 "0000010110101" | |
| 5804 "1101001101000" | |
| 5805 }, | |
| 5806 /* 27*/ { UNICODE_MODE, 1, 3, -1, "ABCDEFGHIJKLM1", 0, 15, 15, 1, "M3-L numeric/alpha mix", | |
| 5807 "111111101010101" | |
| 5808 "100000101100010" | |
| 5809 "101110100100101" | |
| 5810 "101110100011011" | |
| 5811 "101110100010111" | |
| 5812 "100000100010110" | |
| 5813 "111111101110000" | |
| 5814 "000000000011101" | |
| 5815 "111110010000010" | |
| 5816 "001011101001111" | |
| 5817 "101111001010100" | |
| 5818 "000100011011011" | |
| 5819 "100011100001100" | |
| 5820 "000111010101111" | |
| 5821 "110010111100110" | |
| 5822 }, | |
| 5823 /* 28*/ { UNICODE_MODE, 1, 3, -1, "1ABCDEFGHIJKLM", 0, 15, 15, 1, "M3-L numeric/alpha mix", | |
| 5824 "111111101010101" | |
| 5825 "100000101100011" | |
| 5826 "101110100101101" | |
| 5827 "101110100101101" | |
| 5828 "101110100010000" | |
| 5829 "100000100011101" | |
| 5830 "111111101110000" | |
| 5831 "000000000001111" | |
| 5832 "111110010001001" | |
| 5833 "011111100110100" | |
| 5834 "101101010100111" | |
| 5835 "001010011011111" | |
| 5836 "111011111001100" | |
| 5837 "001000000001111" | |
| 5838 "101110101111110" | |
| 5839 }, | |
| 5840 /* 29*/ { UNICODE_MODE, 1, 3, -1, "1234567890123456789A", 0, 15, 15, 1, "M3-L numeric/alpha mix", | |
| 5841 "111111101010101" | |
| 5842 "100000100000110" | |
| 5843 "101110100011111" | |
| 5844 "101110100100110" | |
| 5845 "101110101101010" | |
| 5846 "100000101000111" | |
| 5847 "111111101101110" | |
| 5848 "000000001010010" | |
| 5849 "111101100110100" | |
| 5850 "011011010100111" | |
| 5851 "110000001001111" | |
| 5852 "000111010000101" | |
| 5853 "111101000011001" | |
| 5854 "000000100101101" | |
| 5855 "101101100001111" | |
| 5856 }, | |
| 5857 /* 30*/ { UNICODE_MODE, 1, 3, -1, "A1234567890123456789", 0, 15, 15, 1, "M3-L numeric/alpha mix", | |
| 5858 "111111101010101" | |
| 5859 "100000101010001" | |
| 5860 "101110101110111" | |
| 5861 "101110101011111" | |
| 5862 "101110101111111" | |
| 5863 "100000100000110" | |
| 5864 "111111100010010" | |
| 5865 "000000001011101" | |
| 5866 "111100110110111" | |
| 5867 "010100110000010" | |
| 5868 "111001111001101" | |
| 5869 "010010001101100" | |
| 5870 "110000111010101" | |
| 5871 "000011011000111" | |
| 5872 "111111101100010" | |
| 5873 }, | |
| 5874 /* 31*/ { UNICODE_MODE, 1, 3, -1, "ABCDEFGHIJKa", 0, 15, 15, 1, "M3-L alpha/byte mix", | |
| 5875 "111111101010101" | |
| 5876 "100000101110010" | |
| 5877 "101110100000101" | |
| 5878 "101110100101011" | |
| 5879 "101110100000111" | |
| 5880 "100000100010110" | |
| 5881 "111111101000000" | |
| 5882 "000000000111101" | |
| 5883 "111110010010010" | |
| 5884 "001001101001111" | |
| 5885 "101100011010100" | |
| 5886 "011010011111011" | |
| 5887 "110101000001110" | |
| 5888 "001011111101101" | |
| 5889 "110111010100110" | |
| 5890 }, | |
| 5891 /* 32*/ { UNICODE_MODE, 1, 3, -1, "aABCDEFGHIJK", 0, 15, 15, 1, "M3-L alpha/byte mix", | |
| 5892 "111111101010101" | |
| 5893 "100000100000001" | |
| 5894 "101110101110011" | |
| 5895 "101110101000010" | |
| 5896 "101110100111101" | |
| 5897 "100000101001011" | |
| 5898 "111111100101010" | |
| 5899 "000000000111101" | |
| 5900 "111111000011100" | |
| 5901 "001111011001101" | |
| 5902 "110110010001100" | |
| 5903 "011111111111110" | |
| 5904 "100011111111001" | |
| 5905 "000000111010011" | |
| 5906 "111010110000011" | |
| 5907 }, | |
| 5908 /* 33*/ { UNICODE_MODE, 1, 3, -1, "abcdefghA", 0, 15, 15, 1, "M3-L alpha/byte mix", | |
| 5909 "111111101010101" | |
| 5910 "100000100001011" | |
| 5911 "101110101111111" | |
| 5912 "101110101010011" | |
| 5913 "101110100000100" | |
| 5914 "100000101011100" | |
| 5915 "111111100110110" | |
| 5916 "000000000100001" | |
| 5917 "111111000111100" | |
| 5918 "000110011001101" | |
| 5919 "111011111110100" | |
| 5920 "011000110111010" | |
| 5921 "101101110000101" | |
| 5922 "000010001100010" | |
| 5923 "100011000101111" | |
| 5924 }, | |
| 5925 /* 34*/ { UNICODE_MODE, 1, 3, -1, "Aabcdefgh", 0, 15, 15, 1, "M3-L alpha/byte mix", | |
| 5926 "111111101010101" | |
| 5927 "100000100000011" | |
| 5928 "101110101111111" | |
| 5929 "101110101010011" | |
| 5930 "101110100101111" | |
| 5931 "100000101000000" | |
| 5932 "111111100100110" | |
| 5933 "000000000100001" | |
| 5934 "111111000001100" | |
| 5935 "000001011110101" | |
| 5936 "100011110110101" | |
| 5937 "010001110111010" | |
| 5938 "100101101100101" | |
| 5939 "010001110101110" | |
| 5940 "110101101101111" | |
| 5941 }, | |
| 5942 /* 35*/ { UNICODE_MODE, 2, 3, -1, "é", 0, 15, 15, 1, "M3-M byte (B1), bits left 54", | |
| 5943 "111111101010101" | |
| 5944 "100000101000101" | |
| 5945 "101110101011111" | |
| 5946 "101110101111010" | |
| 5947 "101110100111111" | |
| 5948 "100000100010011" | |
| 5949 "111111100001101" | |
| 5950 "000000000100100" | |
| 5951 "100010011101010" | |
| 5952 "000111100100111" | |
| 5953 "101101101000110" | |
| 5954 "010010011100000" | |
| 5955 "100011100101111" | |
| 5956 "001111011101000" | |
| 5957 "110100010100101" | |
| 5958 }, | |
| 5959 /* 36*/ { UNICODE_MODE, 1, 4, -1, "A1abcdefghijklm", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B15)", | |
| 5960 "11111110101010101" | |
| 5961 "10000010110110110" | |
| 5962 "10111010110001111" | |
| 5963 "10111010000000100" | |
| 5964 "10111010111010000" | |
| 5965 "10000010111111011" | |
| 5966 "11111110010101011" | |
| 5967 "00000000101001111" | |
| 5968 "10011101000110111" | |
| 5969 "01101100111101111" | |
| 5970 "10001101011010010" | |
| 5971 "00010000110101001" | |
| 5972 "10101100011011101" | |
| 5973 "01001101110000111" | |
| 5974 "10111111010111100" | |
| 5975 "01101110010001101" | |
| 5976 "11001111000011100" | |
| 5977 }, | |
| 5978 /* 37*/ { UNICODE_MODE, 1, 4, -1, "abcdefghijklmA1", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B15)", | |
| 5979 "11111110101010101" | |
| 5980 "10000010010100111" | |
| 5981 "10111010110110111" | |
| 5982 "10111010000111010" | |
| 5983 "10111010000111110" | |
| 5984 "10000010010000101" | |
| 5985 "11111110010110111" | |
| 5986 "00000000000111010" | |
| 5987 "10010010010110110" | |
| 5988 "01111101110110110" | |
| 5989 "10001111011110111" | |
| 5990 "00011011111111010" | |
| 5991 "11110100110111010" | |
| 5992 "00000001100010111" | |
| 5993 "10100000000110100" | |
| 5994 "01010111011111011" | |
| 5995 "10111101110110010" | |
| 5996 }, | |
| 5997 /* 38*/ { UNICODE_MODE, 1, 4, -1, "1Aabcdefghijklm", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B15)", | |
| 5998 "11111110101010101" | |
| 5999 "10000010110101010" | |
| 6000 "10111010010101011" | |
| 6001 "10111010101010001" | |
| 6002 "10111010010011001" | |
| 6003 "10000010110001010" | |
| 6004 "11111110110101011" | |
| 6005 "00000000001010000" | |
| 6006 "10010111000010001" | |
| 6007 "01101111110111010" | |
| 6008 "11111100110011011" | |
| 6009 "01010100011011011" | |
| 6010 "10110000011011111" | |
| 6011 "00001001110011011" | |
| 6012 "11011000010011000" | |
| 6013 "00101111011011000" | |
| 6014 "10110011001010101" | |
| 6015 }, | |
| 6016 /* 39*/ { UNICODE_MODE, 1, 4, -1, "abcdefghijklm1A", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B15)", | |
| 6017 "11111110101010101" | |
| 6018 "10000010110111011" | |
| 6019 "10111010010101011" | |
| 6020 "10111010111011001" | |
| 6021 "10111010011011101" | |
| 6022 "10000010110011001" | |
| 6023 "11111110110101011" | |
| 6024 "00000000011011001" | |
| 6025 "10010111001010101" | |
| 6026 "00001101100101010" | |
| 6027 "11100011000101011" | |
| 6028 "00000010100011001" | |
| 6029 "10110101101011001" | |
| 6030 "01001000110001011" | |
| 6031 "11100010011101000" | |
| 6032 "01000101100011000" | |
| 6033 "11110110101010001" | |
| 6034 }, | |
| 6035 /* 40*/ { UNICODE_MODE, 1, 4, -1, "A1Aabcdefghijkl", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B15)", | |
| 6036 "11111110101010101" | |
| 6037 "10000010110001010" | |
| 6038 "10111010010101011" | |
| 6039 "10111010101010000" | |
| 6040 "10111010001010101" | |
| 6041 "10000010110111010" | |
| 6042 "11111110110011011" | |
| 6043 "00000000001010011" | |
| 6044 "10010111010011011" | |
| 6045 "01111011010011010" | |
| 6046 "10001111010011011" | |
| 6047 "01001000001010000" | |
| 6048 "11110011000010001" | |
| 6049 "00111010110101011" | |
| 6050 "11111011010011000" | |
| 6051 "01010100111011000" | |
| 6052 "11100110011011101" | |
| 6053 }, | |
| 6054 /* 41*/ { UNICODE_MODE, 1, 4, -1, "abcdefghijklA1A", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B15)", | |
| 6055 "11111110101010101" | |
| 6056 "10000010110111011" | |
| 6057 "10111010010101011" | |
| 6058 "10111010111011001" | |
| 6059 "10111010011011101" | |
| 6060 "10000010110011001" | |
| 6061 "11111110111101011" | |
| 6062 "00000000000011001" | |
| 6063 "10010111001010101" | |
| 6064 "00011011000101010" | |
| 6065 "10110000000101011" | |
| 6066 "01011011100011001" | |
| 6067 "10010001101011001" | |
| 6068 "01000010110001011" | |
| 6069 "11101000111101000" | |
| 6070 "01100100100011000" | |
| 6071 "11100100101010001" | |
| 6072 }, | |
| 6073 /* 42*/ { UNICODE_MODE, 1, 4, -1, "A1A1abcdefghijk", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A4 B11)", | |
| 6074 "11111110101010101" | |
| 6075 "10000010101100010" | |
| 6076 "10111010010001000" | |
| 6077 "10111010100101100" | |
| 6078 "10111010001100111" | |
| 6079 "10000010101100111" | |
| 6080 "11111110110101101" | |
| 6081 "00000000010101001" | |
| 6082 "10010111001100101" | |
| 6083 "00100010001100100" | |
| 6084 "11111001110011110" | |
| 6085 "00001000001100111" | |
| 6086 "10001101001100111" | |
| 6087 "00110101101100100" | |
| 6088 "10100100110111101" | |
| 6089 "01011100011101101" | |
| 6090 "11010100111100111" | |
| 6091 }, | |
| 6092 /* 43*/ { UNICODE_MODE, 1, 4, -1, "abcdefghijkA1A1", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B11 A4)", | |
| 6093 "11111110101010101" | |
| 6094 "10000010100111011" | |
| 6095 "10111010010101011" | |
| 6096 "10111010110011001" | |
| 6097 "10111010011011101" | |
| 6098 "10000010100011001" | |
| 6099 "11111110100101011" | |
| 6100 "00000000001011001" | |
| 6101 "10010111011010101" | |
| 6102 "00110011010101010" | |
| 6103 "10110000010101011" | |
| 6104 "01011000010011001" | |
| 6105 "11000101000011001" | |
| 6106 "01011001100001011" | |
| 6107 "11110100111101010" | |
| 6108 "01111111011011000" | |
| 6109 "11100111011010001" | |
| 6110 }, | |
| 6111 /* 44*/ { UNICODE_MODE, 1, 4, -1, "A1A1Aabcdefghij", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A5 B10)", | |
| 6112 "11111110101010101" | |
| 6113 "10000010110010100" | |
| 6114 "10111010000011000" | |
| 6115 "10111010110011000" | |
| 6116 "10111010010011111" | |
| 6117 "10000010101010111" | |
| 6118 "11111110111011001" | |
| 6119 "00000000010101001" | |
| 6120 "10010111010011001" | |
| 6121 "01011010001010000" | |
| 6122 "11010110001010110" | |
| 6123 "01100011010001011" | |
| 6124 "10101101110011011" | |
| 6125 "01010000101010010" | |
| 6126 "10000101110011001" | |
| 6127 "00111101000111001" | |
| 6128 "11010001011111011" | |
| 6129 }, | |
| 6130 /* 45*/ { UNICODE_MODE, 1, 4, -1, "abcdefghijA1A1A", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B10 A5)", | |
| 6131 "11111110101010101" | |
| 6132 "10000010100101011" | |
| 6133 "10111010000011011" | |
| 6134 "10111010101011001" | |
| 6135 "10111010011111101" | |
| 6136 "10000010110011001" | |
| 6137 "11111110110101011" | |
| 6138 "00000000010011001" | |
| 6139 "10010111000010101" | |
| 6140 "01011111100101010" | |
| 6141 "11001000011101011" | |
| 6142 "00010001011011001" | |
| 6143 "11010111011011001" | |
| 6144 "01011111101001001" | |
| 6145 "11101111110101010" | |
| 6146 "01100100000011000" | |
| 6147 "11101010011010001" | |
| 6148 }, | |
| 6149 /* 46*/ { UNICODE_MODE, 1, 4, -1, "A1A1A1abcdefghi", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A6 B9)", | |
| 6150 "11111110101010101" | |
| 6151 "10000010100111100" | |
| 6152 "10111010000111000" | |
| 6153 "10111010100110000" | |
| 6154 "10111010000100111" | |
| 6155 "10000010101010111" | |
| 6156 "11111110100111001" | |
| 6157 "00000000010111001" | |
| 6158 "10010111011111101" | |
| 6159 "01001110100010100" | |
| 6160 "11101000000110010" | |
| 6161 "00010000110110011" | |
| 6162 "11001001011101111" | |
| 6163 "00111000101100101" | |
| 6164 "11011101111110001" | |
| 6165 "01101100100110001" | |
| 6166 "10110010111110111" | |
| 6167 }, | |
| 6168 /* 47*/ { UNICODE_MODE, 1, 4, -1, "abcdefghiA1A1A1", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B9 A6)", | |
| 6169 "11111110101010101" | |
| 6170 "10000010110001011" | |
| 6171 "10111010010101011" | |
| 6172 "10111010110111001" | |
| 6173 "10111010000111101" | |
| 6174 "10000010100011001" | |
| 6175 "11111110111011011" | |
| 6176 "00000000011011001" | |
| 6177 "10010111011110101" | |
| 6178 "01111110011101010" | |
| 6179 "10010001110101011" | |
| 6180 "01011110000011001" | |
| 6181 "11010110101011001" | |
| 6182 "01111110101001010" | |
| 6183 "10010000111101010" | |
| 6184 "00001000100011000" | |
| 6185 "11110110111010001" | |
| 6186 }, | |
| 6187 /* 50*/ { UNICODE_MODE, 1, 4, -1, "A1A1A1Aabcdefghi", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A7 B9)", | |
| 6188 "11111110101010101" | |
| 6189 "10000010111011100" | |
| 6190 "10111010011101000" | |
| 6191 "10111010111000000" | |
| 6192 "10111010011000111" | |
| 6193 "10000010111000111" | |
| 6194 "11111110111100101" | |
| 6195 "00000000011001001" | |
| 6196 "10010111010001101" | |
| 6197 "01000011111010100" | |
| 6198 "10110011001010110" | |
| 6199 "01000011100000011" | |
| 6200 "10110001111001011" | |
| 6201 "00001011011001111" | |
| 6202 "10000000001011101" | |
| 6203 "01101000000000001" | |
| 6204 "11010011110001011" | |
| 6205 }, | |
| 6206 /* 49*/ { UNICODE_MODE, 1, 4, -1, "abcdefghiA1A1A1A", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B9 A7)", | |
| 6207 "11111110101010101" | |
| 6208 "10000010110001011" | |
| 6209 "10111010010101011" | |
| 6210 "10111010110111001" | |
| 6211 "10111010000111101" | |
| 6212 "10000010100111001" | |
| 6213 "11111110111011011" | |
| 6214 "00000000011011001" | |
| 6215 "10010111011110101" | |
| 6216 "01110111011101010" | |
| 6217 "11000111110101011" | |
| 6218 "00101011100011001" | |
| 6219 "10101110101011001" | |
| 6220 "00100100001001010" | |
| 6221 "11001101101101010" | |
| 6222 "00111010110011000" | |
| 6223 "11000101111010001" | |
| 6224 }, | |
| 6225 /* 50*/ { UNICODE_MODE, 1, 4, -1, "A1A1A1A1abcdefgh", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A8 B8)", | |
| 6226 "11111110101010101" | |
| 6227 "10000010110011100" | |
| 6228 "10111010001011000" | |
| 6229 "10111010110000000" | |
| 6230 "10111010010010111" | |
| 6231 "10000010110010111" | |
| 6232 "11111110110010101" | |
| 6233 "00000000010111101" | |
| 6234 "10010111010111101" | |
| 6235 "00111011110010000" | |
| 6236 "11000000100010010" | |
| 6237 "00010001010011011" | |
| 6238 "11110110110111111" | |
| 6239 "01101010001010100" | |
| 6240 "10010101111011110" | |
| 6241 "00110010100101001" | |
| 6242 "11010101111111011" | |
| 6243 }, | |
| 6244 /* 51*/ { UNICODE_MODE, 1, 4, -1, "abcdefghA1A1A1A1", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A8 B8)", | |
| 6245 "11111110101010101" | |
| 6246 "10000010100111011" | |
| 6247 "10111010011011011" | |
| 6248 "10111010111011001" | |
| 6249 "10111010011011101" | |
| 6250 "10000010111001001" | |
| 6251 "11111110110101011" | |
| 6252 "00000000000111001" | |
| 6253 "10010111001110101" | |
| 6254 "01101000001001010" | |
| 6255 "11110000001101011" | |
| 6256 "01100101111011001" | |
| 6257 "11001000111111001" | |
| 6258 "00110000100001000" | |
| 6259 "10001100000101010" | |
| 6260 "00011001000011000" | |
| 6261 "11101100111010001" | |
| 6262 }, | |
| 6263 /* 52*/ { UNICODE_MODE, 1, 4, -1, "A1A1A1A1A1abcdefg", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A10 B7)", | |
| 6264 "11111110101010101" | |
| 6265 "10000010111011100" | |
| 6266 "10111010011011000" | |
| 6267 "10111010101000000" | |
| 6268 "10111010011000111" | |
| 6269 "10000010111000111" | |
| 6270 "11111110111010101" | |
| 6271 "00000000001001101" | |
| 6272 "10010111010001101" | |
| 6273 "01011011011010000" | |
| 6274 "11000100111110010" | |
| 6275 "01001100011000011" | |
| 6276 "10101101111000011" | |
| 6277 "01010010011010101" | |
| 6278 "10001101111001110" | |
| 6279 "00101010111001001" | |
| 6280 "10000110110101011" | |
| 6281 }, | |
| 6282 /* 53*/ { UNICODE_MODE, 1, 4, -1, "abcdefgA1A1A1A1A1", 0, 17, 17, 0, "M4-L alpha/numeric/byte mix (B7 A10); BWIPP fails with Maximum length exceeded", | |
| 6283 "11111110101010101" | |
| 6284 "10000010111010111" | |
| 6285 "10111010110101111" | |
| 6286 "10111010001011100" | |
| 6287 "10111010100110100" | |
| 6288 "10000010100001000" | |
| 6289 "11111110001011011" | |
| 6290 "00000000111000101" | |
| 6291 "10011101011110001" | |
| 6292 "00000101001011111" | |
| 6293 "10100001101100010" | |
| 6294 "00010010101001000" | |
| 6295 "11110111000111001" | |
| 6296 "01011010101000111" | |
| 6297 "10111011111001101" | |
| 6298 "00001010111001101" | |
| 6299 "11111111011111000" | |
| 6300 }, | |
| 6301 /* 54*/ { UNICODE_MODE, 1, 4, -1, "A1A1A1A1A1Aabcdef", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A11 B6)", | |
| 6302 "11111110101010101" | |
| 6303 "10000010100111100" | |
| 6304 "10111010001111000" | |
| 6305 "10111010101100000" | |
| 6306 "10111010000110111" | |
| 6307 "10000010100110111" | |
| 6308 "11111110110100101" | |
| 6309 "00000000000001101" | |
| 6310 "10010111000111101" | |
| 6311 "01110100100110000" | |
| 6312 "11101011110110010" | |
| 6313 "00000111001110011" | |
| 6314 "10010111000110011" | |
| 6315 "00011001100010111" | |
| 6316 "11110011100111110" | |
| 6317 "01110100100101001" | |
| 6318 "11000111011011011" | |
| 6319 }, | |
| 6320 /* 55*/ { UNICODE_MODE, 1, 4, -1, "abcdefA1A1A1A1A1A", 0, 17, 17, 0, "M4-L alpha/numeric/byte mix (A11 B6); BWIPP fails with Maximum length exceeded", | |
| 6321 "11111110101010101" | |
| 6322 "10000010101101011" | |
| 6323 "10111010001111011" | |
| 6324 "10111010111011001" | |
| 6325 "10111010011001101" | |
| 6326 "10000010100001001" | |
| 6327 "11111110100001011" | |
| 6328 "00000000000001001" | |
| 6329 "10010111000110101" | |
| 6330 "01111101001111010" | |
| 6331 "10001010111011011" | |
| 6332 "01110000110011001" | |
| 6333 "11110111110011001" | |
| 6334 "01101011110000001" | |
| 6335 "11110110001101001" | |
| 6336 "00001011000110100" | |
| 6337 "11010110111110001" | |
| 6338 }, | |
| 6339 }; | |
| 6340 const int data_size = ARRAY_SIZE(data); | |
| 6341 int i, length, ret; | |
| 6342 struct zint_symbol *symbol = NULL; | |
| 6343 | |
| 6344 char escaped[4096]; | |
| 6345 char cmp_buf[32768]; | |
| 6346 char cmp_msg[1024]; | |
| 6347 | |
| 6348 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 6349 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 6350 | |
| 6351 testStartSymbol("test_microqr_encode", &symbol); | |
| 6352 | |
| 6353 for (i = 0; i < data_size; i++) { | |
| 6354 | |
| 6355 if (testContinue(p_ctx, i)) continue; | |
| 6356 | |
| 6357 symbol = ZBarcode_Create(); | |
| 6358 assert_nonnull(symbol, "Symbol not created\n"); | |
| 6359 | |
| 6360 length = testUtilSetSymbol(symbol, BARCODE_MICROQR, data[i].input_mode, -1 /*eci*/, data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/, data[i].data, -1, debug); | |
| 6361 | |
| 6362 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 6363 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 6364 | |
| 6365 if (p_ctx->generate) { | |
| 6366 printf(" /*%3d*/ { %s, %d, %d, %s, \"%s\", %s, %d, %d, %d, \"%s\",\n", | |
| 6367 i, testUtilInputModeName(data[i].input_mode), data[i].option_1, data[i].option_2, | |
| 6368 testUtilOption3Name(BARCODE_MICROQR, data[i].option_3), | |
| 6369 testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), testUtilErrorName(data[i].ret), | |
| 6370 symbol->rows, symbol->width, data[i].bwipp_cmp, data[i].comment); | |
| 6371 testUtilModulesPrint(symbol, " ", "\n"); | |
| 6372 printf(" },\n"); | |
| 6373 } else { | |
| 6374 if (ret < ZINT_ERROR) { | |
| 6375 int width, row; | |
| 6376 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d (%s)\n", i, symbol->rows, data[i].expected_rows, data[i].data); | |
| 6377 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data); | |
| 6378 | |
| 6379 ret = testUtilModulesCmp(symbol, data[i].expected, &width, &row); | |
| 6380 assert_zero(ret, "i:%d testUtilModulesCmp ret %d != 0 width %d row %d (%s)\n", i, ret, width, row, data[i].data); | |
| 6381 | |
| 6382 if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, debug)) { | |
| 6383 if (!data[i].bwipp_cmp) { | |
| 6384 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 6385 } else { | |
| 6386 ret = testUtilBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); | |
| 6387 assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 6388 | |
| 6389 ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, data[i].expected); | |
| 6390 assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", | |
| 6391 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, data[i].expected); | |
| 6392 } | |
| 6393 } | |
| 6394 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { | |
| 6395 int cmp_len, ret_len; | |
| 6396 char modules_dump[17 * 17 + 1]; | |
| 6397 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 6398 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 6399 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 6400 | |
| 6401 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); | |
| 6402 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 6403 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 6404 } | |
| 6405 } | |
| 6406 } | |
| 6407 | |
| 6408 ZBarcode_Delete(symbol); | |
| 6409 } | |
| 6410 | |
| 6411 testFinish(); | |
| 6412 } | |
| 6413 | |
| 6414 /* Not a real test, just performance indicator */ | |
| 6415 static void test_microqr_perf(const testCtx *const p_ctx) { | |
| 6416 int debug = p_ctx->debug; | |
| 6417 | |
| 6418 struct item { | |
| 6419 int symbology; | |
| 6420 int input_mode; | |
| 6421 int option_1; | |
| 6422 int option_2; | |
| 6423 char *data; | |
| 6424 int ret; | |
| 6425 | |
| 6426 int expected_rows; | |
| 6427 int expected_width; | |
| 6428 char *comment; | |
| 6429 }; | |
| 6430 static const struct item data[] = { | |
| 6431 /* 0*/ { BARCODE_MICROQR, UNICODE_MODE, 1, 1, "12345", 0, 11, 11, "Max 5 numbers, M1" }, | |
| 6432 /* 1*/ { BARCODE_MICROQR, UNICODE_MODE, 1, 2, "1234567890", 0, 13, 13, "Max 10 numbers, M2-L" }, | |
| 6433 /* 2*/ { BARCODE_MICROQR, UNICODE_MODE, 1, 3, "123456789012345", 0, 15, 15, "Max 15 numbers, M3-L" }, | |
| 6434 /* 3*/ { BARCODE_MICROQR, UNICODE_MODE, 1, 4, "12345678901234567890123456789012345", 0, 17, 17, "Max 35 numbers, M4-L" }, | |
| 6435 }; | |
| 6436 const int data_size = ARRAY_SIZE(data); | |
| 6437 int i, length, ret; | |
| 6438 | |
| 6439 clock_t start, total_encode = 0, total_buffer = 0, diff_encode, diff_buffer; | |
| 6440 | |
| 6441 if (!(debug & ZINT_DEBUG_TEST_PERFORMANCE)) { /* -d 256 */ | |
| 6442 return; | |
| 6443 } | |
| 6444 | |
| 6445 for (i = 0; i < data_size; i++) { | |
| 6446 int j; | |
| 6447 | |
| 6448 if (testContinue(p_ctx, i)) continue; | |
| 6449 | |
| 6450 diff_encode = diff_buffer = 0; | |
| 6451 | |
| 6452 for (j = 0; j < TEST_PERF_ITERATIONS; j++) { | |
| 6453 struct zint_symbol *symbol = ZBarcode_Create(); | |
| 6454 assert_nonnull(symbol, "Symbol not created\n"); | |
| 6455 | |
| 6456 length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, -1 /*output_options*/, data[i].data, -1, debug); | |
| 6457 | |
| 6458 start = clock(); | |
| 6459 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 6460 diff_encode += clock() - start; | |
| 6461 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 6462 | |
| 6463 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d (%s)\n", i, symbol->rows, data[i].expected_rows, data[i].data); | |
| 6464 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data); | |
| 6465 | |
| 6466 start = clock(); | |
| 6467 ret = ZBarcode_Buffer(symbol, 0 /*rotate_angle*/); | |
| 6468 diff_buffer += clock() - start; | |
| 6469 assert_zero(ret, "i:%d ZBarcode_Buffer ret %d != 0 (%s)\n", i, ret, symbol->errtxt); | |
| 6470 | |
| 6471 ZBarcode_Delete(symbol); | |
| 6472 } | |
| 6473 | |
| 6474 printf("%s: diff_encode %gms, diff_buffer %gms\n", data[i].comment, diff_encode * 1000.0 / CLOCKS_PER_SEC, diff_buffer * 1000.0 / CLOCKS_PER_SEC); | |
| 6475 | |
| 6476 total_encode += diff_encode; | |
| 6477 total_buffer += diff_buffer; | |
| 6478 } | |
| 6479 if (p_ctx->index != -1) { | |
| 6480 printf("totals: encode %gms, buffer %gms\n", total_encode * 1000.0 / CLOCKS_PER_SEC, total_buffer * 1000.0 / CLOCKS_PER_SEC); | |
| 6481 } | |
| 6482 } | |
| 6483 | |
| 6484 static void test_upnqr_input(const testCtx *const p_ctx) { | |
| 6485 int debug = p_ctx->debug; | |
| 6486 | |
| 6487 struct item { | |
| 6488 int input_mode; | |
| 6489 char *data; | |
| 6490 int ret; | |
| 6491 char *expected; | |
| 6492 char *comment; | |
| 6493 }; | |
| 6494 /* Ą U+0104 in ISO 8859-2 0xA1, in other ISO 8859 and Win 1250, UTF-8 C484 */ | |
| 6495 /* Ŕ U+0154 in ISO 8859-2 0xC0, in Win 1250 but not other ISO 8859 or Win page, UTF-8 C594 */ | |
| 6496 /* é U+00E9 in ISO 8859-1 plus other ISO 8859 (but not in ISO 8859-7 or ISO 8859-11), Win 1250 plus other Win, not in Shift JIS, UTF-8 C3A9 */ | |
| 6497 /* β U+03B2 in ISO 8859-7 Greek (but not other ISO 8859 or Win page), in Shift JIS 0x83C0, UTF-8 CEB2 */ | |
| 6498 static const struct item data[] = { | |
| 6499 /* 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)" }, | |
| 6500 /* 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)" }, | |
| 6501 /* 2*/ { UNICODE_MODE, "β", ZINT_ERROR_INVALID_DATA, "Error 572: Invalid character in input for ECI '4'", "β not in ISO 8859-2" }, | |
| 6502 /* 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", "ŔĄ" }, | |
| 6503 /* 4*/ { GS1_MODE, "[20]12", ZINT_ERROR_INVALID_OPTION, "Error 220: Selected symbology does not support GS1 mode", "" }, | |
| 6504 /* 5*/ { UNICODE_MODE, "ĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄ", 0, "(415) 70 44 01 9B A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1", "Length 411" }, | |
| 6505 /* 6*/ { UNICODE_MODE, "ĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄ", ZINT_ERROR_TOO_LONG, "Error 573: Input too long, requires 416 codewords (maximum 415)", "Length 412" }, | |
| 6506 /* 7*/ { DATA_MODE, "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", 0, "(415) 70 44 01 9B 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34", "Length 411" }, | |
| 6507 /* 8*/ { DATA_MODE, "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012", ZINT_ERROR_TOO_LONG, "Error 573: Input too long, requires 416 codewords (maximum 415)", "Length 412" }, | |
| 6508 }; | |
| 6509 const int data_size = ARRAY_SIZE(data); | |
| 6510 int i, length, ret; | |
| 6511 struct zint_symbol *symbol = NULL; | |
| 6512 | |
| 6513 char escaped[4096]; | |
| 6514 char cmp_buf[32768]; | |
| 6515 char cmp_msg[1024]; | |
| 6516 | |
| 6517 #if 0 /* Need to add "force binary mode" to BWIPP for this to work */ | |
| 6518 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 6519 #endif | |
| 6520 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 6521 | |
| 6522 testStartSymbol("test_upnqr_input", &symbol); | |
| 6523 | |
| 6524 for (i = 0; i < data_size; i++) { | |
| 6525 | |
| 6526 if (testContinue(p_ctx, i)) continue; | |
| 6527 | |
| 6528 symbol = ZBarcode_Create(); | |
| 6529 assert_nonnull(symbol, "Symbol not created\n"); | |
| 6530 | |
| 6531 debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ | |
| 6532 | |
| 6533 length = testUtilSetSymbol(symbol, BARCODE_UPNQR, data[i].input_mode, -1 /*eci*/, -1 /*option_1*/, -1, -1, -1 /*output_options*/, data[i].data, -1, debug); | |
| 6534 | |
| 6535 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 6536 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 6537 if (ret < ZINT_ERROR) { | |
| 6538 assert_equal(symbol->eci, 4, "i:%d ZBarcode_Encode symbol->eci %d != 4\n", i, symbol->eci); | |
| 6539 } | |
| 6540 | |
| 6541 if (p_ctx->generate) { | |
| 6542 printf(" /*%3d*/ { %s, \"%s\", %s, \"%s\", \"%s\" },\n", | |
| 6543 i, testUtilInputModeName(data[i].input_mode), testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), testUtilErrorName(data[i].ret), | |
| 6544 symbol->errtxt, data[i].comment); | |
| 6545 } else { | |
| 6546 assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); | |
| 6547 | |
| 6548 if (ret < ZINT_ERROR) { | |
| 6549 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { | |
| 6550 int cmp_len, ret_len; | |
| 6551 char modules_dump[77 * 77 + 1]; | |
| 6552 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 6553 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 6554 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 6555 | |
| 6556 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); | |
| 6557 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 6558 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 6559 } | |
| 6560 } | |
| 6561 } | |
| 6562 | |
| 6563 ZBarcode_Delete(symbol); | |
| 6564 } | |
| 6565 | |
| 6566 testFinish(); | |
| 6567 } | |
| 6568 | |
| 6569 static void test_upnqr_encode(const testCtx *const p_ctx) { | |
| 6570 int debug = p_ctx->debug; | |
| 6571 | |
| 6572 struct item { | |
| 6573 int input_mode; | |
| 6574 int option_1; | |
| 6575 int option_2; | |
| 6576 int option_3; | |
| 6577 char *data; | |
| 6578 int ret; | |
| 6579 | |
| 6580 int expected_rows; | |
| 6581 int expected_width; | |
| 6582 char *comment; | |
| 6583 char *expected; | |
| 6584 }; | |
| 6585 | |
| 6586 /* https://www.upn-qr.si/uploads/files/Tehnicni standard UPN QR.pdf */ | |
| 6587 static const struct item data[] = { | |
| 6588 /* 0*/ { UNICODE_MODE, -1, -1, -1, "UPNQR\012\012\012\012\012Janez Novak\012Dunajska 1\0121000 Ljubljana\01200000008105\012\012\012COST\012Plačilo obveznosti 10/2016\012\012SI56051008010486080\012SI0598765432100\012Novo podjetje d.o.o.\012Lepa cesta 15\0123698 Loški Potok\012183\012 ", 0, 77, 77, "Example A", | |
| 6589 "11111110111111111100010011100010110001111000010010000011011111010000001111111" | |
| 6590 "10000010100011011111111001110100100100111110110100100100100111100010101000001" | |
| 6591 "10111010001000100000110111010001001000001000001101001001001001011000101011101" | |
| 6592 "10111010101000111111100101110000011010110100010001010110010010111000101011101" | |
| 6593 "10111010001000001001001011111100000110101100001111110101110011110111101011101" | |
| 6594 "10000010001111111001010010001001001000001000001000101001011001101010001000001" | |
| 6595 "11111110101010101010101010101010101010101010101010101010101010101010101111111" | |
| 6596 "00000000110100001001111110001101011101000100101000100100100100100100100000000" | |
| 6597 "10110111001011100111111111111011000001101011011111101101010000000101001001011" | |
| 6598 "11001001101111111100011011010011101000111100110110000001000110000010011010010" | |
| 6599 "10010011010011001101011011110101100100100110100110100100111100100101100100000" | |
| 6600 "10100000010000010100110110001000001001001001001101011011000001011001001001000" | |
| 6601 "11000110111001011001100000101001001011110000000011000110001011000111110000010" | |
| 6602 "01100000001000001010001010000101000110101100000100100111110000100100001100100" | |
| 6603 "11011010001110100011010100011001011001001001001001001011001001001000001001101" | |
| 6604 "01100101000011101111001001011100110111010010010110011000011010010010010010011" | |
| 6605 "01011011110011001110010110000111101100100110110101001010110101100001100110100" | |
| 6606 "00000101101101100110100111101110101010100001101001010000001101011001100001011" | |
| 6607 "00000011000011011001011001010011010110010010010000011000110010010011010110110" | |
| 6608 "11100101110001011000111101110100110110100100100000001101000100100100100000101" | |
| 6609 "00011010011000100011111101110011011011101011000011000110011000001011011111011" | |
| 6610 "11101000111110111101100000101011110010011010110111000001110110000000000010010" | |
| 6611 "10001011110111101111111001111100111100100100101101100110000100100001100000101" | |
| 6612 "00100000001000110101001110010000001111000001001011011000101001001001101101010" | |
| 6613 "11111111110101101000100011111000011100111000001111100111000011010100111111010" | |
| 6614 "11101000100100011011011010001101100110100100001000100101000000110000100011101" | |
| 6615 "00111010110010001010010010101001001101001001001010101001101011001111101011100" | |
| 6616 "01101000100011111100011110001010010000011010001000101010010110010010100010101" | |
| 6617 "10001111100101011010000111111110101110010110111111101001110000100001111110010" | |
| 6618 "00011000010101110110101111110001101001010001110000010001101110011010011110001" | |
| 6619 "01101010101101011001000100111010010010010010010110110010010011010011011010101" | |
| 6620 "01100101110001010010111010111100100000110101011000100100100010100110111011000" | |
| 6621 "10111010001110111000010101110011000001101010100001101100111010001100001001111" | |
| 6622 "01001001001010111000000101001010110110011010110011100011010100100001000100010" | |
| 6623 "00000110111010100100111010001100100100110101110101100100100100100100111001010" | |
| 6624 "01011001111110011000100111110001001001010100000000001000001111001011011010001" | |
| 6625 "00111011010010000010110111001110011010111000000110010111101001010110110011100" | |
| 6626 "01111100011111110001111011111100000110101111000101110101010000010010100110100" | |
| 6627 "01001010110110000011110111100101001001011011001001101001010001001001010101101" | |
| 6628 "00100000000111011011011101101110010010010110010010010010010010010000000110011" | |
| 6629 "10001110000101001100110001011100101101100001101000000000110110001000000000100" | |
| 6630 "00110001010111011000100111010011101011001000000000011000000100011001001101001" | |
| 6631 "01010010001111001110110101011100010011010011010010010010010011111010010110110" | |
| 6632 "11010101111000010110001010111000100100100100001100100100100000111100101100101" | |
| 6633 "10100010001001000010001100110101000001101110101101001011001100111101100001001" | |
| 6634 "01101001011100010101001101101110110000011110110011000111000001000010010000010" | |
| 6635 "11101111111001110000001011111010100100100101101111100010110101000100111110000" | |
| 6636 "00111000110101111110000010001100001000001101001000101001001001111001100011000" | |
| 6637 "01111010100010111010110010101011000010110000001010110110000011000110101010010" | |
| 6638 "11011000101011001011011010001100000110001010001000110111100000100100100010100" | |
| 6639 "10001111111100100100000111111010011000001111001111100001001001001001111111101" | |
| 6640 "11100001001110110011111000111010010010010010010010000010010010000011011010011" | |
| 6641 "11000111010101101011000010000110111101000110100100110000110101110000100100100" | |
| 6642 "10110001010110000001010000001010101011100001111101010010001101001001001001001" | |
| 6643 "01010011111110111110111010111100010010010010010011011100010010010010010000110" | |
| 6644 "01111101011001100100101010011110010101100100100100101100100100100101101100101" | |
| 6645 "10010010101001000111101010111011000001101011001001001111011000001101101001001" | |
| 6646 "01011101011000111010101001000010101101011010100110001111010110000011010010010" | |
| 6647 "11110111111011001000011101001001111001100100100101100000100100100100000110010" | |
| 6648 "00101101100110101001001100001011011001001001001001001001001001001000000001010" | |
| 6649 "01001110101000011100110000011010010010110000010100011100100011010010110010000" | |
| 6650 "01011001110011001100010011101001001010101100010000110000000000110001100100010" | |
| 6651 "11011110101100100101101111110111011001001001001010000111001001001101101010000" | |
| 6652 "10110000001001111010001001110000000010011010010000011000010010010011011010001" | |
| 6653 "00011011010000111010011010100101001010011110100100101000010101100010000100100" | |
| 6654 "01100101010110100001100110001101101011000001110111011000101101011001001000011" | |
| 6655 "01001111100111100110111110110101101110010010011011111010110000010011010001100" | |
| 6656 "00001001111101000000101011011110100000100100101101111101100100100111001101101" | |
| 6657 "01111010101101000011101111111001000001100011011111111101111111001101111110011" | |
| 6658 "00000000101101101110101110001110110100001010111000101010110111000000100011010" | |
| 6659 "11111110110001001100010110101010100100100100111010100100100011100101101010000" | |
| 6660 "10000010110110110101000110001011001001001001101000101001001111001001100010100" | |
| 6661 "10111010010110001000101011111010011100101001101111110110100111010111111111110" | |
| 6662 "10111010111111011111010010100000000110101100000111110101100010010110000000100" | |
| 6663 "10111010111000101010000010001111001111011001010101101001101011001000001000101" | |
| 6664 "10000010001101100100010110101010010010001110010010010010110010010010100101001" | |
| 6665 "11111110100011011001111101001100101100000010111001100000111111111001000100010" | |
| 6666 }, | |
| 6667 /* 1*/ { UNICODE_MODE, -1, -1, -1, "UPNQR\012SI56020170014356205\012\012\012SI003528-990\012Združenje bank Slovenije\012Šubičeva 2\0121000 Ljubljana\01200000128067\012\012\012ADVA\012Plačilo avansa-ponudba 2016/12\012\012SI56051008010486080\012SI00123456-67890-12345\012Novo podjetje d.o.o.\012Lepa cesta 15\0123698 Loški Potok\012238\012 ", 0, 77, 77, "Example B", | |
| 6668 "11111110000111011101000010011000101001000000001000111011101100110000001111111" | |
| 6669 "10000010110011111100001100011111010101001001100001010101010101110010101000001" | |
| 6670 "10111010001010110110001000110010101011101110001000101010100110110000101011101" | |
| 6671 "10111010001111111101111110011110011101010101110100010001000110000100101011101" | |
| 6672 "10111010100111000001000111111010001000000110101111111001100110010011101011101" | |
| 6673 "10000010010011100010000010001100010100010101011000111101010101110110001000001" | |
| 6674 "11111110101010101010101010101010101010101010101010101010101010101010101111111" | |
| 6675 "00000000011101111011101110001101001110110101011000110101010101100101100000000" | |
| 6676 "10101010010001000011011011111000100000001100111111110000111011011110000010010" | |
| 6677 "00010001100001111111011101100100101101111001110001000110011001001101011101010" | |
| 6678 "00100011011101000010110111011010101010101110101110100110111011100011001010001" | |
| 6679 "10111100001110101010101001111101010100010001010101000111010101110101110101011" | |
| 6680 "11101110011001000011011001111000110111101000111001100110111011111110101000101" | |
| 6681 "00110001101101111101111101011101100011011011110101000110011001011101111101001" | |
| 6682 "00111011101101100010110111101010111110101100101110101010010010101011101000010" | |
| 6683 "10001000000000001000001000011010010101001001010111000111111101010101010011011" | |
| 6684 "11001011110100100000011000001000100011010000111011111110010011101110101000111" | |
| 6685 "00011101111110111010111111110010110011111111110001110000010001000101111101010" | |
| 6686 "00110011111100100001100001111010101010111110101111101100101010101011001110001" | |
| 6687 "10010100011100100001001100000100000100001101010101110111011101010101010111001" | |
| 6688 "11010011100010010000011100010001000000010000111001000110011011101001111010101" | |
| 6689 "00111101111101101010100011101101111110011101111101000000010001000111000001011" | |
| 6690 "00000011100101101001100111110010111100111010111110001000101010101111001100111" | |
| 6691 "00100100010100111001010010001100010000010100110011101110110111010001110101001" | |
| 6692 "11101111101101011000000011111000110011001000011111100010011001101110111111111" | |
| 6693 "10111000101011101010111010001100000110001101101000101000010011000010100011010" | |
| 6694 "00011010101001100001100010101010101110101011101010101110101010101100101011001" | |
| 6695 "10101000101010100011000010001101000011011101101000111101010011010100100011001" | |
| 6696 "11101111101001001101001011111000100010000001101111100110011001101101111110101" | |
| 6697 "01110000000111101010101011101101111011010100111100000100010001100000000011000" | |
| 6698 "11001010011011111100001100000010100010101011101100001010101010001001100111000" | |
| 6699 "01110001000000110001101011001101010001000101010110110101010101110101000101001" | |
| 6700 "01010110101011001100101110010000110010000000100110101110111011001101101100101" | |
| 6701 "01100100001011110011101010001101110001011100111101000100010001000000000100010" | |
| 6702 "00000011010110110001011100000010100010111010101011101010001010001100100110011" | |
| 6703 "11000000100010010111110011101101010101001100001100010100110101111111011111010" | |
| 6704 "10000111101010100110000110110110100010001010111110101110011001000110000001111" | |
| 6705 "01001101101110000000001011101101110111000111000100000100011001000111000001010" | |
| 6706 "11101010010101111000101100000110101010111001111010001010101010100110100110101" | |
| 6707 "11100101000001010001100011001001010101010001110101110101010001111101010001111" | |
| 6708 "10000011001010101110011010010110000011101100010110101110110011000100011110001" | |
| 6709 "01101100001011011000011111011110110111010001011100000100000011001111010001010" | |
| 6710 "10101010110110100011100010010000101011101110111011001010110011100010110110001" | |
| 6711 "00100101001000000010100101001001010101010000011101010101010101010101010100111" | |
| 6712 "10000011001011000010001111110000100011001111110110101110111001101110001010001" | |
| 6713 "00101100011010010000000110011101110111011000101100000110011001101101010111010" | |
| 6714 "00101111110111111001100111111010101010101000101111101010101011001010111110001" | |
| 6715 "11101000100000100111111010001001110010010101011000101101010101001101100011011" | |
| 6716 "00001010101011100101101010101101111000001100111010100100111011011110101010101" | |
| 6717 "10101000111010111100001010001110110110011101111000100000011001001101100011010" | |
| 6718 "01111111111111100000000111111000111111101110101111101000101010000010111110001" | |
| 6719 "00100101000010010000111100011000110000010101010101000101010101100100010101011" | |
| 6720 "01001010000100100011001110011011010110001000101010100110111011100110100010101" | |
| 6721 "10111100101000111111001111110001110110111101100001000110001001011101111101011" | |
| 6722 "01101010110000000110000010101111100110101010101011101110001010101011101000010" | |
| 6723 "00111100010111010101011101110111110001010101010101000101010101010101111101011" | |
| 6724 "01100011101001000100001111001000010011001000101010100110011011101110101010101" | |
| 6725 "10111001010000011101101111100101010011000101100001000110010001000101010101010" | |
| 6726 "01000010101011000110010110000000100010111010101001101010001010101010001000000" | |
| 6727 "00100000100101111101010110100101000000010101010111010111010101010100011101001" | |
| 6728 "01001110000101001100001100100000000010001000101000110111011011101010001010101" | |
| 6729 "00101000000010001101100000100100101111101101100001000110010001000001110101100" | |
| 6730 "00101011001011101110001110110100101110011010101001100010001000101111101001101" | |
| 6731 "01001001001010100101011000011111010110010100010001001111010001010100011101011" | |
| 6732 "10000011000110110100001010110011010110001000001000111110011001101100001100111" | |
| 6733 "01110001010000100101100010011001111010101100100111001110010011000101110011010" | |
| 6734 "01001111000111001110001010010101001111001010000001100110101000101000001000101" | |
| 6735 "00001000011010100001101010101111000101000100110011110111010111010110111001101" | |
| 6736 "01111011000000110000000111111010100010001001001111100110011111101100111110001" | |
| 6737 "00000000110100100000011010001001100011010101111000100100010001100001100011000" | |
| 6738 "11111110010011010010010010101100111010111011111010101010001001000111101010000" | |
| 6739 "10000010001110100101010010001111010101011101101000110100010101010101100011001" | |
| 6740 "10111010101010100101111011111010110100001001101111101111111011101100111110101" | |
| 6741 "10111010001000111010010011011001110111011100100111100100110011001000110010010" | |
| 6742 "10111010111111010100110001101100110100111010111110001010001010100101101010001" | |
| 6743 "10000010001110111011101001101101010101011101110100110101010001000101100000101" | |
| 6744 "11111110101101000011101011000010100010000010001101101110011110100111001110011" | |
| 6745 }, | |
| 6746 /* 2*/ { UNICODE_MODE, -1, -1, -1, "UPNQR\012\012\012\012\012Janez Novak\012Dunajska 1\0121000 Ljubljana\01200000008105\012\012\012RENT\012Plačilo najemnine 10/2016\01215.11.2016\012SI56051008010486080\012RF45SBO2010\012Novo podjetje d.o.o.\012Lepa cesta 15\0123698 Loški Potok\012188\012 ", 0, 77, 77, "Example H", | |
| 6747 "11111110000111000010011001010010001001000000101010111011100111100000001111111" | |
| 6748 "10000010110011101110001010110101010101001111000101010101010110110010101000001" | |
| 6749 "10111010001010100101010100101010101011101011101110101010101010001000101011101" | |
| 6750 "10111010001111111111100001111111011101110011010110010001000100011100101011101" | |
| 6751 "10111010100111000110000111111010001000100110001111111011100100011011101011101" | |
| 6752 "10000010010011000001001010001101010100010110011000110101010100010110001000001" | |
| 6753 "11111110101010101010101010101010101010101010101010101010101010101010101111111" | |
| 6754 "00000000000101011111001110001101001100110001011000110101011101110101000000000" | |
| 6755 "10101010001001000110011011111000100010001000111111101110111011100110100010010" | |
| 6756 "00001100101001011111011101001100101111111001110011000110011001000101011101010" | |
| 6757 "00011111001101000001010101100011101010101110101110101010101010101011101010001" | |
| 6758 "10111100010101101000101100011101010101010101010011010111010101000101010101011" | |
| 6759 "11110110011001000001011000011000010011001100111011100110111011111110101000101" | |
| 6760 "00000101111001011011111011111100110111011111110001011110010001010101011101010" | |
| 6761 "00101111101101100000110101110010111010101010101110101010101010101011101010001" | |
| 6762 "10101100011100001000001110011011110110010101010011010111010101010101010101011" | |
| 6763 "11100011111101000000011100001000000100001000111011000100111011101110001000101" | |
| 6764 "00000001100010011010111011110011110110111101110001001110010001000101111101010" | |
| 6765 "00011011110101100001100001101011101011001010101110101100001010101011101100001" | |
| 6766 "10111000001000101001001100000101010101010101010101110101010101010101110101011" | |
| 6767 "11110011110001000000011110010000110010001000100010100101011011101000111100101" | |
| 6768 "00001101101111111010100111101100110011011101110000000000010001000111100001010" | |
| 6769 "00101011111011100001110111110010111010101010100001101111001010101111101000101" | |
| 6770 "00100000011100100001010010001100010011011101010111000110110101010101110111001" | |
| 6771 "11011111111011011000011011111000101100010000111111111111111011101100111111101" | |
| 6772 "10111000111011100010101010001100011111011101111000110100110001000001100010000" | |
| 6773 "11111010110001100001110010101010100110101010101010101010001010101100101010010" | |
| 6774 "10001000100100111011011010001101010111000100011000101101010101010101100011111" | |
| 6775 "10111111101001001100001011111000100000001000111111100110011100101111111110011" | |
| 6776 "00001000001011100010110011101101110101001100100100001100010000000110000100010" | |
| 6777 "10011110010011100001111100000010101010101010111110001010101001101011100010010" | |
| 6778 "00011000000000110011010011001101010001000101100001010101010101010101001110110" | |
| 6779 "00011111101101000011000110010000100010001000001010001111011001101111101100011" | |
| 6780 "01001000001101101110101010001101110001011101101100100100010001100110000111010" | |
| 6781 "11001010110100110110011100000010101010111011111011101010101010101000100111011" | |
| 6782 "00000100100010011010001011101101010101001000011100110100010001000111000111110" | |
| 6783 "10000011101010100100101111110110100010000001111110001111010111111110011010111" | |
| 6784 "10001101101110000101111010001101110111011110100100100100100101110111000110010" | |
| 6785 "11101011010101110101110100000110101010111000111011101010110010101010111110001" | |
| 6786 "11100101100000011111101010101001010101010001011100110101010101100111010001011" | |
| 6787 "10000011001011000111001110010010100011101111100110001110111001101110000111001" | |
| 6788 "01101101101011000010010010001111110111010100001100000100011001111101000001010" | |
| 6789 "01101010110111110110001100100100101011101011101010101010101011101010110110001" | |
| 6790 "01100101001000000100111010001111010101010101111101010101010001000101000101011" | |
| 6791 "01000011101011000011101111010000100010001101001110101000111111100110001010101" | |
| 6792 "10101101011010110110001011101111110111011101110100000000011111100101010111010" | |
| 6793 "01101111110110011011100111111000101010101011101111101100100011001010111110001" | |
| 6794 "00101000101001000110011010001100010100010101011000110101011101000101100011011" | |
| 6795 "01001010111011000110001010101011111010001000111010101110101011111110101010101" | |
| 6796 "10101000111010011110101010001011110111111101111000100110000001010101100011010" | |
| 6797 "01101111101111000101100111111001111011101010101111101010111010101010111110001" | |
| 6798 "00100100101000010100111000001011010101010101010101010101010101000100011101011" | |
| 6799 "01001010001010100101001100011101110011001100101010101110100011111110101010101" | |
| 6800 "10101101101011111101001111100100110111011111100001000000000001010101010101010" | |
| 6801 "01011010111111000110000011011110101010101010101011101100100010101010101000001" | |
| 6802 "00101100100010010101011100111000000011010101010101010101010101010100011101011" | |
| 6803 "01110011011111000100001011010100100100001000101010101100111011101110001010101" | |
| 6804 "10001000011001111101101110010011101110111101100001000000010001000101010101000" | |
| 6805 "01001011100001000110010100100001100110001010101011101100001010101010101000001" | |
| 6806 "00000001110000110101010011011111010101011101010111000110110101010100111101011" | |
| 6807 "01100110011100100100001110110010110000000000101000100101111011101010101010111" | |
| 6808 "00111000010110111101100100010000110011010101100011000000110001000000110101111" | |
| 6809 "00011111001001000110001000010100101010101010101011100010101010101110101001111" | |
| 6810 "01101001011110111101001110111111000101010101010111011110110101010101111101001" | |
| 6811 "10100011000100110100010100111011001100011000101010100111111011101100101010101" | |
| 6812 "01011001011000101101111010000001101111011101101011000101110001000101010100000" | |
| 6813 "01001111011111001110000110001101001110111010100011000010101000101010101001011" | |
| 6814 "00001000001100110001010010101111010001000101111010001100110101010110011100011" | |
| 6815 "01111011001010100000001111111010100010011000011111111111111100101110111111111" | |
| 6816 "00000000101000101001111010001001110011001101011000101100010000000001100010010" | |
| 6817 "11111110011001001010011010101100101010101010111010101010101011101101101010001" | |
| 6818 "10000010001010100001001010001111010101010101011000110101010101010111100011111" | |
| 6819 "10111010101110100001000011111010100100010001101111101110011001101001111111101" | |
| 6820 "10111010001110110111100011010001110111011100101110000100010001100111110001010" | |
| 6821 "10111010111011000101100001101100101100111011100110001010001010100111101111001" | |
| 6822 "10000010001010100100100001101101010101001000000101010101110011011111100111001" | |
| 6823 "11111110101101000110111011000010100010001100001111101110110001100111001110111" | |
| 6824 }, | |
| 6825 /* 3*/ { UNICODE_MODE, -1, -1, 2 << 8, "UPNQR\012\012\012\012\012Janez Novak\012Dunajska 1\0121000 Ljubljana\01200000008105\012\012\012RENT\012Plačilo najemnine 10/2016\01215.11.2016\012SI56051008010486080\012RF45SBO2010\012Novo podjetje d.o.o.\012Lepa cesta 15\0123698 Loški Potok\012188\012 ", 0, 77, 77, "Example H with explicit mask 001 (auto-mask 000)", | |
| 6826 "11111110110010010111001100000111011100010101111111101110110010110100001111111" | |
| 6827 "10000010000110111011011111100000000000011010010000000000000011100110101000001" | |
| 6828 "10111010111111110000000001111111111110111110111011111111111111011100101011101" | |
| 6829 "10111010011010101010110100101010001000100110000011000100010001001000101011101" | |
| 6830 "10111010010010010011010011111111011101110011011111101110110001001111101011101" | |
| 6831 "10000010100110010100011110001000000001000011001000100000000001000010001000001" | |
| 6832 "11111110101010101010101010101010101010101010101010101010101010101010101111111" | |
| 6833 "00000000010000001010011010001000011001100100001000100000001000100000000000000" | |
| 6834 "10100011011100010011001111111101110111011101101111111011101110110011100100101" | |
| 6835 "01011001111100001010001000011001111010101100100110010011001100010000001000000" | |
| 6836 "01001010011000010100000000110110111111111011111011111111111111111110111111011" | |
| 6837 "11101001000000111101111001001000000000000000000110000010000000010000000000001" | |
| 6838 "10100011001100010100001101001101000110011001101110110011101110101011111101111" | |
| 6839 "01010000101100001110101110101001100010001010100100001011000100000000001000000" | |
| 6840 "01111010111000110101100000100111101111111111111011111111111111111110111111011" | |
| 6841 "11111001001001011101011011001110100011000000000110000010000000000000000000001" | |
| 6842 "10110110101000010101001001011101010001011101101110010001101110111011011101111" | |
| 6843 "01010100110111001111101110100110100011101000100100011011000100010000101000000" | |
| 6844 "01001110100000110100110100111110111110011111111011111001011111111110111001011" | |
| 6845 "11101101011101111100011001010000000000000000000000100000000000000000100000001" | |
| 6846 "10100110100100010101001011000101100111011101110111110000001110111101101001111" | |
| 6847 "01011000111010101111110010111001100110001000100101010101000100010010110100000" | |
| 6848 "01111110101110110100100010100111101111111111110100111010011111111010111101111" | |
| 6849 "01110101001001110100000111011001000110001000000010010011100000000000100010011" | |
| 6850 "10001111101110001101001111111101111001000101101111101010101110111001111110111" | |
| 6851 "11101000101110110111111110001001001010001000101000100001100100010100100011010" | |
| 6852 "10101010100100110100100110101111110011111111111010111111011111111001101011000" | |
| 6853 "11011000110001101110001110001000000010010001001000111000000000000000100010101" | |
| 6854 "11101111111100011001011111111101110101011101101111110011001001111010111111001" | |
| 6855 "01011101011110110111100110111000100000011001110001011001000101010011010001000" | |
| 6856 "11001011000110110100101001010111111111111111101011011111111100111110110111000" | |
| 6857 "01001101010101100110000110011000000100010000110100000000000000000000011011100" | |
| 6858 "01001010111000010110010011000101110111011101011111011010001100111010111001001" | |
| 6859 "00011101011000111011111111011000100100001000111001110001000100110011010010000" | |
| 6860 "10011111100001100011001001010111111111101110101110111111111111111101110010001" | |
| 6861 "01010001110111001111011110111000000000011101001001100001000100010010010010100" | |
| 6862 "11010110111111110001111010100011110111010100101011011010000010101011001111101" | |
| 6863 "11011000111011010000101111011000100010001011110001110001110000100010010011000" | |
| 6864 "10111110000000100000100001010011111111101101101110111111100111111111101011011" | |
| 6865 "10110000110101001010111111111100000000000100001001100000000000110010000100001" | |
| 6866 "11010110011110010010011011000111110110111010110011011011101100111011010010011" | |
| 6867 "00111000111110010111000111011010100010000001011001010001001100101000010100000" | |
| 6868 "00111111100010100011011001110001111110111110111111111111111110111111100011011" | |
| 6869 "00110000011101010001101111011010000000000000101000000000000100010000010000001" | |
| 6870 "00010110111110010110111010000101110111011000011011111101101010110011011111111" | |
| 6871 "11111000001111100011011110111010100010001000100001010101001010110000000010000" | |
| 6872 "00111111100011001110110011111101111111111110111111111001110110011111111111011" | |
| 6873 "01111000111100010011001110001001000001000000001000100000001000010000100010001" | |
| 6874 "00011010101110010011011110101110101111011101101010111011111110101011101011111" | |
| 6875 "11111000101111001011111110001110100010101000101000110011010100000000100010000" | |
| 6876 "00111111111010010000110011111100101110111111111111111111101111111111111111011" | |
| 6877 "01110001111101000001101101011110000000000000000000000000000000010001001000001" | |
| 6878 "00011111011111110000011001001000100110011001111111111011110110101011111111111" | |
| 6879 "11111000111110101000011010110001100010001010110100010101010100000000000000000" | |
| 6880 "00001111101010010011010110001011111111111111111110111001110111111111111101011" | |
| 6881 "01111001110111000000001001101101010110000000000000000000000000000001001000001" | |
| 6882 "00100110001010010001011110000001110001011101111111111001101110111011011111111" | |
| 6883 "11011101001100101000111011000110111011101000110100010101000100010000000000010" | |
| 6884 "00011110110100010011000001110100110011011111111110111001011111111111111101011" | |
| 6885 "01010100100101100000000110001010000000001000000010010011100000000001101000001" | |
| 6886 "00110011001001110001011011100111100101010101111101110000101110111111111111101" | |
| 6887 "01101101000011101000110001000101100110000000110110010101100100010101100000101" | |
| 6888 "01001010011100010011011101000001111111111111111110110111111111111011111100101" | |
| 6889 "00111100001011101000011011101010010000000000000010001011100000000000101000011" | |
| 6890 "11110110010001100001000001101110011001001101111111110010101110111001111111111" | |
| 6891 "00001100001101111000101111010100111010001000111110010000100100010000000001010" | |
| 6892 "01001110001010011011010011011000011011101111110110010111111101111111111100001" | |
| 6893 "00001001011001100100000111111010000100010000101111011001100000000011001001001" | |
| 6894 "01111010011111110101011011111111110111001101001111101010101001111011111110101" | |
| 6895 "00000000111101111100101110001100100110011000001000111001000101010100100011000" | |
| 6896 "11111110101100011111001110101001111111111111101010111111111110111000101011011" | |
| 6897 "10000010011111110100011110001010000000000000001000100000000000000010100010101" | |
| 6898 "10111010011011110100010111111111110001000100111111111011001100111100111110111" | |
| 6899 "10111010011011100010110110000100100010001001111011010001000100110010100100000" | |
| 6900 "10111010101110010000110100111001111001101110110011011111011111110010111010011" | |
| 6901 "10000010011111110001110100111000000000011101010000000000100110001010110010011" | |
| 6902 "11111110111000010011101110010111110111011001011010111011100100110010011011101" | |
| 6903 }, | |
| 6904 /* 4*/ { UNICODE_MODE, -1, -1, -1, "Ą˘Ł¤ĽŚ§¨ŠŞŤŹŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙", 0, 77, 77, "ISO 8859-2", | |
| 6905 "11111110000111101001000110101100101001111110111011001111111000110000001111111" | |
| 6906 "10000010001011100100110111111011110100001011110000100001001110011010101000001" | |
| 6907 "10111010110101111111101101111101001010110101111011011110100001100100101011101" | |
| 6908 "10111010100110111001110101101000011101101000110011100111001111101000101011101" | |
| 6909 "10111010100110010010011011111101001001111101101111101001101111001011101011101" | |
| 6910 "10000010101011011010010010001010010101101010111000100011001110100010001000001" | |
| 6911 "11111110101010101010101010101010101010101010101010101010101010101010101111111" | |
| 6912 "00000000110101001100101010001100001011110010011000111100111000000000100000000" | |
| 6913 "10111110010111011110010011111001111100101111111111100001010110011010001111100" | |
| 6914 "10000001110110110001011001111100101000111010111001001101111100111000111100000" | |
| 6915 "11111110110010111100110011101011110100001111110110101111010110000010001011010" | |
| 6916 "00001100011100001010101111010101001111110100011101010110101000110000010100000" | |
| 6917 "11010011100111011010010001110000010010101001110101111101001110000010101001010" | |
| 6918 "10000100100110010010011000011101010111111100111011010111100100100001011100000" | |
| 6919 "11101110110010111100110111110010001010001011110000110001011110000011101011010" | |
| 6920 "00001100011110101011101111011101101010010010011011011010110000111001110100000" | |
| 6921 "11011111111100011010010101110001111101001111110011000011010110000010001001010" | |
| 6922 "10010000100101010010011100001100101000011010111000101001111100101000111100010" | |
| 6923 "11110110111100011100110011100011110101001111110110101011110110000010001111001" | |
| 6924 "00111100010001101011101111000010101111100010001101110100011000111100110010011" | |
| 6925 "11000111111100011010010111101111011010110111100110111100110110000111111111001" | |
| 6926 "10000000111001110010011100010010001111100010101011110110011100101010111010000" | |
| 6927 "11111110100100111100110001101111110010010111110011111000010110000001110010010" | |
| 6928 "00111000000011101011111101001011010100010010000101011010111000111101011100000" | |
| 6929 "11111111110110011010001011111110000001001111101111101011010110000001111110010" | |
| 6930 "11101000100001111010011010001011010000011010101000111001111100101111100011100" | |
| 6931 "10001010111100101100110110101110000101001111111010100011110100000101101010010" | |
| 6932 "01011000101001110011101110001011001000000011011000111000011011111100100010101" | |
| 6933 "01101111101010001010011011111110011011010110011111111010110001000100111111001" | |
| 6934 "01100101111101101010010101101011001010000011000101100000011011001101101001110" | |
| 6935 "01010110111100110000110110010110010101010110010101001010110010000010010101111" | |
| 6936 "11110000101111101011011001101011010110001010000000110000011001111111001010010" | |
| 6937 "01000010001010001010001111001110000011000111110110011011110110100100110110101" | |
| 6938 "10110101111001101010100101101011010110011010100110010000111100101110101101110" | |
| 6939 "01111110011100110001111110010110000011001111101000111011010111001000001100100" | |
| 6940 "01111101101001101001101001001011010110011001011110010000001101110011100101110" | |
| 6941 "00011110001000001001011110001110000011001100001101111010100101111010100000000" | |
| 6942 "00110001111011111101110101101011010110001101010111110001000101110001110010010" | |
| 6943 "00111111111101100001110110010110000011011010010001011011101100110010000101001" | |
| 6944 "11111100101101010011000001101111010110000101100110110000000001011101110110011" | |
| 6945 "10011110101001010101000111101100000011010000010100011010111001100100100011001" | |
| 6946 "00110000111011111100100100001011010110000110100110010000011001001111101001110" | |
| 6947 "00111111111100101111110110110110000011010111101000111010101100100000011000101" | |
| 6948 "00111100101101001100100001001100010111100010111110010100011110000111101111111" | |
| 6949 "00011110101000110101001110001101100010010110101100111110110110001100110010001" | |
| 6950 "00110001011010010000110111100000110110000011110110010000010110101111110111110" | |
| 6951 "11111111111100101001111011111011100010010110101111111110110100001000111110101" | |
| 6952 "00111000101101001011000110001111010111100101001000110110000011110110100011111" | |
| 6953 "00011010110001110111001110101000000010110000001010111000101001111101101010001" | |
| 6954 "00111000100011110100110010001001010110100101011000110100000011011111100011110" | |
| 6955 "11111111100101101100111011111000000011010010001111110110111000101000111110101" | |
| 6956 "00111101101101001000000100110000001010000011011000111000010011001111100011111" | |
| 6957 "00011111100000110000101100100101110101010110000110000010110001110101010110001" | |
| 6958 "00111100100011110000110010000100100000000011001100101000011011000110100011110" | |
| 6959 "11000010000101001110011100001101110101010110000110001010110000101001010110101" | |
| 6960 "00101100101110101001000110101000101111100101011000110100001011010111100011111" | |
| 6961 "00011110001010110000101011101111111010110000000110011100101001111101110110001" | |
| 6962 "00011100001000010000110010100000101111100101001100110110000011010110000011100" | |
| 6963 "11000011000101101110011100010011100010010010000100010000011000111000110110110" | |
| 6964 "00000101111010001001000010001001010010010101011010111010100011010110000011100" | |
| 6965 "00011110011001110000101100100101000101001000000000000011001001111110010110010" | |
| 6966 "00111100000101110000110101000000010000011101001010101001100011010010100011010" | |
| 6967 "11100110111101101110001011001111100101001010000010000011111000111101010111001" | |
| 6968 "00010001110110000001001101010000001001100101011000111100000011010111100011111" | |
| 6969 "10010010000001111000111010111101111000110000000110001100101001111001010110101" | |
| 6970 "10010000000111110000111011001000101001100101000101111110000011010001100011110" | |
| 6971 "01001110100011111110011101000111110100010010001101001000011010111010110110010" | |
| 6972 "00001001111000001001000001001000010111110100010010100110100001010111100010101" | |
| 6973 "01111010010011110000101011111101100010101001101111111101001111011101111110101" | |
| 6974 "00000000110101101000111110001000110011111100101000100111100101010101100011101" | |
| 6975 "11111110001101111010001010101111100100001011101010100001011101011010101011100" | |
| 6976 "10000010111110000001101010001000001011111101001000111110000011010001100010010" | |
| 6977 "10111010110101110101011111111101111100100000011111100101101000111011111111101" | |
| 6978 "10111010110001100110111110110000101001111101010001101110100010110000010010010" | |
| 6979 "10111010101011111111010111011111110100001010011011000001111000110011100101010" | |
| 6980 "10000010011100010001111111000000001011100000001000111111100001011101111000001" | |
| 6981 "11111110110101111101111001011101111100101101111101100101000101100100011101000" | |
| 6982 }, | |
| 6983 /* 5*/ { UNICODE_MODE, -1, -1, -1, "UPNQR\012\012\012\012\012Janez Novak\012Dunajska 1\0121000 Ljubljana\01200000008105\012\012\012COST\012Plačilo obveznosti 10/2016\012\012SI56051008010486080\012SI0598765432100\012Novo podjetje d.o.o.\012Lepa cesta 15\0123698 Loški Potok\012183\012 ", 0, 77, 77, "Example A fast automatic mask 0 (not 3)", | |
| 6984 "11111110111111111100010011100010110001111000010010000011011111010000001111111" | |
| 6985 "10000010100011011111111001110100100100111110110100100100100111100010101000001" | |
| 6986 "10111010001000100000110111010001001000001000001101001001001001011000101011101" | |
| 6987 "10111010101000111111100101110000011010110100010001010110010010111000101011101" | |
| 6988 "10111010001000001001001011111100000110101100001111110101110011110111101011101" | |
| 6989 "10000010001111111001010010001001001000001000001000101001011001101010001000001" | |
| 6990 "11111110101010101010101010101010101010101010101010101010101010101010101111111" | |
| 6991 "00000000110100001001111110001101011101000100101000100100100100100100100000000" | |
| 6992 "10110111001011100111111111111011000001101011011111101101010000000101001001011" | |
| 6993 "11001001101111111100011011010011101000111100110110000001000110000010011010010" | |
| 6994 "10010011010011001101011011110101100100100110100110100100111100100101100100000" | |
| 6995 "10100000010000010100110110001000001001001001001101011011000001011001001001000" | |
| 6996 "11000110111001011001100000101001001011110000000011000110001011000111110000010" | |
| 6997 "01100000001000001010001010000101000110101100000100100111110000100100001100100" | |
| 6998 "11011010001110100011010100011001011001001001001001001011001001001000001001101" | |
| 6999 "01100101000011101111001001011100110111010010010110011000011010010010010010011" | |
| 7000 "01011011110011001110010110000111101100100110110101001010110101100001100110100" | |
| 7001 "00000101101101100110100111101110101010100001101001010000001101011001100001011" | |
| 7002 "00000011000011011001011001010011010110010010010000011000110010010011010110110" | |
| 7003 "11100101110001011000111101110100110110100100100000001101000100100100100000101" | |
| 7004 "00011010011000100011111101110011011011101011000011000110011000001011011111011" | |
| 7005 "11101000111110111101100000101011110010011010110111000001110110000000000010010" | |
| 7006 "10001011110111101111111001111100111100100100101101100110000100100001100000101" | |
| 7007 "00100000001000110101001110010000001111000001001011011000101001001001101101010" | |
| 7008 "11111111110101101000100011111000011100111000001111100111000011010100111111010" | |
| 7009 "11101000100100011011011010001101100110100100001000100101000000110000100011101" | |
| 7010 "00111010110010001010010010101001001101001001001010101001101011001111101011100" | |
| 7011 "01101000100011111100011110001010010000011010001000101010010110010010100010101" | |
| 7012 "10001111100101011010000111111110101110010110111111101001110000100001111110010" | |
| 7013 "00011000010101110110101111110001101001010001110000010001101110011010011110001" | |
| 7014 "01101010101101011001000100111010010010010010010110110010010011010011011010101" | |
| 7015 "01100101110001010010111010111100100000110101011000100100100010100110111011000" | |
| 7016 "10111010001110111000010101110011000001101010100001101100111010001100001001111" | |
| 7017 "01001001001010111000000101001010110110011010110011100011010100100001000100010" | |
| 7018 "00000110111010100100111010001100100100110101110101100100100100100100111001010" | |
| 7019 "01011001111110011000100111110001001001010100000000001000001111001011011010001" | |
| 7020 "00111011010010000010110111001110011010111000000110010111101001010110110011100" | |
| 7021 "01111100011111110001111011111100000110101111000101110101010000010010100110100" | |
| 7022 "01001010110110000011110111100101001001011011001001101001010001001001010101101" | |
| 7023 "00100000000111011011011101101110010010010110010010010010010010010000000110011" | |
| 7024 "10001110000101001100110001011100101101100001101000000000110110001000000000100" | |
| 7025 "00110001010111011000100111010011101011001000000000011000000100011001001101001" | |
| 7026 "01010010001111001110110101011100010011010011010010010010010011111010010110110" | |
| 7027 "11010101111000010110001010111000100100100100001100100100100000111100101100101" | |
| 7028 "10100010001001000010001100110101000001101110101101001011001100111101100001001" | |
| 7029 "01101001011100010101001101101110110000011110110011000111000001000010010000010" | |
| 7030 "11101111111001110000001011111010100100100101101111100010110101000100111110000" | |
| 7031 "00111000110101111110000010001100001000001101001000101001001001111001100011000" | |
| 7032 "01111010100010111010110010101011000010110000001010110110000011000110101010010" | |
| 7033 "11011000101011001011011010001100000110001010001000110111100000100100100010100" | |
| 7034 "10001111111100100100000111111010011000001111001111100001001001001001111111101" | |
| 7035 "11100001001110110011111000111010010010010010010010000010010010000011011010011" | |
| 7036 "11000111010101101011000010000110111101000110100100110000110101110000100100100" | |
| 7037 "10110001010110000001010000001010101011100001111101010010001101001001001001001" | |
| 7038 "01010011111110111110111010111100010010010010010011011100010010010010010000110" | |
| 7039 "01111101011001100100101010011110010101100100100100101100100100100101101100101" | |
| 7040 "10010010101001000111101010111011000001101011001001001111011000001101101001001" | |
| 7041 "01011101011000111010101001000010101101011010100110001111010110000011010010010" | |
| 7042 "11110111111011001000011101001001111001100100100101100000100100100100000110010" | |
| 7043 "00101101100110101001001100001011011001001001001001001001001001001000000001010" | |
| 7044 "01001110101000011100110000011010010010110000010100011100100011010010110010000" | |
| 7045 "01011001110011001100010011101001001010101100010000110000000000110001100100010" | |
| 7046 "11011110101100100101101111110111011001001001001010000111001001001101101010000" | |
| 7047 "10110000001001111010001001110000000010011010010000011000010010010011011010001" | |
| 7048 "00011011010000111010011010100101001010011110100100101000010101100010000100100" | |
| 7049 "01100101010110100001100110001101101011000001110111011000101101011001001000011" | |
| 7050 "01001111100111100110111110110101101110010010011011111010110000010011010001100" | |
| 7051 "00001001111101000000101011011110100000100100101101111101100100100111001101101" | |
| 7052 "01111010101101000011101111111001000001100011011111111101111111001101111110011" | |
| 7053 "00000000101101101110101110001110110100001010111000101010110111000000100011010" | |
| 7054 "11111110110001001100010110101010100100100100111010100100100011100101101010000" | |
| 7055 "10000010110110110101000110001011001001001001101000101001001111001001100010100" | |
| 7056 "10111010010110001000101011111010011100101001101111110110100111010111111111110" | |
| 7057 "10111010111111011111010010100000000110101100000111110101100010010110000000100" | |
| 7058 "10111010111000101010000010001111001111011001010101101001101011001000001000101" | |
| 7059 "10000010001101100100010110101010010010001110010010010010110010010010100101001" | |
| 7060 "11111110100011011001111101001100101100000010111001100000111111111001000100010" | |
| 7061 }, | |
| 7062 }; | |
| 7063 const int data_size = ARRAY_SIZE(data); | |
| 7064 int i, length, ret; | |
| 7065 struct zint_symbol *symbol = NULL; | |
| 7066 | |
| 7067 char escaped[4096]; | |
| 7068 char cmp_buf[32768]; | |
| 7069 char cmp_msg[1024]; | |
| 7070 | |
| 7071 #if 0 /* Need to add "force binary mode" to BWIPP for this to work */ | |
| 7072 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 7073 #endif | |
| 7074 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 7075 | |
| 7076 testStartSymbol("test_upnqr_encode", &symbol); | |
| 7077 | |
| 7078 for (i = 0; i < data_size; i++) { | |
| 7079 | |
| 7080 if (testContinue(p_ctx, i)) continue; | |
| 7081 | |
| 7082 symbol = ZBarcode_Create(); | |
| 7083 assert_nonnull(symbol, "Symbol not created\n"); | |
| 7084 | |
| 7085 length = testUtilSetSymbol(symbol, BARCODE_UPNQR, data[i].input_mode, -1 /*eci*/, data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/, data[i].data, -1, debug); | |
| 7086 | |
| 7087 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 7088 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 7089 | |
| 7090 if (p_ctx->generate) { | |
| 7091 printf(" /*%3d*/ { %s, %d, %d, %s, \"%s\", %s, %d, %d, \"%s\",\n", | |
| 7092 i, testUtilInputModeName(data[i].input_mode), data[i].option_1, data[i].option_2, | |
| 7093 testUtilOption3Name(BARCODE_UPNQR, data[i].option_3), | |
| 7094 testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), | |
| 7095 testUtilErrorName(data[i].ret), | |
| 7096 symbol->rows, symbol->width, data[i].comment); | |
| 7097 testUtilModulesPrint(symbol, " ", "\n"); | |
| 7098 printf(" },\n"); | |
| 7099 } else { | |
| 7100 if (ret < ZINT_ERROR) { | |
| 7101 int width, row; | |
| 7102 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d (%s)\n", i, symbol->rows, data[i].expected_rows, data[i].data); | |
| 7103 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data); | |
| 7104 | |
| 7105 ret = testUtilModulesCmp(symbol, data[i].expected, &width, &row); | |
| 7106 assert_zero(ret, "i:%d testUtilModulesCmp ret %d != 0 width %d row %d (%s)\n", i, ret, width, row, data[i].data); | |
| 7107 } | |
| 7108 | |
| 7109 if (ret < ZINT_ERROR) { | |
| 7110 #if 0 | |
| 7111 if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, debug)) { | |
| 7112 char modules_dump[77 * 77 + 1]; | |
| 7113 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 7114 ret = testUtilBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); | |
| 7115 assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 7116 | |
| 7117 ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); | |
| 7118 assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", | |
| 7119 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); | |
| 7120 } | |
| 7121 } | |
| 7122 #endif | |
| 7123 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { | |
| 7124 int cmp_len, ret_len; | |
| 7125 char modules_dump[77 * 77 + 1]; | |
| 7126 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 7127 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 7128 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 7129 | |
| 7130 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); | |
| 7131 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 7132 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 7133 } | |
| 7134 } | |
| 7135 } | |
| 7136 | |
| 7137 ZBarcode_Delete(symbol); | |
| 7138 } | |
| 7139 | |
| 7140 testFinish(); | |
| 7141 } | |
| 7142 | |
| 7143 static void test_rmqr_large(const testCtx *const p_ctx) { | |
| 7144 int debug = p_ctx->debug; | |
| 7145 | |
| 7146 struct item { | |
| 7147 int option_1; | |
| 7148 int option_2; | |
| 7149 char *pattern; | |
| 7150 int length; | |
| 7151 int ret; | |
| 7152 int expected_rows; | |
| 7153 int expected_width; | |
| 7154 const char *expected_errtxt; | |
| 7155 const char *comment; | |
| 7156 }; | |
| 7157 /* ISO/IEC 23941:2022 Table 6 */ | |
| 7158 /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ | |
| 7159 static const struct item data[] = { | |
| 7160 /* 0*/ { 2, 1, "1", 12, 0, 7, 43, "", "" }, | |
| 7161 /* 1*/ { 2, 1, "1", 13, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 1 R7x43-M, requires 7 codewords (maximum 6)", "" }, | |
| 7162 /* 2*/ { 2, 1, "A", 7, 0, 7, 43, "", "" }, | |
| 7163 /* 3*/ { 2, 1, "A", 8, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 1 R7x43-M, requires 7 codewords (maximum 6)", "" }, | |
| 7164 /* 4*/ { 2, 1, "\200", 5, 0, 7, 43, "", "" }, | |
| 7165 /* 5*/ { 2, 1, "\200", 6, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 1 R7x43-M, requires 7 codewords (maximum 6)", "" }, | |
| 7166 /* 6*/ { 2, 1, "\201", 6, 0, 7, 43, "", "3 Shift JIS 0x8181" }, | |
| 7167 /* 7*/ { 2, 1, "\201", 8, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 1 R7x43-M, requires 8 codewords (maximum 6)", "4 Shift JIS 0x8181" }, | |
| 7168 /* 8*/ { 4, 1, "1", 5, 0, 7, 43, "", "" }, | |
| 7169 /* 9*/ { 4, 1, "1", 6, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 1 R7x43-H, requires 4 codewords (maximum 3)", "" }, | |
| 7170 /* 10*/ { 4, 1, "A", 3, 0, 7, 43, "", "" }, | |
| 7171 /* 11*/ { 4, 1, "A", 4, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 1 R7x43-H, requires 4 codewords (maximum 3)", "" }, | |
| 7172 /* 12*/ { 4, 1, "\200", 2, 0, 7, 43, "", "" }, | |
| 7173 /* 13*/ { 4, 1, "\200", 3, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 1 R7x43-H, requires 4 codewords (maximum 3)", "" }, | |
| 7174 /* 14*/ { 4, 1, "\201", 2, 0, 7, 43, "", "1 Shift JIS 0x8181" }, | |
| 7175 /* 15*/ { 4, 1, "\201", 4, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 1 R7x43-H, requires 4 codewords (maximum 3)", "2 Shift JIS 0x8181" }, | |
| 7176 /* 16*/ { 2, 2, "1", 26, 0, 7, 59, "", "" }, | |
| 7177 /* 17*/ { 2, 2, "1", 27, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 2 R7x59-M, requires 13 codewords (maximum 12)", "" }, | |
| 7178 /* 18*/ { 2, 2, "A", 16, 0, 7, 59, "", "" }, | |
| 7179 /* 19*/ { 2, 2, "A", 17, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 2 R7x59-M, requires 13 codewords (maximum 12)", "" }, | |
| 7180 /* 20*/ { 2, 2, "\200", 11, 0, 7, 59, "", "" }, | |
| 7181 /* 21*/ { 2, 2, "\200", 12, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 2 R7x59-M, requires 13 codewords (maximum 12)", "" }, | |
| 7182 /* 22*/ { 2, 2, "\201", 12, 0, 7, 59, "", "6 Shift JIS 0x8181" }, | |
| 7183 /* 23*/ { 2, 2, "\201", 14, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 2 R7x59-M, requires 13 codewords (maximum 12)", "7 Shift JIS 0x8181" }, | |
| 7184 /* 24*/ { 4, 2, "1", 14, 0, 7, 59, "", "" }, | |
| 7185 /* 25*/ { 4, 2, "1", 15, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 2 R7x59-H, requires 8 codewords (maximum 7)", "" }, | |
| 7186 /* 26*/ { 4, 2, "A", 8, 0, 7, 59, "", "" }, | |
| 7187 /* 27*/ { 4, 2, "A", 9, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 2 R7x59-H, requires 8 codewords (maximum 7)", "" }, | |
| 7188 /* 28*/ { 4, 2, "\200", 6, 0, 7, 59, "", "" }, | |
| 7189 /* 29*/ { 4, 2, "\200", 7, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 2 R7x59-H, requires 8 codewords (maximum 7)", "" }, | |
| 7190 /* 30*/ { 4, 2, "\201", 6, 0, 7, 59, "", "3 Shift JIS 0x8181" }, | |
| 7191 /* 31*/ { 4, 2, "\201", 8, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 2 R7x59-H, requires 8 codewords (maximum 7)", "4 Shift JIS 0x8181" }, | |
| 7192 /* 32*/ { 2, 3, "1", 45, 0, 7, 77, "", "" }, | |
| 7193 /* 33*/ { 2, 3, "1", 46, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 3 R7x77-M, requires 21 codewords (maximum 20)", "" }, | |
| 7194 /* 34*/ { 2, 3, "A", 27, 0, 7, 77, "", "" }, | |
| 7195 /* 35*/ { 2, 3, "A", 28, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 3 R7x77-M, requires 21 codewords (maximum 20)", "" }, | |
| 7196 /* 36*/ { 2, 3, "\200", 19, 0, 7, 77, "", "" }, | |
| 7197 /* 37*/ { 2, 3, "\200", 20, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 3 R7x77-M, requires 21 codewords (maximum 20)", "" }, | |
| 7198 /* 38*/ { 2, 3, "\201", 22, 0, 7, 77, "", "11 Shift JIS 0x8181" }, | |
| 7199 /* 39*/ { 2, 3, "\201", 24, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 3 R7x77-M, requires 21 codewords (maximum 20)", "12 Shift JIS 0x8181" }, | |
| 7200 /* 40*/ { 4, 3, "1", 21, 0, 7, 77, "", "" }, | |
| 7201 /* 41*/ { 4, 3, "1", 22, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 3 R7x77-H, requires 11 codewords (maximum 10)", "" }, | |
| 7202 /* 42*/ { 4, 3, "A", 13, 0, 7, 77, "", "" }, | |
| 7203 /* 43*/ { 4, 3, "A", 14, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 3 R7x77-H, requires 11 codewords (maximum 10)", "" }, | |
| 7204 /* 44*/ { 4, 3, "\200", 9, 0, 7, 77, "", "" }, | |
| 7205 /* 45*/ { 4, 3, "\200", 10, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 3 R7x77-H, requires 11 codewords (maximum 10)", "" }, | |
| 7206 /* 46*/ { 4, 3, "\201", 10, 0, 7, 77, "", "5 Shift JIS 0x8181" }, | |
| 7207 /* 47*/ { 4, 3, "\201", 12, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 3 R7x77-H, requires 11 codewords (maximum 10)", "6 Shift JIS 0x8181" }, | |
| 7208 /* 48*/ { 2, 4, "1", 64, 0, 7, 99, "", "" }, | |
| 7209 /* 49*/ { 2, 4, "1", 65, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 4 R7x99-M, requires 29 codewords (maximum 28)", "" }, | |
| 7210 /* 50*/ { 2, 4, "A", 39, 0, 7, 99, "", "" }, | |
| 7211 /* 51*/ { 2, 4, "A", 40, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 4 R7x99-M, requires 29 codewords (maximum 28)", "" }, | |
| 7212 /* 52*/ { 2, 4, "\200", 27, 0, 7, 99, "", "" }, | |
| 7213 /* 53*/ { 2, 4, "\200", 28, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 4 R7x99-M, requires 29 codewords (maximum 28)", "" }, | |
| 7214 /* 54*/ { 2, 4, "\201", 32, 0, 7, 99, "", "16 Shift JIS 0x8181" }, | |
| 7215 /* 55*/ { 2, 4, "\201", 34, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 4 R7x99-M, requires 29 codewords (maximum 28)", "17 Shift JIS 0x8181" }, | |
| 7216 /* 56*/ { 4, 4, "1", 30, 0, 7, 99, "", "" }, | |
| 7217 /* 57*/ { 4, 4, "1", 31, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 4 R7x99-H, requires 15 codewords (maximum 14)", "" }, | |
| 7218 /* 58*/ { 4, 4, "A", 18, 0, 7, 99, "", "" }, | |
| 7219 /* 59*/ { 4, 4, "A", 19, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 4 R7x99-H, requires 15 codewords (maximum 14)", "" }, | |
| 7220 /* 60*/ { 4, 4, "\200", 13, 0, 7, 99, "", "" }, | |
| 7221 /* 61*/ { 4, 4, "\200", 14, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 4 R7x99-H, requires 15 codewords (maximum 14)", "" }, | |
| 7222 /* 62*/ { 4, 4, "\201", 16, 0, 7, 99, "", "8 Shift JIS 0x8181" }, | |
| 7223 /* 63*/ { 4, 4, "\201", 18, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 4 R7x99-H, requires 16 codewords (maximum 14)", "9 Shift JIS 0x8181" }, | |
| 7224 /* 64*/ { 2, 5, "1", 102, 0, 7, 139, "", "" }, | |
| 7225 /* 65*/ { 2, 5, "1", 103, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 5 R7x139-M, requires 45 codewords (maximum 44)", "" }, | |
| 7226 /* 66*/ { 2, 5, "A", 62, 0, 7, 139, "", "" }, | |
| 7227 /* 67*/ { 2, 5, "A", 63, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 5 R7x139-M, requires 45 codewords (maximum 44)", "" }, | |
| 7228 /* 68*/ { 2, 5, "\200", 42, 0, 7, 139, "", "" }, | |
| 7229 /* 69*/ { 2, 5, "\200", 43, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 5 R7x139-M, requires 45 codewords (maximum 44)", "" }, | |
| 7230 /* 70*/ { 2, 5, "\201", 52, 0, 7, 139, "", "26 Shift JIS 0x8181" }, | |
| 7231 /* 71*/ { 2, 5, "\201", 54, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 5 R7x139-M, requires 45 codewords (maximum 44)", "27 Shift JIS 0x8181" }, | |
| 7232 /* 72*/ { 4, 5, "1", 54, 0, 7, 139, "", "" }, | |
| 7233 /* 73*/ { 4, 5, "1", 55, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 5 R7x139-H, requires 25 codewords (maximum 24)", "" }, | |
| 7234 /* 74*/ { 4, 5, "A", 33, 0, 7, 139, "", "" }, | |
| 7235 /* 75*/ { 4, 5, "A", 34, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 5 R7x139-H, requires 25 codewords (maximum 24)", "" }, | |
| 7236 /* 76*/ { 4, 5, "\200", 22, 0, 7, 139, "", "" }, | |
| 7237 /* 77*/ { 4, 5, "\200", 23, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 5 R7x139-H, requires 25 codewords (maximum 24)", "" }, | |
| 7238 /* 78*/ { 4, 5, "\201", 28, 0, 7, 139, "", "14 Shift JIS 0x8181" }, | |
| 7239 /* 79*/ { 4, 5, "\201", 30, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 5 R7x139-H, requires 26 codewords (maximum 24)", "15 Shift JIS 0x8181" }, | |
| 7240 /* 80*/ { 2, 6, "1", 26, 0, 9, 43, "", "" }, | |
| 7241 /* 81*/ { 2, 6, "1", 27, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 6 R9x43-M, requires 13 codewords (maximum 12)", "" }, | |
| 7242 /* 82*/ { 2, 6, "A", 16, 0, 9, 43, "", "" }, | |
| 7243 /* 83*/ { 2, 6, "A", 17, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 6 R9x43-M, requires 13 codewords (maximum 12)", "" }, | |
| 7244 /* 84*/ { 2, 6, "\200", 11, 0, 9, 43, "", "" }, | |
| 7245 /* 85*/ { 2, 6, "\200", 12, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 6 R9x43-M, requires 13 codewords (maximum 12)", "" }, | |
| 7246 /* 86*/ { 2, 6, "\201", 12, 0, 9, 43, "", "6 Shift JIS 0x8181" }, | |
| 7247 /* 87*/ { 2, 6, "\201", 14, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 6 R9x43-M, requires 13 codewords (maximum 12)", "7 Shift JIS 0x8181" }, | |
| 7248 /* 88*/ { 4, 6, "1", 14, 0, 9, 43, "", "" }, | |
| 7249 /* 89*/ { 4, 6, "1", 15, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 6 R9x43-H, requires 8 codewords (maximum 7)", "" }, | |
| 7250 /* 90*/ { 4, 6, "A", 8, 0, 9, 43, "", "" }, | |
| 7251 /* 91*/ { 4, 6, "A", 9, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 6 R9x43-H, requires 8 codewords (maximum 7)", "" }, | |
| 7252 /* 92*/ { 4, 6, "\200", 6, 0, 9, 43, "", "" }, | |
| 7253 /* 93*/ { 4, 6, "\200", 7, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 6 R9x43-H, requires 8 codewords (maximum 7)", "" }, | |
| 7254 /* 94*/ { 4, 6, "\201", 6, 0, 9, 43, "", "3 Shift JIS 0x8181" }, | |
| 7255 /* 95*/ { 4, 6, "\201", 8, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 6 R9x43-H, requires 8 codewords (maximum 7)", "4 Shift JIS 0x8181" }, | |
| 7256 /* 96*/ { 2, 7, "1", 47, 0, 9, 59, "", "" }, | |
| 7257 /* 97*/ { 2, 7, "1", 48, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 7 R9x59-M, requires 22 codewords (maximum 21)", "" }, | |
| 7258 /* 98*/ { 2, 7, "A", 29, 0, 9, 59, "", "" }, | |
| 7259 /* 99*/ { 2, 7, "A", 30, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 7 R9x59-M, requires 22 codewords (maximum 21)", "" }, | |
| 7260 /*100*/ { 2, 7, "\200", 20, 0, 9, 59, "", "" }, | |
| 7261 /*101*/ { 2, 7, "\200", 21, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 7 R9x59-M, requires 22 codewords (maximum 21)", "" }, | |
| 7262 /*102*/ { 2, 7, "\201", 24, 0, 9, 59, "", "12 Shift JIS 0x8181" }, | |
| 7263 /*103*/ { 2, 7, "\201", 26, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 7 R9x59-M, requires 22 codewords (maximum 21)", "13 Shift JIS 0x8181" }, | |
| 7264 /*104*/ { 4, 7, "1", 23, 0, 9, 59, "", "" }, | |
| 7265 /*105*/ { 4, 7, "1", 24, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 7 R9x59-H, requires 12 codewords (maximum 11)", "" }, | |
| 7266 /*106*/ { 4, 7, "A", 14, 0, 9, 59, "", "" }, | |
| 7267 /*107*/ { 4, 7, "A", 15, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 7 R9x59-H, requires 12 codewords (maximum 11)", "" }, | |
| 7268 /*108*/ { 4, 7, "\200", 10, 0, 9, 59, "", "" }, | |
| 7269 /*109*/ { 4, 7, "\200", 11, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 7 R9x59-H, requires 12 codewords (maximum 11)", "" }, | |
| 7270 /*110*/ { 4, 7, "\201", 12, 0, 9, 59, "", "6 Shift JIS 0x8181" }, | |
| 7271 /*111*/ { 4, 7, "\201", 14, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 7 R9x59-H, requires 13 codewords (maximum 11)", "7 Shift JIS 0x8181" }, | |
| 7272 /*112*/ { 2, 8, "1", 71, 0, 9, 77, "", "" }, | |
| 7273 /*113*/ { 2, 8, "1", 72, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 8 R9x77-M, requires 32 codewords (maximum 31)", "" }, | |
| 7274 /*114*/ { 2, 8, "A", 43, 0, 9, 77, "", "" }, | |
| 7275 /*115*/ { 2, 8, "A", 44, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 8 R9x77-M, requires 32 codewords (maximum 31)", "" }, | |
| 7276 /*116*/ { 2, 8, "\200", 30, 0, 9, 77, "", "" }, | |
| 7277 /*117*/ { 2, 8, "\200", 31, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 8 R9x77-M, requires 32 codewords (maximum 31)", "" }, | |
| 7278 /*118*/ { 2, 8, "\201", 36, 0, 9, 77, "", "18 Shift JIS 0x8181" }, | |
| 7279 /*119*/ { 2, 8, "\201", 38, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 8 R9x77-M, requires 32 codewords (maximum 31)", "19 Shift JIS 0x8181" }, | |
| 7280 /*120*/ { 4, 8, "1", 37, 0, 9, 77, "", "" }, | |
| 7281 /*121*/ { 4, 8, "1", 38, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 8 R9x77-H, requires 18 codewords (maximum 17)", "" }, | |
| 7282 /*122*/ { 4, 8, "A", 23, 0, 9, 77, "", "" }, | |
| 7283 /*123*/ { 4, 8, "A", 24, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 8 R9x77-H, requires 18 codewords (maximum 17)", "" }, | |
| 7284 /*124*/ { 4, 8, "\200", 16, 0, 9, 77, "", "" }, | |
| 7285 /*125*/ { 4, 8, "\200", 17, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 8 R9x77-H, requires 18 codewords (maximum 17)", "" }, | |
| 7286 /*126*/ { 4, 8, "\201", 18, 0, 9, 77, "", "9 Shift JIS 0x8181" }, | |
| 7287 /*127*/ { 4, 8, "\201", 20, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 8 R9x77-H, requires 18 codewords (maximum 17)", "10 Shift JIS 0x8181" }, | |
| 7288 /*128*/ { 2, 9, "1", 97, 0, 9, 99, "", "" }, | |
| 7289 /*129*/ { 2, 9, "1", 98, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 9 R9x99-M, requires 43 codewords (maximum 42)", "" }, | |
| 7290 /*130*/ { 2, 9, "A", 59, 0, 9, 99, "", "" }, | |
| 7291 /*131*/ { 2, 9, "A", 60, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 9 R9x99-M, requires 43 codewords (maximum 42)", "" }, | |
| 7292 /*132*/ { 2, 9, "\200", 40, 0, 9, 99, "", "" }, | |
| 7293 /*133*/ { 2, 9, "\200", 41, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 9 R9x99-M, requires 43 codewords (maximum 42)", "" }, | |
| 7294 /*134*/ { 2, 9, "\201", 50, 0, 9, 99, "", "25 Shift JIS 0x8181" }, | |
| 7295 /*135*/ { 2, 9, "\201", 52, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 9 R9x99-M, requires 44 codewords (maximum 42)", "26 Shift JIS 0x8181" }, | |
| 7296 /*136*/ { 4, 9, "1", 49, 0, 9, 99, "", "" }, | |
| 7297 /*137*/ { 4, 9, "1", 50, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 9 R9x99-H, requires 23 codewords (maximum 22)", "" }, | |
| 7298 /*138*/ { 4, 9, "A", 30, 0, 9, 99, "", "" }, | |
| 7299 /*139*/ { 4, 9, "A", 31, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 9 R9x99-H, requires 23 codewords (maximum 22)", "" }, | |
| 7300 /*140*/ { 4, 9, "\200", 20, 0, 9, 99, "", "" }, | |
| 7301 /*141*/ { 4, 9, "\200", 21, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 9 R9x99-H, requires 23 codewords (maximum 22)", "" }, | |
| 7302 /*142*/ { 4, 9, "\201", 24, 0, 9, 99, "", "12 Shift JIS 0x8181" }, | |
| 7303 /*143*/ { 4, 9, "\201", 26, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 9 R9x99-H, requires 23 codewords (maximum 22)", "13 Shift JIS 0x8181" }, | |
| 7304 /*144*/ { 2, 10, "1", 147, 0, 9, 139, "", "" }, | |
| 7305 /*145*/ { 2, 10, "1", 148, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 10 R9x139-M, requires 64 codewords (maximum 63)", "" }, | |
| 7306 /*146*/ { 2, 10, "A", 89, 0, 9, 139, "", "" }, | |
| 7307 /*147*/ { 2, 10, "A", 90, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 10 R9x139-M, requires 64 codewords (maximum 63)", "" }, | |
| 7308 /*148*/ { 2, 10, "\200", 61, 0, 9, 139, "", "" }, | |
| 7309 /*149*/ { 2, 10, "\200", 62, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 10 R9x139-M, requires 64 codewords (maximum 63)", "" }, | |
| 7310 /*150*/ { 2, 10, "\201", 76, 0, 9, 139, "", "36 Shift JIS 0x8181" }, | |
| 7311 /*151*/ { 2, 10, "\201", 78, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 10 R9x139-M, requires 65 codewords (maximum 63)", "37 Shift JIS 0x8181" }, | |
| 7312 /*152*/ { 4, 10, "1", 75, 0, 9, 139, "", "" }, | |
| 7313 /*153*/ { 4, 10, "1", 76, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 10 R9x139-H, requires 34 codewords (maximum 33)", "" }, | |
| 7314 /*154*/ { 4, 10, "A", 46, 0, 9, 139, "", "" }, | |
| 7315 /*155*/ { 4, 10, "A", 47, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 10 R9x139-H, requires 34 codewords (maximum 33)", "" }, | |
| 7316 /*156*/ { 4, 10, "\200", 31, 0, 9, 139, "", "" }, | |
| 7317 /*157*/ { 4, 10, "\200", 32, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 10 R9x139-H, requires 34 codewords (maximum 33)", "" }, | |
| 7318 /*158*/ { 4, 10, "\201", 38, 0, 9, 139, "", "19 Shift JIS 0x8181" }, | |
| 7319 /*159*/ { 4, 10, "\201", 40, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 10 R9x139-H, requires 34 codewords (maximum 33)", "20 Shift JIS 0x8181" }, | |
| 7320 /*160*/ { 2, 11, "1", 14, 0, 11, 27, "", "" }, | |
| 7321 /*161*/ { 2, 11, "1", 15, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 11 R11x27-M, requires 8 codewords (maximum 7)", "" }, | |
| 7322 /*162*/ { 2, 11, "A", 8, 0, 11, 27, "", "" }, | |
| 7323 /*163*/ { 2, 11, "A", 9, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 11 R11x27-M, requires 8 codewords (maximum 7)", "" }, | |
| 7324 /*164*/ { 2, 11, "\200", 6, 0, 11, 27, "", "" }, | |
| 7325 /*165*/ { 2, 11, "\200", 7, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 11 R11x27-M, requires 8 codewords (maximum 7)", "" }, | |
| 7326 /*166*/ { 2, 11, "\201", 6, 0, 11, 27, "", "3 Shift JIS 0x8181" }, | |
| 7327 /*167*/ { 2, 11, "\201", 8, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 11 R11x27-M, requires 8 codewords (maximum 7)", "4 Shift JIS 0x8181" }, | |
| 7328 /*168*/ { 4, 11, "1", 9, 0, 11, 27, "", "" }, | |
| 7329 /*169*/ { 4, 11, "1", 10, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 11 R11x27-H, requires 6 codewords (maximum 5)", "" }, | |
| 7330 /*170*/ { 4, 11, "A", 6, 0, 11, 27, "", "" }, | |
| 7331 /*171*/ { 4, 11, "A", 7, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 11 R11x27-H, requires 6 codewords (maximum 5)", "" }, | |
| 7332 /*172*/ { 4, 11, "\200", 4, 0, 11, 27, "", "" }, | |
| 7333 /*173*/ { 4, 11, "\200", 5, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 11 R11x27-H, requires 6 codewords (maximum 5)", "" }, | |
| 7334 /*174*/ { 4, 11, "\201", 4, 0, 11, 27, "", "2 Shift JIS 0x8181" }, | |
| 7335 /*175*/ { 4, 11, "\201", 6, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 11 R11x27-H, requires 6 codewords (maximum 5)", "3 Shift JIS 0x8181" }, | |
| 7336 /*176*/ { 2, 12, "1", 42, 0, 11, 43, "", "" }, | |
| 7337 /*177*/ { 2, 12, "1", 43, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 12 R11x43-M, requires 20 codewords (maximum 19)", "" }, | |
| 7338 /*178*/ { 2, 12, "A", 26, 0, 11, 43, "", "" }, | |
| 7339 /*179*/ { 2, 12, "A", 27, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 12 R11x43-M, requires 20 codewords (maximum 19)", "" }, | |
| 7340 /*180*/ { 2, 12, "\200", 18, 0, 11, 43, "", "" }, | |
| 7341 /*181*/ { 2, 12, "\200", 19, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 12 R11x43-M, requires 20 codewords (maximum 19)", "" }, | |
| 7342 /*182*/ { 2, 12, "\201", 22, 0, 11, 43, "", "11 Shift JIS 0x8181" }, | |
| 7343 /*183*/ { 2, 12, "\201", 24, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 12 R11x43-M, requires 21 codewords (maximum 19)", "12 Shift JIS 0x8181" }, | |
| 7344 /*184*/ { 4, 12, "1", 23, 0, 11, 43, "", "" }, | |
| 7345 /*185*/ { 4, 12, "1", 24, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 12 R11x43-H, requires 12 codewords (maximum 11)", "" }, | |
| 7346 /*186*/ { 4, 12, "A", 14, 0, 11, 43, "", "" }, | |
| 7347 /*187*/ { 4, 12, "A", 15, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 12 R11x43-H, requires 12 codewords (maximum 11)", "" }, | |
| 7348 /*188*/ { 4, 12, "\200", 10, 0, 11, 43, "", "" }, | |
| 7349 /*189*/ { 4, 12, "\200", 11, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 12 R11x43-H, requires 12 codewords (maximum 11)", "" }, | |
| 7350 /*190*/ { 4, 12, "\201", 12, 0, 11, 43, "", "6 Shift JIS 0x8181" }, | |
| 7351 /*191*/ { 4, 12, "\201", 14, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 12 R11x43-H, requires 13 codewords (maximum 11)", "7 Shift JIS 0x8181" }, | |
| 7352 /*192*/ { 2, 13, "1", 71, 0, 11, 59, "", "" }, | |
| 7353 /*193*/ { 2, 13, "1", 72, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 13 R11x59-M, requires 32 codewords (maximum 31)", "" }, | |
| 7354 /*194*/ { 2, 13, "A", 43, 0, 11, 59, "", "" }, | |
| 7355 /*195*/ { 2, 13, "A", 44, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 13 R11x59-M, requires 32 codewords (maximum 31)", "" }, | |
| 7356 /*196*/ { 2, 13, "\200", 30, 0, 11, 59, "", "" }, | |
| 7357 /*197*/ { 2, 13, "\200", 31, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 13 R11x59-M, requires 32 codewords (maximum 31)", "" }, | |
| 7358 /*198*/ { 2, 13, "\201", 36, 0, 11, 59, "", "18 Shift JIS 0x8181" }, | |
| 7359 /*199*/ { 2, 13, "\201", 38, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 13 R11x59-M, requires 32 codewords (maximum 31)", "19 Shift JIS 0x8181" }, | |
| 7360 /*200*/ { 4, 13, "1", 33, 0, 11, 59, "", "" }, | |
| 7361 /*201*/ { 4, 13, "1", 34, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 13 R11x59-H, requires 16 codewords (maximum 15)", "" }, | |
| 7362 /*202*/ { 4, 13, "A", 20, 0, 11, 59, "", "" }, | |
| 7363 /*203*/ { 4, 13, "A", 21, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 13 R11x59-H, requires 16 codewords (maximum 15)", "" }, | |
| 7364 /*204*/ { 4, 13, "\200", 14, 0, 11, 59, "", "" }, | |
| 7365 /*205*/ { 4, 13, "\200", 15, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 13 R11x59-H, requires 16 codewords (maximum 15)", "" }, | |
| 7366 /*206*/ { 4, 13, "\201", 16, 0, 11, 59, "", "8 Shift JIS 0x8181" }, | |
| 7367 /*207*/ { 4, 13, "\201", 18, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 13 R11x59-H, requires 16 codewords (maximum 15)", "9 Shift JIS 0x8181" }, | |
| 7368 /*208*/ { 2, 14, "1", 100, 0, 11, 77, "", "" }, | |
| 7369 /*209*/ { 2, 14, "1", 101, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 14 R11x77-M, requires 44 codewords (maximum 43)", "" }, | |
| 7370 /*210*/ { 2, 14, "A", 60, 0, 11, 77, "", "" }, | |
| 7371 /*211*/ { 2, 14, "A", 61, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 14 R11x77-M, requires 44 codewords (maximum 43)", "" }, | |
| 7372 /*212*/ { 2, 14, "\200", 41, 0, 11, 77, "", "" }, | |
| 7373 /*213*/ { 2, 14, "\200", 42, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 14 R11x77-M, requires 44 codewords (maximum 43)", "" }, | |
| 7374 /*214*/ { 2, 14, "\201", 50, 0, 11, 77, "", "25 Shift JIS 0x8181" }, | |
| 7375 /*215*/ { 2, 14, "\201", 52, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 14 R11x77-M, requires 44 codewords (maximum 43)", "26 Shift JIS 0x8181" }, | |
| 7376 /*216*/ { 4, 14, "1", 52, 0, 11, 77, "", "" }, | |
| 7377 /*217*/ { 4, 14, "1", 53, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 14 R11x77-H, requires 24 codewords (maximum 23)", "" }, | |
| 7378 /*218*/ { 4, 14, "A", 31, 0, 11, 77, "", "" }, | |
| 7379 /*219*/ { 4, 14, "A", 32, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 14 R11x77-H, requires 24 codewords (maximum 23)", "" }, | |
| 7380 /*220*/ { 4, 14, "\200", 21, 0, 11, 77, "", "" }, | |
| 7381 /*221*/ { 4, 14, "\200", 22, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 14 R11x77-H, requires 24 codewords (maximum 23)", "" }, | |
| 7382 /*222*/ { 4, 14, "\201", 26, 0, 11, 77, "", "13 Shift JIS 0x8181" }, | |
| 7383 /*223*/ { 4, 14, "\201", 28, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 14 R11x77-H, requires 24 codewords (maximum 23)", "14 Shift JIS 0x8181" }, | |
| 7384 /*224*/ { 2, 15, "1", 133, 0, 11, 99, "", "" }, | |
| 7385 /*225*/ { 2, 15, "1", 134, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 15 R11x99-M, requires 58 codewords (maximum 57)", "" }, | |
| 7386 /*226*/ { 2, 15, "A", 81, 0, 11, 99, "", "" }, | |
| 7387 /*227*/ { 2, 15, "A", 82, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 15 R11x99-M, requires 58 codewords (maximum 57)", "" }, | |
| 7388 /*228*/ { 2, 15, "\200", 55, 0, 11, 99, "", "" }, | |
| 7389 /*229*/ { 2, 15, "\200", 56, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 15 R11x99-M, requires 58 codewords (maximum 57)", "" }, | |
| 7390 /*230*/ { 2, 15, "\201", 68, 0, 11, 99, "", "34 Shift JIS 0x8181" }, | |
| 7391 /*231*/ { 2, 15, "\201", 70, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 15 R11x99-M, requires 58 codewords (maximum 57)", "35 Shift JIS 0x8181" }, | |
| 7392 /*232*/ { 4, 15, "1", 66, 0, 11, 99, "", "" }, | |
| 7393 /*233*/ { 4, 15, "1", 67, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 15 R11x99-H, requires 30 codewords (maximum 29)", "" }, | |
| 7394 /*234*/ { 4, 15, "A", 40, 0, 11, 99, "", "" }, | |
| 7395 /*235*/ { 4, 15, "A", 41, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 15 R11x99-H, requires 30 codewords (maximum 29)", "" }, | |
| 7396 /*236*/ { 4, 15, "\200", 27, 0, 11, 99, "", "" }, | |
| 7397 /*237*/ { 4, 15, "\200", 28, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 15 R11x99-H, requires 30 codewords (maximum 29)", "" }, | |
| 7398 /*238*/ { 4, 15, "\201", 34, 0, 11, 99, "", "17 Shift JIS 0x8181" }, | |
| 7399 /*239*/ { 4, 15, "\201", 36, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 15 R11x99-H, requires 31 codewords (maximum 29)", "18 Shift JIS 0x8181" }, | |
| 7400 /*240*/ { 2, 16, "1", 198, 0, 11, 139, "", "" }, | |
| 7401 /*241*/ { 2, 16, "1", 199, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 16 R11x139-M, requires 85 codewords (maximum 84)", "" }, | |
| 7402 /*242*/ { 2, 16, "A", 120, 0, 11, 139, "", "" }, | |
| 7403 /*243*/ { 2, 16, "A", 121, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 16 R11x139-M, requires 85 codewords (maximum 84)", "" }, | |
| 7404 /*244*/ { 2, 16, "\200", 82, 0, 11, 139, "", "" }, | |
| 7405 /*245*/ { 2, 16, "\200", 83, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 16 R11x139-M, requires 85 codewords (maximum 84)", "" }, | |
| 7406 /*246*/ { 2, 16, "\201", 102, 0, 11, 139, "", "51 Shift JIS 0x8181" }, | |
| 7407 /*247*/ { 2, 16, "\201", 104, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 16 R11x139-M, requires 86 codewords (maximum 84)", "52 Shift JIS 0x8181" }, | |
| 7408 /*248*/ { 4, 16, "1", 97, 0, 11, 139, "", "" }, | |
| 7409 /*249*/ { 4, 16, "1", 98, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 16 R11x139-H, requires 43 codewords (maximum 42)", "" }, | |
| 7410 /*250*/ { 4, 16, "A", 59, 0, 11, 139, "", "" }, | |
| 7411 /*251*/ { 4, 16, "A", 60, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 16 R11x139-H, requires 43 codewords (maximum 42)", "" }, | |
| 7412 /*252*/ { 4, 16, "\200", 40, 0, 11, 139, "", "" }, | |
| 7413 /*253*/ { 4, 16, "\200", 41, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 16 R11x139-H, requires 43 codewords (maximum 42)", "" }, | |
| 7414 /*254*/ { 4, 16, "\201", 50, 0, 11, 139, "", "25 Shift JIS 0x8181" }, | |
| 7415 /*255*/ { 4, 16, "\201", 52, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 16 R11x139-H, requires 44 codewords (maximum 42)", "26 Shift JIS 0x8181" }, | |
| 7416 /*256*/ { 2, 17, "1", 26, 0, 13, 27, "", "" }, | |
| 7417 /*257*/ { 2, 17, "1", 27, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 17 R13x27-M, requires 13 codewords (maximum 12)", "" }, | |
| 7418 /*258*/ { 2, 17, "A", 16, 0, 13, 27, "", "" }, | |
| 7419 /*259*/ { 2, 17, "A", 17, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 17 R13x27-M, requires 13 codewords (maximum 12)", "" }, | |
| 7420 /*260*/ { 2, 17, "\200", 11, 0, 13, 27, "", "" }, | |
| 7421 /*261*/ { 2, 17, "\200", 12, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 17 R13x27-M, requires 13 codewords (maximum 12)", "" }, | |
| 7422 /*262*/ { 2, 17, "\201", 12, 0, 13, 27, "", "6 Shift JIS 0x8181" }, | |
| 7423 /*263*/ { 2, 17, "\201", 14, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 17 R13x27-M, requires 13 codewords (maximum 12)", "7 Shift JIS 0x8181" }, | |
| 7424 /*264*/ { 4, 17, "1", 14, 0, 13, 27, "", "" }, | |
| 7425 /*265*/ { 4, 17, "1", 15, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 17 R13x27-H, requires 8 codewords (maximum 7)", "" }, | |
| 7426 /*266*/ { 4, 17, "A", 8, 0, 13, 27, "", "" }, | |
| 7427 /*267*/ { 4, 17, "A", 9, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 17 R13x27-H, requires 8 codewords (maximum 7)", "" }, | |
| 7428 /*268*/ { 4, 17, "\200", 6, 0, 13, 27, "", "" }, | |
| 7429 /*269*/ { 4, 17, "\200", 7, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 17 R13x27-H, requires 8 codewords (maximum 7)", "" }, | |
| 7430 /*270*/ { 4, 17, "\201", 6, 0, 13, 27, "", "3 Shift JIS 0x8181" }, | |
| 7431 /*271*/ { 4, 17, "\201", 8, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 17 R13x27-H, requires 8 codewords (maximum 7)", "4 Shift JIS 0x8181" }, | |
| 7432 /*272*/ { 2, 18, "1", 62, 0, 13, 43, "", "" }, | |
| 7433 /*273*/ { 2, 18, "1", 63, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 18 R13x43-M, requires 28 codewords (maximum 27)", "" }, | |
| 7434 /*274*/ { 2, 18, "A", 37, 0, 13, 43, "", "" }, | |
| 7435 /*275*/ { 2, 18, "A", 38, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 18 R13x43-M, requires 28 codewords (maximum 27)", "" }, | |
| 7436 /*276*/ { 2, 18, "\200", 26, 0, 13, 43, "", "" }, | |
| 7437 /*277*/ { 2, 18, "\200", 27, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 18 R13x43-M, requires 28 codewords (maximum 27)", "" }, | |
| 7438 /*278*/ { 2, 18, "\201", 32, 0, 13, 43, "", "16 Shift JIS 0x8181" }, | |
| 7439 /*279*/ { 2, 18, "\201", 34, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 18 R13x43-M, requires 29 codewords (maximum 27)", "17 Shift JIS 0x8181" }, | |
| 7440 /*280*/ { 4, 18, "1", 28, 0, 13, 43, "", "" }, | |
| 7441 /*281*/ { 4, 18, "1", 29, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 18 R13x43-H, requires 14 codewords (maximum 13)", "" }, | |
| 7442 /*282*/ { 4, 18, "A", 17, 0, 13, 43, "", "" }, | |
| 7443 /*283*/ { 4, 18, "A", 18, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 18 R13x43-H, requires 14 codewords (maximum 13)", "" }, | |
| 7444 /*284*/ { 4, 18, "\200", 12, 0, 13, 43, "", "" }, | |
| 7445 /*285*/ { 4, 18, "\200", 13, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 18 R13x43-H, requires 14 codewords (maximum 13)", "" }, | |
| 7446 /*286*/ { 4, 18, "\201", 14, 0, 13, 43, "", "7 Shift JIS 0x8181" }, | |
| 7447 /*287*/ { 4, 18, "\201", 16, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 18 R13x43-H, requires 14 codewords (maximum 13)", "8 Shift JIS 0x8181" }, | |
| 7448 /*288*/ { 2, 19, "1", 88, 0, 13, 59, "", "" }, | |
| 7449 /*289*/ { 2, 19, "1", 89, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 19 R13x59-M, requires 39 codewords (maximum 38)", "" }, | |
| 7450 /*290*/ { 2, 19, "A", 53, 0, 13, 59, "", "" }, | |
| 7451 /*291*/ { 2, 19, "A", 54, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 19 R13x59-M, requires 39 codewords (maximum 38)", "" }, | |
| 7452 /*292*/ { 2, 19, "\200", 36, 0, 13, 59, "", "" }, | |
| 7453 /*293*/ { 2, 19, "\200", 37, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 19 R13x59-M, requires 39 codewords (maximum 38)", "" }, | |
| 7454 /*294*/ { 2, 19, "\201", 44, 0, 13, 59, "", "22 Shift JIS 0x8181" }, | |
| 7455 /*295*/ { 2, 19, "\201", 46, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 19 R13x59-M, requires 39 codewords (maximum 38)", "23 Shift JIS 0x8181" }, | |
| 7456 /*296*/ { 4, 19, "1", 45, 0, 13, 59, "", "" }, | |
| 7457 /*297*/ { 4, 19, "1", 46, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 19 R13x59-H, requires 21 codewords (maximum 20)", "" }, | |
| 7458 /*298*/ { 4, 19, "A", 27, 0, 13, 59, "", "" }, | |
| 7459 /*299*/ { 4, 19, "A", 28, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 19 R13x59-H, requires 21 codewords (maximum 20)", "" }, | |
| 7460 /*300*/ { 4, 19, "\200", 18, 0, 13, 59, "", "" }, | |
| 7461 /*301*/ { 4, 19, "\200", 19, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 19 R13x59-H, requires 21 codewords (maximum 20)", "" }, | |
| 7462 /*302*/ { 4, 19, "\201", 22, 0, 13, 59, "", "11 Shift JIS 0x8181" }, | |
| 7463 /*303*/ { 4, 19, "\201", 24, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 19 R13x59-H, requires 21 codewords (maximum 20)", "12 Shift JIS 0x8181" }, | |
| 7464 /*304*/ { 2, 20, "1", 124, 0, 13, 77, "", "" }, | |
| 7465 /*305*/ { 2, 20, "1", 125, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 20 R13x77-M, requires 54 codewords (maximum 53)", "" }, | |
| 7466 /*306*/ { 2, 20, "A", 75, 0, 13, 77, "", "" }, | |
| 7467 /*307*/ { 2, 20, "A", 76, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 20 R13x77-M, requires 54 codewords (maximum 53)", "" }, | |
| 7468 /*308*/ { 2, 20, "\200", 51, 0, 13, 77, "", "" }, | |
| 7469 /*309*/ { 2, 20, "\200", 52, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 20 R13x77-M, requires 54 codewords (maximum 53)", "" }, | |
| 7470 /*310*/ { 2, 20, "\201", 62, 0, 13, 77, "", "31 Shift JIS 0x8181" }, | |
| 7471 /*311*/ { 2, 20, "\201", 64, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 20 R13x77-M, requires 54 codewords (maximum 53)", "32 Shift JIS 0x8181" }, | |
| 7472 /*312*/ { 4, 20, "1", 66, 0, 13, 77, "", "" }, | |
| 7473 /*313*/ { 4, 20, "1", 67, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 20 R13x77-H, requires 30 codewords (maximum 29)", "" }, | |
| 7474 /*314*/ { 4, 20, "A", 40, 0, 13, 77, "", "" }, | |
| 7475 /*315*/ { 4, 20, "A", 41, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 20 R13x77-H, requires 30 codewords (maximum 29)", "" }, | |
| 7476 /*316*/ { 4, 20, "\200", 27, 0, 13, 77, "", "" }, | |
| 7477 /*317*/ { 4, 20, "\200", 28, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 20 R13x77-H, requires 30 codewords (maximum 29)", "" }, | |
| 7478 /*318*/ { 4, 20, "\201", 34, 0, 13, 77, "", "17 Shift JIS 0x8181" }, | |
| 7479 /*319*/ { 4, 20, "\201", 36, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 20 R13x77-H, requires 31 codewords (maximum 29)", "18 Shift JIS 0x8181" }, | |
| 7480 /*320*/ { 2, 21, "1", 171, 0, 13, 99, "", "" }, | |
| 7481 /*321*/ { 2, 21, "1", 172, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 21 R13x99-M, requires 74 codewords (maximum 73)", "" }, | |
| 7482 /*322*/ { 2, 21, "A", 104, 0, 13, 99, "", "" }, | |
| 7483 /*323*/ { 2, 21, "A", 105, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 21 R13x99-M, requires 74 codewords (maximum 73)", "" }, | |
| 7484 /*324*/ { 2, 21, "\200", 71, 0, 13, 99, "", "" }, | |
| 7485 /*325*/ { 2, 21, "\200", 72, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 21 R13x99-M, requires 74 codewords (maximum 73)", "" }, | |
| 7486 /*326*/ { 2, 21, "\201", 88, 0, 13, 99, "", "44 Shift JIS 0x8181" }, | |
| 7487 /*327*/ { 2, 21, "\201", 90, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 21 R13x99-M, requires 75 codewords (maximum 73)", "45 Shift JIS 0x8181" }, | |
| 7488 /*328*/ { 4, 21, "1", 80, 0, 13, 99, "", "" }, | |
| 7489 /*329*/ { 4, 21, "1", 81, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 21 R13x99-H, requires 36 codewords (maximum 35)", "" }, | |
| 7490 /*330*/ { 4, 21, "A", 49, 0, 13, 99, "", "" }, | |
| 7491 /*331*/ { 4, 21, "A", 50, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 21 R13x99-H, requires 36 codewords (maximum 35)", "" }, | |
| 7492 /*332*/ { 4, 21, "\200", 33, 0, 13, 99, "", "" }, | |
| 7493 /*333*/ { 4, 21, "\200", 34, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 21 R13x99-H, requires 36 codewords (maximum 35)", "" }, | |
| 7494 /*334*/ { 4, 21, "\201", 40, 0, 13, 99, "", "20 Shift JIS 0x8181" }, | |
| 7495 /*335*/ { 4, 21, "\201", 42, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 21 R13x99-H, requires 36 codewords (maximum 35)", "21 Shift JIS 0x8181" }, | |
| 7496 /*336*/ { 2, 22, "1", 251, 0, 13, 139, "", "" }, | |
| 7497 /*337*/ { 2, 22, "1", 252, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 22 R13x139-M, requires 107 codewords (maximum 106)", "" }, | |
| 7498 /*338*/ { 2, 22, "A", 152, 0, 13, 139, "", "" }, | |
| 7499 /*339*/ { 2, 22, "A", 153, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 22 R13x139-M, requires 107 codewords (maximum 106)", "" }, | |
| 7500 /*340*/ { 2, 22, "\200", 104, 0, 13, 139, "", "" }, | |
| 7501 /*341*/ { 2, 22, "\200", 105, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 22 R13x139-M, requires 107 codewords (maximum 106)", "" }, | |
| 7502 /*342*/ { 2, 22, "\201", 128, 0, 13, 139, "", "64 Shift JIS 0x8181" }, | |
| 7503 /*343*/ { 2, 22, "\201", 130, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 22 R13x139-M, requires 107 codewords (maximum 106)", "65 Shift JIS 0x8181" }, | |
| 7504 /*344*/ { 4, 22, "1", 126, 0, 13, 139, "", "" }, | |
| 7505 /*345*/ { 4, 22, "1", 127, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 22 R13x139-H, requires 55 codewords (maximum 54)", "" }, | |
| 7506 /*346*/ { 4, 22, "A", 76, 0, 13, 139, "", "" }, | |
| 7507 /*347*/ { 4, 22, "A", 77, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 22 R13x139-H, requires 55 codewords (maximum 54)", "" }, | |
| 7508 /*348*/ { 4, 22, "\200", 52, 0, 13, 139, "", "" }, | |
| 7509 /*349*/ { 4, 22, "\200", 53, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 22 R13x139-H, requires 55 codewords (maximum 54)", "" }, | |
| 7510 /*350*/ { 4, 22, "\201", 64, 0, 13, 139, "", "32 Shift JIS 0x8181" }, | |
| 7511 /*351*/ { 4, 22, "\201", 66, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 22 R13x139-H, requires 55 codewords (maximum 54)", "33 Shift JIS 0x8181" }, | |
| 7512 /*352*/ { 2, 23, "1", 76, 0, 15, 43, "", "" }, | |
| 7513 /*353*/ { 2, 23, "1", 77, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 23 R15x43-M, requires 34 codewords (maximum 33)", "" }, | |
| 7514 /*354*/ { 2, 23, "A", 46, 0, 15, 43, "", "" }, | |
| 7515 /*355*/ { 2, 23, "A", 47, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 23 R15x43-M, requires 34 codewords (maximum 33)", "" }, | |
| 7516 /*356*/ { 2, 23, "\200", 31, 0, 15, 43, "", "" }, | |
| 7517 /*357*/ { 2, 23, "\200", 32, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 23 R15x43-M, requires 34 codewords (maximum 33)", "" }, | |
| 7518 /*358*/ { 2, 23, "\201", 38, 0, 15, 43, "", "19 Shift JIS 0x8181" }, | |
| 7519 /*359*/ { 2, 23, "\201", 40, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 23 R15x43-M, requires 34 codewords (maximum 33)", "20 Shift JIS 0x8181" }, | |
| 7520 /*360*/ { 4, 23, "1", 33, 0, 15, 43, "", "" }, | |
| 7521 /*361*/ { 4, 23, "1", 34, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 23 R15x43-H, requires 16 codewords (maximum 15)", "" }, | |
| 7522 /*362*/ { 4, 23, "A", 20, 0, 15, 43, "", "" }, | |
| 7523 /*363*/ { 4, 23, "A", 21, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 23 R15x43-H, requires 16 codewords (maximum 15)", "" }, | |
| 7524 /*364*/ { 4, 23, "\200", 13, 0, 15, 43, "", "" }, | |
| 7525 /*365*/ { 4, 23, "\200", 14, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 23 R15x43-H, requires 16 codewords (maximum 15)", "" }, | |
| 7526 /*366*/ { 4, 23, "\201", 16, 0, 15, 43, "", "8 Shift JIS 0x8181" }, | |
| 7527 /*367*/ { 4, 23, "\201", 18, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 23 R15x43-H, requires 16 codewords (maximum 15)", "9 Shift JIS 0x8181" }, | |
| 7528 /*368*/ { 2, 24, "1", 112, 0, 15, 59, "", "" }, | |
| 7529 /*369*/ { 2, 24, "1", 113, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 24 R15x59-M, requires 49 codewords (maximum 48)", "" }, | |
| 7530 /*370*/ { 2, 24, "A", 68, 0, 15, 59, "", "" }, | |
| 7531 /*371*/ { 2, 24, "A", 69, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 24 R15x59-M, requires 49 codewords (maximum 48)", "" }, | |
| 7532 /*372*/ { 2, 24, "\200", 46, 0, 15, 59, "", "" }, | |
| 7533 /*373*/ { 2, 24, "\200", 47, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 24 R15x59-M, requires 49 codewords (maximum 48)", "" }, | |
| 7534 /*374*/ { 2, 24, "\201", 56, 0, 15, 59, "", "28 Shift JIS 0x8181" }, | |
| 7535 /*375*/ { 2, 24, "\201", 58, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 24 R15x59-M, requires 49 codewords (maximum 48)", "29 Shift JIS 0x8181" }, | |
| 7536 /*376*/ { 4, 24, "1", 59, 0, 15, 59, "", "" }, | |
| 7537 /*377*/ { 4, 24, "1", 60, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 24 R15x59-H, requires 27 codewords (maximum 26)", "" }, | |
| 7538 /*378*/ { 4, 24, "A", 36, 0, 15, 59, "", "" }, | |
| 7539 /*379*/ { 4, 24, "A", 37, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 24 R15x59-H, requires 27 codewords (maximum 26)", "" }, | |
| 7540 /*380*/ { 4, 24, "\200", 24, 0, 15, 59, "", "" }, | |
| 7541 /*381*/ { 4, 24, "\200", 25, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 24 R15x59-H, requires 27 codewords (maximum 26)", "" }, | |
| 7542 /*382*/ { 4, 24, "\201", 30, 0, 15, 59, "", "30 Shift JIS 0x8181" }, | |
| 7543 /*383*/ { 4, 24, "\201", 32, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 24 R15x59-H, requires 27 codewords (maximum 26)", "31 Shift JIS 0x8181" }, | |
| 7544 /*384*/ { 2, 25, "1", 157, 0, 15, 77, "", "" }, | |
| 7545 /*385*/ { 2, 25, "1", 158, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 25 R15x77-M, requires 68 codewords (maximum 67)", "" }, | |
| 7546 /*386*/ { 2, 25, "A", 95, 0, 15, 77, "", "" }, | |
| 7547 /*387*/ { 2, 25, "A", 96, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 25 R15x77-M, requires 68 codewords (maximum 67)", "" }, | |
| 7548 /*388*/ { 2, 25, "\200", 65, 0, 15, 77, "", "" }, | |
| 7549 /*389*/ { 2, 25, "\200", 66, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 25 R15x77-M, requires 68 codewords (maximum 67)", "" }, | |
| 7550 /*390*/ { 2, 25, "\201", 80, 0, 15, 77, "", "40 Shift JIS 0x8181" }, | |
| 7551 /*391*/ { 2, 25, "\201", 82, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 25 R15x77-M, requires 68 codewords (maximum 67)", "41 Shift JIS 0x8181" }, | |
| 7552 /*392*/ { 4, 25, "1", 71, 0, 15, 77, "", "" }, | |
| 7553 /*393*/ { 4, 25, "1", 72, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 25 R15x77-H, requires 32 codewords (maximum 31)", "" }, | |
| 7554 /*394*/ { 4, 25, "A", 43, 0, 15, 77, "", "" }, | |
| 7555 /*395*/ { 4, 25, "A", 44, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 25 R15x77-H, requires 32 codewords (maximum 31)", "" }, | |
| 7556 /*396*/ { 4, 25, "\200", 29, 0, 15, 77, "", "" }, | |
| 7557 /*397*/ { 4, 25, "\200", 30, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 25 R15x77-H, requires 32 codewords (maximum 31)", "" }, | |
| 7558 /*398*/ { 4, 25, "\201", 36, 0, 15, 77, "", "18 Shift JIS 0x8181" }, | |
| 7559 /*399*/ { 4, 25, "\201", 38, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 25 R15x77-H, requires 32 codewords (maximum 31)", "" }, | |
| 7560 /*400*/ { 2, 26, "1", 207, 0, 15, 99, "", "" }, | |
| 7561 /*401*/ { 2, 26, "1", 208, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 26 R15x99-M, requires 89 codewords (maximum 88)", "" }, | |
| 7562 /*402*/ { 2, 26, "A", 126, 0, 15, 99, "", "" }, | |
| 7563 /*403*/ { 2, 26, "A", 127, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 26 R15x99-M, requires 89 codewords (maximum 88)", "" }, | |
| 7564 /*404*/ { 2, 26, "\200", 86, 0, 15, 99, "", "" }, | |
| 7565 /*405*/ { 2, 26, "\200", 87, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 26 R15x99-M, requires 89 codewords (maximum 88)", "" }, | |
| 7566 /*406*/ { 2, 26, "\201", 106, 0, 15, 99, "", "53 Shift JIS 0x8181" }, | |
| 7567 /*407*/ { 2, 26, "\201", 108, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 26 R15x99-M, requires 89 codewords (maximum 88)", "54 Shift JIS 0x8181" }, | |
| 7568 /*408*/ { 4, 26, "1", 111, 0, 15, 99, "", "" }, | |
| 7569 /*409*/ { 4, 26, "1", 112, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 26 R15x99-H, requires 49 codewords (maximum 48)", "" }, | |
| 7570 /*410*/ { 4, 26, "A", 68, 0, 15, 99, "", "" }, | |
| 7571 /*411*/ { 4, 26, "A", 69, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 26 R15x99-H, requires 49 codewords (maximum 48)", "" }, | |
| 7572 /*412*/ { 4, 26, "\200", 46, 0, 15, 99, "", "" }, | |
| 7573 /*413*/ { 4, 26, "\200", 47, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 26 R15x99-H, requires 49 codewords (maximum 48)", "" }, | |
| 7574 /*414*/ { 4, 26, "\201", 56, 0, 15, 99, "", "28 Shift JIS 0x8181" }, | |
| 7575 /*415*/ { 4, 26, "\201", 58, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 26 R15x99-H, requires 49 codewords (maximum 48)", "29 Shift JIS 0x8181" }, | |
| 7576 /*416*/ { 2, 27, "1", 301, 0, 15, 139, "", "" }, | |
| 7577 /*417*/ { 2, 27, "1", 302, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 27 R15x139-M, requires 128 codewords (maximum 127)", "" }, | |
| 7578 /*418*/ { 2, 27, "A", 182, 0, 15, 139, "", "" }, | |
| 7579 /*419*/ { 2, 27, "A", 183, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 27 R15x139-M, requires 128 codewords (maximum 127)", "" }, | |
| 7580 /*420*/ { 2, 27, "\200", 125, 0, 15, 139, "", "" }, | |
| 7581 /*421*/ { 2, 27, "\200", 126, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 27 R15x139-M, requires 128 codewords (maximum 127)", "" }, | |
| 7582 /*422*/ { 2, 27, "\201", 154, 0, 15, 139, "", "77 Shift JIS 0x8181" }, | |
| 7583 /*423*/ { 2, 27, "\201", 156, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 27 R15x139-M, requires 128 codewords (maximum 127)", "78 Shift JIS 0x8181" }, | |
| 7584 /*424*/ { 4, 27, "1", 162, 0, 15, 139, "", "" }, | |
| 7585 /*425*/ { 4, 27, "1", 163, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 27 R15x139-H, requires 70 codewords (maximum 69)", "" }, | |
| 7586 /*426*/ { 4, 27, "A", 98, 0, 15, 139, "", "" }, | |
| 7587 /*427*/ { 4, 27, "A", 99, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 27 R15x139-H, requires 70 codewords (maximum 69)", "" }, | |
| 7588 /*428*/ { 4, 27, "\200", 67, 0, 15, 139, "", "" }, | |
| 7589 /*429*/ { 4, 27, "\200", 68, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 27 R15x139-H, requires 70 codewords (maximum 69)", "" }, | |
| 7590 /*430*/ { 4, 27, "\201", 82, 0, 15, 139, "", "41 Shift JIS 0x8181" }, | |
| 7591 /*431*/ { 4, 27, "\201", 84, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 27 R15x139-H, requires 70 codewords (maximum 69)", "42 Shift JIS 0x8181" }, | |
| 7592 /*432*/ { 2, 28, "1", 90, 0, 17, 43, "", "" }, | |
| 7593 /*433*/ { 2, 28, "1", 91, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 28 R17x43-M, requires 40 codewords (maximum 39)", "" }, | |
| 7594 /*434*/ { 2, 28, "A", 55, 0, 17, 43, "", "" }, | |
| 7595 /*435*/ { 2, 28, "A", 56, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 28 R17x43-M, requires 40 codewords (maximum 39)", "" }, | |
| 7596 /*436*/ { 2, 28, "\200", 37, 0, 17, 43, "", "" }, | |
| 7597 /*437*/ { 2, 28, "\200", 38, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 28 R17x43-M, requires 40 codewords (maximum 39)", "" }, | |
| 7598 /*438*/ { 2, 28, "\201", 46, 0, 17, 43, "", "23 Shift JIS 0x8181" }, | |
| 7599 /*439*/ { 2, 28, "\201", 48, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 28 R17x43-M, requires 40 codewords (maximum 39)", "24 Shift JIS 0x8181" }, | |
| 7600 /*440*/ { 4, 28, "1", 47, 0, 17, 43, "", "" }, | |
| 7601 /*441*/ { 4, 28, "1", 48, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 28 R17x43-H, requires 22 codewords (maximum 21)", "" }, | |
| 7602 /*442*/ { 4, 28, "A", 28, 0, 17, 43, "", "" }, | |
| 7603 /*443*/ { 4, 28, "A", 29, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 28 R17x43-H, requires 22 codewords (maximum 21)", "" }, | |
| 7604 /*444*/ { 4, 28, "\200", 19, 0, 17, 43, "", "" }, | |
| 7605 /*445*/ { 4, 28, "\200", 20, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 28 R17x43-H, requires 22 codewords (maximum 21)", "" }, | |
| 7606 /*446*/ { 4, 28, "\201", 24, 0, 17, 43, "", "12 Shift JIS 0x8181" }, | |
| 7607 /*447*/ { 4, 28, "\201", 26, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 28 R17x43-H, requires 23 codewords (maximum 21)", "13 Shift JIS 0x8181" }, | |
| 7608 /*448*/ { 2, 29, "1", 131, 0, 17, 59, "", "" }, | |
| 7609 /*449*/ { 2, 29, "1", 132, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 29 R17x59-M, requires 57 codewords (maximum 56)", "" }, | |
| 7610 /*450*/ { 2, 29, "A", 79, 0, 17, 59, "", "" }, | |
| 7611 /*451*/ { 2, 29, "A", 80, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 29 R17x59-M, requires 57 codewords (maximum 56)", "" }, | |
| 7612 /*452*/ { 2, 29, "\200", 54, 0, 17, 59, "", "" }, | |
| 7613 /*453*/ { 2, 29, "\200", 55, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 29 R17x59-M, requires 57 codewords (maximum 56)", "" }, | |
| 7614 /*454*/ { 2, 29, "\201", 66, 0, 17, 59, "", "33 Shift JIS 0x8181" }, | |
| 7615 /*455*/ { 2, 29, "\201", 68, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 29 R17x59-M, requires 57 codewords (maximum 56)", "34 Shift JIS 0x8181" }, | |
| 7616 /*456*/ { 4, 29, "1", 63, 0, 17, 59, "", "" }, | |
| 7617 /*457*/ { 4, 29, "1", 64, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 29 R17x59-H, requires 29 codewords (maximum 28)", "" }, | |
| 7618 /*458*/ { 4, 29, "A", 38, 0, 17, 59, "", "" }, | |
| 7619 /*459*/ { 4, 29, "A", 39, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 29 R17x59-H, requires 29 codewords (maximum 28)", "" }, | |
| 7620 /*460*/ { 4, 29, "\200", 26, 0, 17, 59, "", "" }, | |
| 7621 /*461*/ { 4, 29, "\200", 27, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 29 R17x59-H, requires 29 codewords (maximum 28)", "" }, | |
| 7622 /*462*/ { 4, 29, "\201", 32, 0, 17, 59, "", "16 Shift JIS 0x8181" }, | |
| 7623 /*463*/ { 4, 29, "\201", 34, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 29 R17x59-H, requires 29 codewords (maximum 28)", "17 Shift JIS 0x8181" }, | |
| 7624 /*464*/ { 2, 30, "1", 183, 0, 17, 77, "", "" }, | |
| 7625 /*465*/ { 2, 30, "1", 184, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 30 R17x77-M, requires 79 codewords (maximum 78)", "" }, | |
| 7626 /*466*/ { 2, 30, "A", 111, 0, 17, 77, "", "" }, | |
| 7627 /*467*/ { 2, 30, "A", 112, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 30 R17x77-M, requires 79 codewords (maximum 78)", "" }, | |
| 7628 /*468*/ { 2, 30, "\200", 76, 0, 17, 77, "", "" }, | |
| 7629 /*469*/ { 2, 30, "\200", 77, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 30 R17x77-M, requires 79 codewords (maximum 78)", "" }, | |
| 7630 /*470*/ { 2, 30, "\201", 94, 0, 17, 77, "", "47 Shift JIS 0x8181" }, | |
| 7631 /*471*/ { 2, 30, "\201", 96, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 30 R17x77-M, requires 80 codewords (maximum 78)", "48 Shift JIS 0x8181" }, | |
| 7632 /*472*/ { 4, 30, "1", 87, 0, 17, 77, "", "" }, | |
| 7633 /*473*/ { 4, 30, "1", 88, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 30 R17x77-H, requires 39 codewords (maximum 38)", "" }, | |
| 7634 /*474*/ { 4, 30, "A", 53, 0, 17, 77, "", "" }, | |
| 7635 /*475*/ { 4, 30, "A", 54, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 30 R17x77-H, requires 39 codewords (maximum 38)", "" }, | |
| 7636 /*476*/ { 4, 30, "\200", 36, 0, 17, 77, "", "" }, | |
| 7637 /*477*/ { 4, 30, "\200", 37, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 30 R17x77-H, requires 39 codewords (maximum 38)", "" }, | |
| 7638 /*478*/ { 4, 30, "\201", 44, 0, 17, 77, "", "22 Shift JIS 0x8181" }, | |
| 7639 /*479*/ { 4, 30, "\201", 46, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 30 R17x77-H, requires 39 codewords (maximum 38)", "23 Shift JIS 0x8181" }, | |
| 7640 /*480*/ { 2, 31, "1", 236, 0, 17, 99, "", "" }, | |
| 7641 /*481*/ { 2, 31, "1", 237, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 31 R17x99-M, requires 101 codewords (maximum 100)", "" }, | |
| 7642 /*482*/ { 2, 31, "A", 143, 0, 17, 99, "", "" }, | |
| 7643 /*483*/ { 2, 31, "A", 144, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 31 R17x99-M, requires 101 codewords (maximum 100)", "" }, | |
| 7644 /*484*/ { 2, 31, "\200", 98, 0, 17, 99, "", "" }, | |
| 7645 /*485*/ { 2, 31, "\200", 99, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 31 R17x99-M, requires 101 codewords (maximum 100)", "" }, | |
| 7646 /*486*/ { 2, 31, "\201", 120, 0, 17, 99, "", "60 Shift JIS 0x8181" }, | |
| 7647 /*487*/ { 2, 31, "\201", 122, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 31 R17x99-M, requires 101 codewords (maximum 100)", "61 Shift JIS 0x8181" }, | |
| 7648 /*488*/ { 4, 31, "1", 131, 0, 17, 99, "", "" }, | |
| 7649 /*489*/ { 4, 31, "1", 132, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 31 R17x99-H, requires 57 codewords (maximum 56)", "" }, | |
| 7650 /*490*/ { 4, 31, "A", 79, 0, 17, 99, "", "" }, | |
| 7651 /*491*/ { 4, 31, "A", 80, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 31 R17x99-H, requires 57 codewords (maximum 56)", "" }, | |
| 7652 /*492*/ { 4, 31, "\200", 54, 0, 17, 99, "", "" }, | |
| 7653 /*493*/ { 4, 31, "\200", 55, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 31 R17x99-H, requires 57 codewords (maximum 56)", "" }, | |
| 7654 /*494*/ { 4, 31, "\201", 66, 0, 17, 99, "", "33 Shift JIS 0x8181" }, | |
| 7655 /*495*/ { 4, 31, "\201", 68, ZINT_ERROR_TOO_LONG, 0, 0, "Error 560: Input too long for Version 31 R17x99-H, requires 57 codewords (maximum 56)", "34 Shift JIS 0x8181" }, | |
| 7656 /*496*/ { 2, 32, "1", 361, 0, 17, 139, "", "" }, | |
| 7657 /*497*/ { 2, 32, "1", 362, ZINT_ERROR_TOO_LONG, 0, 0, "Error 578: Input too long for ECC level M, requires 153 codewords (maximum 152)", "" }, | |
| 7658 /*498*/ { 2, 32, "A", 219, 0, 17, 139, "", "" }, | |
| 7659 /*499*/ { 2, 32, "A", 220, ZINT_ERROR_TOO_LONG, 0, 0, "Error 578: Input too long for ECC level M, requires 153 codewords (maximum 152)", "" }, | |
| 7660 /*500*/ { 2, 32, "\200", 150, 0, 17, 139, "", "" }, | |
| 7661 /*501*/ { 2, 32, "\200", 151, ZINT_ERROR_TOO_LONG, 0, 0, "Error 578: Input too long for ECC level M, requires 153 codewords (maximum 152)", "" }, | |
| 7662 /*502*/ { 2, 32, "\201", 184, 0, 17, 139, "", "92 Shift JIS 0x8181" }, | |
| 7663 /*503*/ { 2, 32, "\201", 186, ZINT_ERROR_TOO_LONG, 0, 0, "Error 578: Input too long for ECC level M, requires 153 codewords (maximum 152)", "93 Shift JIS 0x8181" }, | |
| 7664 /*504*/ { 4, 32, "1", 178, 0, 17, 139, "", "" }, | |
| 7665 /*505*/ { 4, 32, "1", 179, ZINT_ERROR_TOO_LONG, 0, 0, "Error 578: Input too long for ECC level H, requires 77 codewords (maximum 76)", "" }, | |
| 7666 /*506*/ { 4, 32, "A", 108, 0, 17, 139, "", "" }, | |
| 7667 /*507*/ { 4, 32, "A", 109, ZINT_ERROR_TOO_LONG, 0, 0, "Error 578: Input too long for ECC level H, requires 77 codewords (maximum 76)", "" }, | |
| 7668 /*508*/ { 4, 32, "\200", 74, 0, 17, 139, "", "" }, | |
| 7669 /*509*/ { 4, 32, "\200", 75, ZINT_ERROR_TOO_LONG, 0, 0, "Error 578: Input too long for ECC level H, requires 77 codewords (maximum 76)", "" }, | |
| 7670 /*510*/ { 4, 32, "\201", 92, 0, 17, 139, "", "46 Shift JIS 0x8181" }, | |
| 7671 /*511*/ { 4, 32, "\201", 94, ZINT_ERROR_TOO_LONG, 0, 0, "Error 578: Input too long for ECC level H, requires 78 codewords (maximum 76)", "47 Shift JIS 0x8181" }, | |
| 7672 }; | |
| 7673 const int data_size = ARRAY_SIZE(data); | |
| 7674 int i, length, ret; | |
| 7675 struct zint_symbol *symbol = NULL; | |
| 7676 | |
| 7677 char data_buf[ZINT_MAX_DATA_LEN]; | |
| 7678 | |
| 7679 char escaped[4096]; | |
| 7680 char cmp_buf[32768]; | |
| 7681 char cmp_msg[1024]; | |
| 7682 | |
| 7683 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 7684 | |
| 7685 testStartSymbol("test_rmqr_large", &symbol); | |
| 7686 | |
| 7687 for (i = 0; i < data_size; i++) { | |
| 7688 | |
| 7689 if (testContinue(p_ctx, i)) continue; | |
| 7690 | |
| 7691 symbol = ZBarcode_Create(); | |
| 7692 assert_nonnull(symbol, "Symbol not created\n"); | |
| 7693 | |
| 7694 testUtilStrCpyRepeat(data_buf, data[i].pattern, data[i].length); | |
| 7695 assert_equal(data[i].length, (int) strlen(data_buf), "i:%d length %d != strlen(data_buf) %d\n", i, data[i].length, (int) strlen(data_buf)); | |
| 7696 | |
| 7697 length = testUtilSetSymbol(symbol, BARCODE_RMQR, -1 /*input_mode*/, -1 /*eci*/, data[i].option_1, data[i].option_2, ZINT_FULL_MULTIBYTE, -1 /*output_options*/, data_buf, data[i].length, debug); | |
| 7698 | |
| 7699 ret = ZBarcode_Encode(symbol, (unsigned char *) data_buf, length); | |
| 7700 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 7701 assert_equal(symbol->errtxt[0] == '\0', ret == 0, "i:%d symbol->errtxt not %s (%s)\n", i, ret ? "set" : "empty", symbol->errtxt); | |
| 7702 | |
| 7703 if (p_ctx->generate) { | |
| 7704 printf(" /*%3d*/ { %d, %d, \"%s\", %d, %s, %d, %d, \"%s\", \"%s\" },\n", | |
| 7705 i, data[i].option_1, data[i].option_2, | |
| 7706 testUtilEscape(data[i].pattern, (int) strlen(data[i].pattern), escaped, sizeof(escaped)), data[i].length, | |
| 7707 testUtilErrorName(data[i].ret), symbol->rows, symbol->width, symbol->errtxt, data[i].comment); | |
| 7708 } else { | |
| 7709 assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d errtxt %s != %s\n", i, symbol->errtxt, data[i].expected_errtxt); | |
| 7710 if (ret < ZINT_ERROR) { | |
| 7711 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows); | |
| 7712 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width); | |
| 7713 } | |
| 7714 | |
| 7715 symbol->input_mode |= FAST_MODE; | |
| 7716 ret = ZBarcode_Encode(symbol, (unsigned char *) data_buf, length); | |
| 7717 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 7718 | |
| 7719 if (ret < ZINT_ERROR) { | |
| 7720 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows); | |
| 7721 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width); | |
| 7722 | |
| 7723 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data_buf, length, debug)) { | |
| 7724 int cmp_len, ret_len; | |
| 7725 char modules_dump[17 * 139 + 1]; | |
| 7726 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 7727 ret = testUtilZXingCPP(i, symbol, data_buf, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 7728 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 7729 | |
| 7730 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data_buf, length, NULL /*primary*/, escaped, &ret_len); | |
| 7731 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 7732 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 7733 } | |
| 7734 } | |
| 7735 } | |
| 7736 | |
| 7737 ZBarcode_Delete(symbol); | |
| 7738 } | |
| 7739 | |
| 7740 testFinish(); | |
| 7741 } | |
| 7742 | |
| 7743 static void test_rmqr_options(const testCtx *const p_ctx) { | |
| 7744 int debug = p_ctx->debug; | |
| 7745 | |
| 7746 struct item { | |
| 7747 int input_mode; | |
| 7748 int eci; | |
| 7749 int option_1; | |
| 7750 int option_2; | |
| 7751 char *data; | |
| 7752 int ret_encode; | |
| 7753 int ret_vector; | |
| 7754 int expected_rows; | |
| 7755 int expected_width; | |
| 7756 char *expected_errtxt; | |
| 7757 int zxingcpp_cmp; | |
| 7758 char *comment; | |
| 7759 }; | |
| 7760 /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ | |
| 7761 static const struct item data[] = { | |
| 7762 /* 0*/ { UNICODE_MODE, -1, -1, -1, "12345", 0, 0, 11, 27, "", 1, "" }, /* ECC auto-set to H, version auto-set to 11 (R11x27) */ | |
| 7763 /* 1*/ { UNICODE_MODE, -1, 4, 11, "12345", 0, 0, 11, 27, "", 1, "" }, | |
| 7764 /* 2*/ { UNICODE_MODE, -1, 1, -1, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, 0, "Error 576: Error correction level L not available in rMQR", 1, "" }, /* ECC L not available */ | |
| 7765 /* 3*/ { UNICODE_MODE, -1, 3, -1, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, 0, "Error 577: Error correction level Q not available in rMQR", 1, "" }, /* ECC Q not available */ | |
| 7766 /* 4*/ { UNICODE_MODE, -1, 4, 11, "123456789", 0, 0, 11, 27, "", 1, "" }, /* Max capacity ECC H, version 11, 9 numbers */ | |
| 7767 /* 5*/ { UNICODE_MODE, -1, 4, 11, "1234567890", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 11 R11x27-H, requires 6 codewords (maximum 5)", 1, "" }, | |
| 7768 /* 6*/ { UNICODE_MODE, -1, 2, 11, "12345678901234", 0, 0, 11, 27, "", 1, "" }, /* Max capacity ECC M, version 11, 14 numbers */ | |
| 7769 /* 7*/ { UNICODE_MODE, -1, 2, 11, "123456789012345", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 11 R11x27-M, requires 8 codewords (maximum 7)", 1, "" }, | |
| 7770 /* 8*/ { UNICODE_MODE, -1, 4, 11, "ABCDEF", 0, 0, 11, 27, "", 1, "" }, /* Max capacity ECC H, version 11, 6 letters */ | |
| 7771 /* 9*/ { UNICODE_MODE, -1, 4, 11, "ABCDEFG", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 11 R11x27-H, requires 6 codewords (maximum 5)", 1, "" }, | |
| 7772 /* 10*/ { UNICODE_MODE, -1, 2, 11, "ABCDEFGH", 0, 0, 11, 27, "", 1, "" }, /* Max capacity ECC M, version 11, 8 letters */ | |
| 7773 /* 11*/ { UNICODE_MODE, -1, 2, 11, "ABCDEFGHI", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 11 R11x27-M, requires 8 codewords (maximum 7)", 1, "" }, | |
| 7774 /* 12*/ { UNICODE_MODE, -1, 4, 11, "\177\177\177\177", 0, 0, 11, 27, "", 1, "" }, /* Max capacity ECC H, version 11, 4 bytes */ | |
| 7775 /* 13*/ { UNICODE_MODE, -1, 4, 11, "\177\177\177\177\177", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 11 R11x27-H, requires 6 codewords (maximum 5)", 1, "" }, | |
| 7776 /* 14*/ { UNICODE_MODE, -1, 2, 11, "\177\177\177\177\177\177", 0, 0, 11, 27, "", 1, "" }, /* Max capacity ECC M, version 11, 6 bytes */ | |
| 7777 /* 15*/ { UNICODE_MODE, -1, 2, 11, "\177\177\177\177\177\177\177", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 11 R11x27-M, requires 8 codewords (maximum 7)", 1, "" }, | |
| 7778 /* 16*/ { UNICODE_MODE, -1, 4, 11, "点茗", ZINT_WARN_NONCOMPLIANT, 0, 11, 27, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* Max capacity ECC H, version 11, 2 kanji */ | |
| 7779 /* 17*/ { UNICODE_MODE, -1, 4, 11, "点茗点", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 11 R11x27-H, requires 6 codewords (maximum 5)", 1, "" }, | |
| 7780 /* 18*/ { UNICODE_MODE, -1, 2, 11, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 11, 27, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* Max capacity ECC M, version 11, 3 kanji */ | |
| 7781 /* 19*/ { UNICODE_MODE, -1, 2, 11, "点茗点茗", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 11 R11x27-M, requires 8 codewords (maximum 7)", 1, "" }, | |
| 7782 /* 20*/ { UNICODE_MODE, -1, -1, 1, "12345", 0, 0, 7, 43, "", 1, "" }, /* ECC auto-set to M, version 1 (R7x43) */ | |
| 7783 /* 21*/ { UNICODE_MODE, -1, 2, 1, "12345", 0, 0, 7, 43, "", 1, "" }, | |
| 7784 /* 22*/ { UNICODE_MODE, -1, 4, 1, "12345", 0, 0, 7, 43, "", 1, "" }, /* Max capacity ECC H, version 1, 5 numbers */ | |
| 7785 /* 23*/ { UNICODE_MODE, -1, 4, 1, "123456", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 1 R7x43-H, requires 4 codewords (maximum 3)", 1, "" }, | |
| 7786 /* 24*/ { UNICODE_MODE, -1, 2, 1, "123456789012", 0, 0, 7, 43, "", 1, "" }, /* Max capacity ECC M, version 1, 12 numbers */ | |
| 7787 /* 25*/ { UNICODE_MODE, -1, 2, 1, "1234567890123", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 1 R7x43-M, requires 7 codewords (maximum 6)", 1, "" }, | |
| 7788 /* 26*/ { UNICODE_MODE, -1, 4, 1, "ABC", 0, 0, 7, 43, "", 1, "" }, /* Max capacity ECC H, version 1, 3 letters */ | |
| 7789 /* 27*/ { UNICODE_MODE, -1, 4, 1, "ABCD", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 1 R7x43-H, requires 4 codewords (maximum 3)", 1, "" }, | |
| 7790 /* 28*/ { UNICODE_MODE, -1, 2, 1, "ABCDEFG", 0, 0, 7, 43, "", 1, "" }, /* Max capacity ECC M, version 1, 7 letters */ | |
| 7791 /* 29*/ { UNICODE_MODE, -1, 2, 1, "ABCDEFGH", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 1 R7x43-M, requires 7 codewords (maximum 6)", 1, "" }, | |
| 7792 /* 30*/ { UNICODE_MODE, -1, 4, 1, "\177\177", 0, 0, 7, 43, "", 1, "" }, /* Max capacity ECC H, version 1, 2 bytes */ | |
| 7793 /* 31*/ { UNICODE_MODE, -1, 4, 1, "\177\177\177", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 1 R7x43-H, requires 4 codewords (maximum 3)", 1, "" }, | |
| 7794 /* 32*/ { UNICODE_MODE, -1, 2, 1, "\177\177\177\177\177", 0, 0, 7, 43, "", 1, "" }, /* Max capacity ECC M, version 1, 5 bytes */ | |
| 7795 /* 33*/ { UNICODE_MODE, -1, 2, 1, "\177\177\177\177\177\177", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 1 R7x43-M, requires 7 codewords (maximum 6)", 1, "" }, | |
| 7796 /* 34*/ { UNICODE_MODE, -1, 4, 1, "点", ZINT_WARN_NONCOMPLIANT, 0, 7, 43, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* Max capacity ECC H, version 1, 1 kanji */ | |
| 7797 /* 35*/ { UNICODE_MODE, -1, 4, 1, "点茗", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 1 R7x43-H, requires 4 codewords (maximum 3)", 1, "" }, | |
| 7798 /* 36*/ { UNICODE_MODE, -1, 2, 1, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 7, 43, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* Max capacity ECC M, version 1, 3 kanji */ | |
| 7799 /* 37*/ { UNICODE_MODE, -1, 2, 1, "点茗点茗", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 1 R7x43-M, requires 8 codewords (maximum 6)", 1, "" }, | |
| 7800 /* 38*/ { UNICODE_MODE, -1, 4, 7, "12345678901234567890123", 0, 0, 9, 59, "", 1, "" }, /* Max capacity ECC H, version 7 (R9x59), 23 numbers */ | |
| 7801 /* 39*/ { UNICODE_MODE, -1, 4, 7, "123456789012345678901234", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 7 R9x59-H, requires 12 codewords (maximum 11)", 1, "" }, | |
| 7802 /* 40*/ { UNICODE_MODE, -1, 4, 7, "点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 9, 59, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* Max capacity ECC H, version 7, 6 kanji */ | |
| 7803 /* 41*/ { UNICODE_MODE, -1, 4, 7, "点茗点茗点茗点", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 7 R9x59-H, requires 13 codewords (maximum 11)", 1, "" }, | |
| 7804 /* 42*/ { UNICODE_MODE, -1, 4, 13, "点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 11, 59, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* Max capacity ECC H, version 13 (R11x59), 8 kanji */ | |
| 7805 /* 43*/ { UNICODE_MODE, -1, 4, 13, "点茗点茗点茗点茗点", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 13 R11x59-H, requires 16 codewords (maximum 15)", 1, "" }, | |
| 7806 /* 44*/ { UNICODE_MODE, -1, 4, 20, "点茗点茗点茗点茗点茗点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 13, 77, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* Max capacity ECC H, version 20 (R13x77), 17 kanji */ | |
| 7807 /* 45*/ { UNICODE_MODE, -1, 4, 20, "点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 20 R13x77-H, requires 31 codewords (maximum 29)", 1, "" }, | |
| 7808 /* 46*/ { UNICODE_MODE, -1, 4, 26, "点茗点茗点茗点茗点茗点茗点茗点茗点点茗点茗点茗点点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 15, 99, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* Max capacity ECC H, version 26 (R15x99), 28 kanji */ | |
| 7809 /* 47*/ { UNICODE_MODE, -1, 4, 26, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 26 R15x99-H, requires 49 codewords (maximum 48)", 1, "" }, | |
| 7810 /* 48*/ { UNICODE_MODE, -1, 4, 32, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 17, 139, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* Max capacity ECC H, version 32 (R17x139), 46 kanji */ | |
| 7811 /* 49*/ { UNICODE_MODE, -1, 4, 32, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 578: Input too long for ECC level H, requires 78 codewords (maximum 76)", 1, "" }, | |
| 7812 /* 50*/ { UNICODE_MODE, -1, -1, 32, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 17, 139, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* Max capacity ECC M, version 32, 92 kanji */ | |
| 7813 /* 51*/ { UNICODE_MODE, -1, 4, 32, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 578: Input too long for ECC level H, requires 153 codewords (maximum 76)", 1, "" }, | |
| 7814 /* 52*/ { UNICODE_MODE, -1, -1, 33, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 7, 43, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC auto-set to M, version 33 (R7xAuto-width) auto-sets R7x43 */ | |
| 7815 /* 53*/ { UNICODE_MODE, -1, 4, 33, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 7, 59, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC set to H, version 33 (R7xAuto-width) auto-sets R7x59 */ | |
| 7816 /* 54*/ { UNICODE_MODE, -1, 4, 33, "点茗点茗点茗点点茗点茗点茗点点", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 33 R7xW-H, requires 26 codewords (maximum 24)", 1, "" }, | |
| 7817 /* 55*/ { UNICODE_MODE, -1, -1, 34, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 9, 43, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC auto-set to H, version 34 (R9xAuto-width) auto-sets R9x43 */ | |
| 7818 /* 56*/ { UNICODE_MODE, -1, -1, 35, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 11, 27, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC auto-set to M, version 35 (R11xAuto-width) auto-sets R11x27 */ | |
| 7819 /* 57*/ { UNICODE_MODE, -1, 4, 35, "点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 11, 59, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC set to H, version 35 (R11xAuto-width) auto-sets R11x59 */ | |
| 7820 /* 58*/ { UNICODE_MODE, -1, -1, 35, "点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 11, 43, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC auto-set to M, version 35 (R11xAuto-width) auto-sets R11x43 */ | |
| 7821 /* 59*/ { UNICODE_MODE, -1, -1, 36, "点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 13, 43, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC auto-set to M, version 36 (R13xAuto-width) auto-sets R13x43 */ | |
| 7822 /* 60*/ { UNICODE_MODE, -1, 4, 36, "点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 13, 59, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC set to H, version 36 (R13xAuto-width) auto-sets R13x59 */ | |
| 7823 /* 61*/ { UNICODE_MODE, -1, -1, 37, "点茗点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 15, 43, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC auto-set to M, version 37 (R15xAuto-width) auto-sets R15x43 */ | |
| 7824 /* 62*/ { UNICODE_MODE, -1, 4, 37, "点茗点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 15, 59, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC set to H, version 37 (R15xAuto-width) auto-sets R15x59 */ | |
| 7825 /* 63*/ { UNICODE_MODE, -1, 4, 37, "点茗点茗点茗点茗点点茗点茗点茗点茗点点茗点茗点茗点茗点点茗点茗点茗点茗点点茗点茗点茗", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 560: Input too long for Version 37 R15xW-H, requires 70 codewords (maximum 69)", 1, "" }, | |
| 7826 /* 64*/ { UNICODE_MODE, -1, -1, 38, "点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 17, 43, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC auto-set to M, version 38 (R17xAuto-width) auto-sets R17x43 */ | |
| 7827 /* 65*/ { UNICODE_MODE, -1, 4, 38, "点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 17, 77, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC set to H, version 38 (R17xAuto-width) auto-sets R17x77 */ | |
| 7828 /* 66*/ { UNICODE_MODE, -1, -1, 39, "点茗点", ZINT_ERROR_INVALID_OPTION, -1, 0, 0, "Error 579: Version '39' out of range (1 to 38)", 1, "" }, | |
| 7829 /* 67*/ { UNICODE_MODE, -1, 4, -1, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 13, 27, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC set to H, auto-sets R13x27 */ | |
| 7830 /* 68*/ { UNICODE_MODE, -1, 4, -1, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 15, 99, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC set to H, auto-sets R15x99 (max capacity) */ | |
| 7831 /* 69*/ { UNICODE_MODE, -1, 4, -1, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 17, 99, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC set to H, auto-sets R17x99 */ | |
| 7832 /* 70*/ { UNICODE_MODE, -1, 4, -1, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 17, 139, "Warning 760: Converted to Shift JIS but no ECI specified", 1, "" }, /* ECC set to H, auto-sets R17x139 (max capacity) */ | |
| 7833 /* 71*/ { GS1_MODE, 3, -1, -1, "[20]12", ZINT_WARN_NONCOMPLIANT, 0, 11, 27, "Warning 757: Using ECI in GS1 mode not supported by GS1 standards", 1, "" }, | |
| 7834 }; | |
| 7835 const int data_size = ARRAY_SIZE(data); | |
| 7836 int i, length, ret; | |
| 7837 struct zint_symbol *symbol = NULL; | |
| 7838 | |
| 7839 char escaped[4096]; | |
| 7840 char cmp_buf[32768]; | |
| 7841 char cmp_msg[1024]; | |
| 7842 | |
| 7843 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 7844 | |
| 7845 testStartSymbol("test_rmqr_options", &symbol); | |
| 7846 | |
| 7847 for (i = 0; i < data_size; i++) { | |
| 7848 | |
| 7849 if (testContinue(p_ctx, i)) continue; | |
| 7850 | |
| 7851 symbol = ZBarcode_Create(); | |
| 7852 assert_nonnull(symbol, "Symbol not created\n"); | |
| 7853 | |
| 7854 length = testUtilSetSymbol(symbol, BARCODE_RMQR, data[i].input_mode, data[i].eci, data[i].option_1, data[i].option_2, -1, -1 /*output_options*/, data[i].data, -1, debug); | |
| 7855 | |
| 7856 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 7857 assert_equal(ret, data[i].ret_encode, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret_encode, symbol->errtxt); | |
| 7858 assert_equal(symbol->errtxt[0] == '\0', ret == 0, "i:%d symbol->errtxt not %s (%s)\n", i, ret ? "set" : "empty", symbol->errtxt); | |
| 7859 assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected_errtxt); | |
| 7860 | |
| 7861 if (ret < ZINT_ERROR) { | |
| 7862 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows); | |
| 7863 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width); | |
| 7864 | |
| 7865 ret = ZBarcode_Buffer_Vector(symbol, 0); | |
| 7866 assert_equal(ret, data[i].ret_vector, "i:%d ZBarcode_Buffer_Vector ret %d != %d\n", i, ret, data[i].ret_vector); | |
| 7867 | |
| 7868 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { | |
| 7869 if (!data[i].zxingcpp_cmp) { | |
| 7870 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not ZXing-C++ compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 7871 } else { | |
| 7872 int cmp_len, ret_len; | |
| 7873 char modules_dump[17 * 139 + 1]; | |
| 7874 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 7875 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 7876 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 7877 | |
| 7878 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); | |
| 7879 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 7880 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 7881 } | |
| 7882 } | |
| 7883 } | |
| 7884 | |
| 7885 ZBarcode_Delete(symbol); | |
| 7886 } | |
| 7887 | |
| 7888 testFinish(); | |
| 7889 } | |
| 7890 | |
| 7891 static void test_rmqr_input(const testCtx *const p_ctx) { | |
| 7892 int debug = p_ctx->debug; | |
| 7893 | |
| 7894 struct item { | |
| 7895 int input_mode; | |
| 7896 int eci; | |
| 7897 int option_1; | |
| 7898 int option_2; | |
| 7899 int option_3; | |
| 7900 char *data; | |
| 7901 int ret; | |
| 7902 int expected_eci; | |
| 7903 char *expected; | |
| 7904 int bwipp_cmp; | |
| 7905 int zxingcpp_cmp; | |
| 7906 char *comment; | |
| 7907 }; | |
| 7908 /* See test_qr_input() for details about test characters */ | |
| 7909 static const struct item data[] = { | |
| 7910 /* 0*/ { UNICODE_MODE, 0, 4, 11, -1, "é", 0, 0, "67 A4 00 EC 11", 1, 1, "B1 (ISO 8859-1)" }, | |
| 7911 /* 1*/ { UNICODE_MODE, 3, 4, 11, -1, "é", 0, 3, "E0 6C F4 80 EC", 1, 1, "ECI-3 B1 (ISO 8859-1)" }, | |
| 7912 /* 2*/ { UNICODE_MODE, 20, -1, -1, -1, "é", ZINT_ERROR_INVALID_DATA, -1, "Error 800: Invalid character in input", 1, 1, "é not in Shift JIS" }, | |
| 7913 /* 3*/ { UNICODE_MODE, 26, 4, 11, -1, "é", 0, 26, "E3 4D 61 D4 80", 1, 1, "ECI-26 B2 (UTF-8)" }, | |
| 7914 /* 4*/ { DATA_MODE, 0, 4, 11, -1, "é", 0, 0, "6B 0E A4 00 EC", 1, 0, "B2 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 7915 /* 5*/ { DATA_MODE, 0, 4, 11, -1, "\351", 0, 0, "67 A4 00 EC 11", 1, 1, "B1 (ISO 8859-1)" }, | |
| 7916 /* 6*/ { UNICODE_MODE, 0, 4, 11, -1, "β", ZINT_WARN_NONCOMPLIANT, 0, "Warning 88 80 00 EC 11", 1, 1, "K1 (Shift JIS)" }, | |
| 7917 /* 7*/ { UNICODE_MODE, 9, 4, 11, -1, "β", 0, 9, "E1 2C F1 00 EC", 1, 1, "ECI-9 B1 (ISO 8859-7)" }, | |
| 7918 /* 8*/ { UNICODE_MODE, 20, 4, 11, -1, "β", 0, 20, "E2 91 10 00 EC", 1, 1, "ECI-20 K1 (Shift JIS)" }, | |
| 7919 /* 9*/ { UNICODE_MODE, 26, 4, 11, -1, "β", 0, 26, "E3 4D 67 59 00", 1, 1, "ECI-26 B2 (UTF-8)" }, | |
| 7920 /* 10*/ { DATA_MODE, 0, 4, 11, -1, "β", 0, 0, "6B 3A C8 00 EC", 1, 0, "B2 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 7921 /* 11*/ { UNICODE_MODE, 0, 4, 11, -1, "ก", ZINT_WARN_USES_ECI, 13, "Warning E1 AC D0 80 EC", 1, 1, "ECI-13 B1 (ISO 8859-11)" }, | |
| 7922 /* 12*/ { UNICODE_MODE, 13, 4, 11, -1, "ก", 0, 13, "E1 AC D0 80 EC", 1, 1, "ECI-13 B1 (ISO 8859-11)" }, | |
| 7923 /* 13*/ { UNICODE_MODE, 20, -1, -1, -1, "ก", ZINT_ERROR_INVALID_DATA, -1, "Error 800: Invalid character in input", 1, 1, "ก not in Shift JIS" }, | |
| 7924 /* 14*/ { UNICODE_MODE, 26, 2, 11, -1, "ก", 0, 26, "E3 4D F0 5C 40 80 EC", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 7925 /* 15*/ { DATA_MODE, 0, 4, 11, -1, "ก", 0, 0, "6F 82 E2 04 00", 1, 0, "B3 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 7926 /* 16*/ { UNICODE_MODE, 0, 4, 11, -1, "Ж", ZINT_WARN_NONCOMPLIANT, 0, "Warning 88 91 C0 EC 11", 1, 1, "K1 (Shift JIS)" }, | |
| 7927 /* 17*/ { UNICODE_MODE, 7, 4, 11, -1, "Ж", 0, 7, "E0 EC DB 00 EC", 1, 1, "ECI-7 B1 (ISO 8859-5)" }, | |
| 7928 /* 18*/ { UNICODE_MODE, 20, 4, 11, -1, "Ж", 0, 20, "E2 91 12 38 EC", 1, 1, "ECI-20 K1 (Shift JIS)" }, | |
| 7929 /* 19*/ { UNICODE_MODE, 26, 4, 11, -1, "Ж", 0, 26, "E3 4D 68 4B 00", 1, 1, "ECI-26 B2 (UTF-8)" }, | |
| 7930 /* 20*/ { DATA_MODE, 0, 4, 11, -1, "Ж", 0, 0, "6B 42 58 00 EC", 1, 0, "B2 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 7931 /* 21*/ { UNICODE_MODE, 0, 2, 11, -1, "ກ", ZINT_WARN_USES_ECI, 26, "Warning E3 4D F0 5D 40 80 EC", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 7932 /* 22*/ { UNICODE_MODE, 20, -1, -1, -1, "ກ", ZINT_ERROR_INVALID_DATA, -1, "Error 800: Invalid character in input", 1, 1, "ກ not in Shift JIS" }, | |
| 7933 /* 23*/ { UNICODE_MODE, 26, 2, 11, -1, "ກ", 0, 26, "E3 4D F0 5D 40 80 EC", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 7934 /* 24*/ { DATA_MODE, 0, 4, 11, -1, "ກ", 0, 0, "6F 82 EA 04 00", 1, 0, "B3 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 7935 /* 25*/ { UNICODE_MODE, 0, 4, 11, -1, "\\", 0, 0, "65 70 00 EC 11", 1, 1, "B1 (ASCII)" }, | |
| 7936 /* 26*/ { UNICODE_MODE, 20, 4, 11, -1, "\\", 0, 20, "E2 91 00 F8 EC", 1, 1, "ECI-20 K1 (Shift JIS)" }, | |
| 7937 /* 27*/ { UNICODE_MODE, 20, 4, 11, -1, "[", 0, 20, "E2 8C AD 80 EC", 1, 1, "B1 (ASCII)" }, | |
| 7938 /* 28*/ { UNICODE_MODE, 20, 4, 11, -1, "\177", 0, 20, "E2 8C BF 80 EC", 1, 1, "ECI-20 B1 (ASCII)" }, | |
| 7939 /* 29*/ { UNICODE_MODE, 0, 4, 11, -1, "¥", 0, 0, "66 94 00 EC 11", 1, 0, "B1 (ISO 8859-1) (same bytes as ・ Shift JIS below, so ambiguous); ZXing-C++ test can't handle it" }, | |
| 7940 /* 30*/ { UNICODE_MODE, 3, 4, 11, -1, "¥", 0, 3, "E0 6C D2 80 EC", 1, 1, "ECI-3 B1 (ISO 8859-1)" }, | |
| 7941 /* 31*/ { UNICODE_MODE, 20, 4, 11, -1, "¥", 0, 20, "E2 8C AE 00 EC", 1, 0, "ECI-20 B1 (Shift JIS) (to single-byte backslash codepoint 5C, so byte mode); ZXing-C++ test can't handle it" }, | |
| 7942 /* 32*/ { UNICODE_MODE, 26, 4, 11, -1, "¥", 0, 26, "E3 4D 61 52 80", 1, 1, "ECI-26 B2 (UTF-8)" }, | |
| 7943 /* 33*/ { DATA_MODE, 0, 4, 11, -1, "¥", 0, 0, "6B 0A 94 00 EC", 1, 0, "B2 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 7944 /* 34*/ { UNICODE_MODE, 0, 4, 11, -1, "・", ZINT_WARN_NONCOMPLIANT, 0, "Warning 66 94 00 EC 11", 1, 1, "B1 (Shift JIS) single-byte codepoint A5 (same bytes as ¥ ISO 8859-1 above, so ambiguous)" }, | |
| 7945 /* 35*/ { UNICODE_MODE, 3, -1, -1, -1, "・", ZINT_ERROR_INVALID_DATA, -1, "Error 575: Invalid character in input for ECI '3'", 1, 1, "" }, | |
| 7946 /* 36*/ { UNICODE_MODE, 20, 4, 11, -1, "・", 0, 20, "E2 8C D2 80 EC", 1, 1, "ECI-20 B1 (Shift JIS) single-byte codepoint A5" }, | |
| 7947 /* 37*/ { UNICODE_MODE, 26, 2, 11, -1, "・", 0, 26, "E3 4D F7 DE D2 80 EC", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 7948 /* 38*/ { DATA_MODE, 0, 4, 11, -1, "・", 0, 0, "6F BE F6 94 00", 1, 0, "B3 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 7949 /* 39*/ { UNICODE_MODE, 0, 4, 11, -1, "¿", 0, 0, "66 FC 00 EC 11", 1, 0, "B1 (ISO 8859-1) (same bytes as ソ Shift JIS below, so ambiguous); ZXing-C++ test can't handle it" }, | |
| 7950 /* 40*/ { UNICODE_MODE, 3, 4, 11, -1, "¿", 0, 3, "E0 6C DF 80 EC", 1, 1, "ECI-3 B1 (ISO 8859-1)" }, | |
| 7951 /* 41*/ { UNICODE_MODE, 20, 4, 11, -1, "¿", ZINT_ERROR_INVALID_DATA, -1, "Error 800: Invalid character in input", 1, 1, "¿ not in Shift JIS" }, | |
| 7952 /* 42*/ { UNICODE_MODE, 26, 4, 11, -1, "¿", 0, 26, "E3 4D 61 5F 80", 1, 1, "ECI-26 B2 (UTF-8)" }, | |
| 7953 /* 43*/ { DATA_MODE, 0, 4, 11, -1, "¿", 0, 0, "6B 0A FC 00 EC", 1, 0, "B2 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 7954 /* 44*/ { UNICODE_MODE, 0, 4, 11, -1, "ソ", ZINT_WARN_NONCOMPLIANT, 0, "Warning 66 FC 00 EC 11", 1, 1, "B1 (Shift JIS) single-byte codepoint BF (same bytes as ¿ ISO 8859-1 above, so ambiguous)" }, | |
| 7955 /* 45*/ { UNICODE_MODE, 3, 4, 11, -1, "ソ", ZINT_ERROR_INVALID_DATA, -1, "Error 575: Invalid character in input for ECI '3'", 1, 1, "" }, | |
| 7956 /* 46*/ { UNICODE_MODE, 20, 4, 11, -1, "ソ", 0, 20, "E2 8C DF 80 EC", 1, 1, "ECI-20 B1 (Shift JIS) single-byte codepoint BF" }, | |
| 7957 /* 47*/ { UNICODE_MODE, 26, 2, 11, -1, "ソ", 0, 26, "E3 4D F7 DE DF 80 EC", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 7958 /* 48*/ { DATA_MODE, 0, 4, 11, -1, "ソ", 0, 0, "6F BE F6 FC 00", 1, 0, "B3 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 7959 /* 49*/ { UNICODE_MODE, 0, 4, 11, -1, "~", 0, 0, "65 F8 00 EC 11", 1, 1, "B1 (ASCII) (same bytes as ‾ Shift JIS below, so ambiguous)" }, | |
| 7960 /* 50*/ { UNICODE_MODE, 3, 4, 11, -1, "~", 0, 3, "E0 6C BF 00 EC", 1, 1, "ECI-3 B1 (ASCII)" }, | |
| 7961 /* 51*/ { UNICODE_MODE, 20, 4, 11, -1, "~", ZINT_ERROR_INVALID_DATA, -1, "Error 800: Invalid character in input", 1, 1, "tilde not in Shift JIS (codepoint used for overline)" }, | |
| 7962 /* 52*/ { UNICODE_MODE, 0, 4, 11, -1, "‾", ZINT_WARN_NONCOMPLIANT, 0, "Warning 65 F8 00 EC 11", 1, 0, "B1 (Shift JIS) single-byte codepoint 7E (same bytes as ~ ASCII above, so ambiguous); ZXing-C++ test can't handle it" }, | |
| 7963 /* 53*/ { UNICODE_MODE, 3, 4, 11, -1, "‾", ZINT_ERROR_INVALID_DATA, -1, "Error 575: Invalid character in input for ECI '3'", 1, 1, "" }, | |
| 7964 /* 54*/ { UNICODE_MODE, 20, 4, 11, -1, "‾", 0, 20, "E2 8C BF 00 EC", 1, 0, "ECI-20 B1 (Shift JIS) (to single-byte tilde codepoint 7E, so byte mode); ZXing-C++ test can't handle it" }, | |
| 7965 /* 55*/ { UNICODE_MODE, 26, 2, 11, -1, "‾", 0, 26, "E3 4D F1 40 5F 00 EC", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 7966 /* 56*/ { DATA_MODE, 0, 4, 11, -1, "‾", 0, 0, "6F 8A 02 F8 00", 1, 0, "B3 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 7967 /* 57*/ { UNICODE_MODE, 0, 4, 11, -1, "点", ZINT_WARN_NONCOMPLIANT, 0, "Warning 8B 67 C0 EC 11", 1, 1, "K1 (Shift JIS)" }, | |
| 7968 /* 58*/ { UNICODE_MODE, 3, 4, 11, -1, "点", ZINT_ERROR_INVALID_DATA, -1, "Error 575: Invalid character in input for ECI '3'", 1, 1, "" }, | |
| 7969 /* 59*/ { UNICODE_MODE, 20, 4, 11, -1, "点", 0, 20, "E2 91 6C F8 EC", 1, 1, "ECI-20 K1 (Shift JIS)" }, | |
| 7970 /* 60*/ { UNICODE_MODE, 26, 2, 11, -1, "点", 0, 26, "E3 4D F3 C1 5C 80 EC", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 7971 /* 61*/ { DATA_MODE, 0, 4, 11, -1, "点", 0, 0, "6F 9E 0A E4 00", 1, 0, "B3 (UTF-8; ZXing-C++ test can't handle DATA_MODE for certain inputs)" }, | |
| 7972 /* 62*/ { DATA_MODE, 0, 4, 11, -1, "\223\137", 0, 0, "6A 4D 7C 00 EC", 0, 0, "B2 (Shift JIS) (not full multibyte); BWIPP uses Kanji (ZINT_FULL_MULTIBYTE) mode, see below); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 7973 /* 63*/ { DATA_MODE, 0, 4, 11, ZINT_FULL_MULTIBYTE, "\223\137", 0, 0, "8B 67 C0 EC 11", 1, 1, "K1 (Shift JIS)" }, | |
| 7974 /* 64*/ { UNICODE_MODE, 0, 4, 11, -1, "¥・点", ZINT_WARN_NONCOMPLIANT, 0, "Warning 71 72 96 4D 7C", 1, 0, "B4 (Shift JIS) (optimized to byte mode only); ZXing-C++ test can't handle it" }, | |
| 7975 /* 65*/ { UNICODE_MODE, 3, -1, -1, -1, "¥・点", ZINT_ERROR_INVALID_DATA, -1, "Error 575: Invalid character in input for ECI '3'", 1, 1, "" }, | |
| 7976 /* 66*/ { UNICODE_MODE, 20, 2, 11, -1, "¥・点", 0, 20, "E2 8E 2E 52 C9 AF 80", 1, 0, "ECI-20 B4 (Shift JIS); ZXing-C++ test can't handle it" }, | |
| 7977 /* 67*/ { UNICODE_MODE, 26, 2, 17, -1, "¥・点", 0, 26, "E3 4E 30 A9 7B EF 69 79 E0 AE 40 EC", 1, 1, "ECI-26 B8 (UTF-8)" }, | |
| 7978 /* 68*/ { DATA_MODE, 0, 4, 11, -1, "\134\245\223\137", 0, 0, "71 72 96 4D 7C", 1, 0, "B8 (Shift JIS; ZXing-C++ test can't handle DATA_MODE for certain inputs)" }, | |
| 7979 /* 69*/ { DATA_MODE, 0, 2, 17, -1, "¥・点", 0, 0, "71 85 4B DF 7B 4B CF 05 72 00 EC 11", 1, 0, "B8 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, | |
| 7980 /* 70*/ { UNICODE_MODE, 0, 4, 11, -1, "点茗", ZINT_WARN_NONCOMPLIANT, 0, "Warning 93 67 F5 54 00", 1, 1, "K2 (Shift JIS)" }, | |
| 7981 /* 71*/ { UNICODE_MODE, 0, 2, 12, -1, "点茗テ点茗テソ", ZINT_WARN_NONCOMPLIANT, 0, "Warning 8C D9 FD 55 06 95 B3 FA AA 0D 2B 0D F8 EC 11 EC 11 EC 11", 1, 1, "K6 B1 (Shift JIS)" }, | |
| 7982 /* 72*/ { DATA_MODE, 0, 2, 12, -1, "\223\137\344\252\203\145\223\137\344\252\203\145\277", 0, 0, "6D 93 5F E4 AA 83 65 93 5F E4 AA 83 65 BF 00 EC 11 EC 11", 0, 0, "B13 (Shift JIS); BWIPP uses Kanji (ZINT_FULL_MULTIBYTE) mode, see below); ZXing-C++ test can't handle it" }, | |
| 7983 /* 73*/ { DATA_MODE, 0, 2, 12, ZINT_FULL_MULTIBYTE, "\223\137\344\252\203\145\223\137\344\252\203\145\277", 0, 0, "8C D9 FD 55 06 95 B3 FA AA 0D 2B 0D F8 EC 11 EC 11 EC 11", 1, 1, "K6 B1 (Shift JIS) (full multibyte)" }, | |
| 7984 /* 74*/ { UNICODE_MODE, 0, 4, 11, -1, "áA", 0, 0, "6B 85 04 00 EC", 0, 1, "B2 (ISO 8859-1); BWIPP uses Kanji (ZINT_FULL_MULTIBYTE) mode, see below)" }, | |
| 7985 /* 75*/ { UNICODE_MODE, 0, 4, 11, ZINT_FULL_MULTIBYTE, "áA", 0, 0, "8E 00 40 EC 11", 1, 1, "K1 (ISO 8859-1) (full multibyte)" }, | |
| 7986 /* 76*/ { UNICODE_MODE, 0, 2, 23, -1, "A0B1C2D3E4F5G6H7I8J9KLMNOPQRSTUVWXYZ $%*+-./:", 0, 0, "(33) 56 9C 23 E0 87 92 62 7A 55 0B 59 82 33 26 C0 E6 5F AC 51 95 B4 26 B2 DC 1C 3B 9E 76", 1, 1, "A45" }, | |
| 7987 /* 77*/ { UNICODE_MODE, 0, 4, 11, -1, "˘", ZINT_WARN_USES_ECI, 4, "Warning E0 8C D1 00 EC", 1, 1, "ECI-4 B1 (ISO 8859-2)" }, | |
| 7988 /* 78*/ { UNICODE_MODE, 4, 4, 11, -1, "˘", 0, 4, "E0 8C D1 00 EC", 1, 1, "ECI-4 B1 (ISO 8859-2)" }, | |
| 7989 /* 79*/ { UNICODE_MODE, 0, 4, 11, -1, "Ħ", ZINT_WARN_USES_ECI, 5, "Warning E0 AC D0 80 EC", 1, 1, "ECI-5 B1 (ISO 8859-3)" }, | |
| 7990 /* 80*/ { UNICODE_MODE, 5, 4, 11, -1, "Ħ", 0, 5, "E0 AC D0 80 EC", 1, 1, "ECI-5 B1 (ISO 8859-3)" }, | |
| 7991 /* 81*/ { UNICODE_MODE, 0, 4, 11, -1, "ĸ", ZINT_WARN_USES_ECI, 6, "Warning E0 CC D1 00 EC", 1, 1, "ECI-6 B1 (ISO 8859-4)" }, | |
| 7992 /* 82*/ { UNICODE_MODE, 6, 4, 11, -1, "ĸ", 0, 6, "E0 CC D1 00 EC", 1, 1, "ECI-6 B1 (ISO 8859-4)" }, | |
| 7993 /* 83*/ { UNICODE_MODE, 0, 4, 11, -1, "Ș", ZINT_WARN_USES_ECI, 18, "Warning E2 4C D5 00 EC", 1, 1, "ECI-18 B1 (ISO 8859-16)" }, | |
| 7994 /* 84*/ { UNICODE_MODE, 18, 4, 11, -1, "Ș", 0, 18, "E2 4C D5 00 EC", 1, 1, "ECI-18 B1 (ISO 8859-16)" }, | |
| 7995 /* 85*/ { UNICODE_MODE, 0, 4, 11, -1, "テ", ZINT_WARN_NONCOMPLIANT, 0, "Warning 88 69 40 EC 11", 1, 1, "K1 (SHIFT JIS)" }, | |
| 7996 /* 86*/ { UNICODE_MODE, 20, 4, 11, -1, "テ", 0, 20, "E2 91 0D 28 EC", 1, 1, "ECI-20 K1 (SHIFT JIS)" }, | |
| 7997 /* 87*/ { UNICODE_MODE, 20, 2, 11, -1, "テテ", 0, 20, "E2 92 0D 28 69 40 EC", 1, 1, "ECI-20 K2 (SHIFT JIS)" }, | |
| 7998 /* 88*/ { UNICODE_MODE, 20, 2, 11, -1, "\\\\", 0, 20, "E2 92 00 F8 07 C0 EC", 1, 1, "ECI-20 K2 (SHIFT JIS)" }, | |
| 7999 /* 89*/ { UNICODE_MODE, 0, 4, 11, -1, "…", ZINT_WARN_NONCOMPLIANT, 0, "Warning 88 08 C0 EC 11", 1, 1, "K1 (SHIFT JIS)" }, | |
| 8000 /* 90*/ { UNICODE_MODE, 21, 4, 11, -1, "…", 0, 21, "E2 AC C2 80 EC", 1, 1, "ECI-21 B1 (Win 1250)" }, | |
| 8001 /* 91*/ { UNICODE_MODE, 0, 4, 11, -1, "Ґ", ZINT_WARN_USES_ECI, 22, "Warning E2 CC D2 80 EC", 1, 1, "ECI-22 B1 (Win 1251)" }, | |
| 8002 /* 92*/ { UNICODE_MODE, 22, 4, 11, -1, "Ґ", 0, 22, "E2 CC D2 80 EC", 1, 1, "ECI-22 B1 (Win 1251)" }, | |
| 8003 /* 93*/ { UNICODE_MODE, 0, 4, 11, -1, "˜", ZINT_WARN_USES_ECI, 23, "Warning E2 EC CC 00 EC", 1, 1, "ECI-23 B1 (Win 1252)" }, | |
| 8004 /* 94*/ { UNICODE_MODE, 23, 4, 11, -1, "˜", 0, 23, "E2 EC CC 00 EC", 1, 1, "ECI-23 B1 (Win 1252)" }, | |
| 8005 /* 95*/ { UNICODE_MODE, 24, 4, 11, -1, "پ", 0, 24, "E3 0C C0 80 EC", 1, 1, "ECI-24 B1 (Win 1256)" }, | |
| 8006 /* 96*/ { UNICODE_MODE, 0, 2, 11, -1, "က", ZINT_WARN_USES_ECI, 26, "Warning E3 4D F0 C0 40 00 EC", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 8007 /* 97*/ { UNICODE_MODE, 25, 4, 11, -1, "က", 0, 25, "E3 2D 08 00 00", 1, 1, "ECI-25 B2 (UCS-2BE)" }, | |
| 8008 /* 98*/ { UNICODE_MODE, 25, 2, 11, -1, "ကက", 0, 25, "E3 2E 08 00 08 00 00", 1, 1, "ECI-25 B4 (UCS-2BE)" }, | |
| 8009 /* 99*/ { UNICODE_MODE, 25, 2, 11, -1, "12", 0, 25, "E3 2E 00 18 80 19 00", 1, 1, "ECI-25 B4 (UCS-2BE ASCII)" }, | |
| 8010 /*100*/ { UNICODE_MODE, 27, 4, 11, -1, "@", 0, 27, "E3 6C A0 00 EC", 1, 1, "ECI-27 B1 (ASCII)" }, | |
| 8011 /*101*/ { UNICODE_MODE, 0, 2, 11, -1, "龘", ZINT_WARN_USES_ECI, 26, "Warning E3 4D F4 DF 4C 00 EC", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 8012 /*102*/ { UNICODE_MODE, 28, 4, 11, -1, "龘", 0, 28, "E3 8D 7C EA 80", 1, 1, "ECI-28 B2 (Big5)" }, | |
| 8013 /*103*/ { UNICODE_MODE, 28, 2, 11, -1, "龘龘", 0, 28, "E3 8E 7C EA FC EA 80", 1, 1, "ECI-28 B4 (Big5)" }, | |
| 8014 /*104*/ { UNICODE_MODE, 0, 2, 11, -1, "齄", ZINT_WARN_USES_ECI, 26, "Warning E3 4D F4 DE C2 00 EC", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 8015 /*105*/ { UNICODE_MODE, 29, 4, 11, -1, "齄", 0, 29, "E3 AD 7B FF 00", 1, 1, "ECI-29 B2 (GB 2312)" }, | |
| 8016 /*106*/ { UNICODE_MODE, 29, 2, 11, -1, "齄齄", 0, 29, "E3 AE 7B FF 7B FF 00", 1, 1, "ECI-29 B4 (GB 2312)" }, | |
| 8017 /*107*/ { UNICODE_MODE, 0, 2, 11, -1, "가", ZINT_WARN_USES_ECI, 26, "Warning E3 4D F5 58 40 00 EC", 1, 1, "ECI-26 B3 (UTF-8)" }, | |
| 8018 /*108*/ { UNICODE_MODE, 30, 4, 11, -1, "가", 0, 30, "E3 CD 58 50 80", 1, 1, "ECI-30 B2 (EUC-KR)" }, | |
| 8019 /*109*/ { UNICODE_MODE, 30, 2, 11, -1, "가가", 0, 30, "E3 CE 58 50 D8 50 80", 1, 1, "ECI-30 B4 (EUC-KR)" }, | |
| 8020 /*110*/ { UNICODE_MODE, 170, 4, 11, -1, "?", 0, 170, "F0 15 4C 9F 80", 1, 1, "ECI-170 B1 (ASCII invariant)" }, | |
| 8021 /*111*/ { DATA_MODE, 899, 4, 11, -1, "\200", 0, 899, "F0 70 6C C0 00", 1, 1, "ECI-899 B1 (8-bit binary)" }, | |
| 8022 /*112*/ { UNICODE_MODE, 900, 2, 11, -1, "é", 0, 900, "F0 70 8D 61 D4 80 EC", 1, 1, "ECI-900 B2 (no conversion)" }, | |
| 8023 /*113*/ { UNICODE_MODE, 16384, 2, 11, -1, "é", 0, 16384, "F8 08 00 0D 61 D4 80", 1, 1, "ECI-16384 B2 (no conversion)" }, | |
| 8024 /*114*/ { UNICODE_MODE, 3, 2, 14, -1, "Google Pixel 4a 128 GB Black;price:$439.97", 0, 3, "(43) E0 6C F4 76 F6 F6 76 C6 52 05 06 97 86 56 C2 03 46 14 4E 55 0C 59 91 09 96 CA 6C 61", 0, 1, "ECI-3 B15 A9 B10 A8; BWIPP different encodation (B42) & doesn't fit)" }, | |
| 8025 /*115*/ { UNICODE_MODE, 29, 2, 20, -1, "Google 谷歌 Pixel 4a 128 GB黑色;零售价:¥3149.79", 0, 29, "(53) E3 AE 94 76 F6 F6 76 C6 52 0B 9C 8B 8E 82 05 06 97 86 56 C2 03 46 12 03 13 23 82 04", 1, 1, "ECI-29 B41 A7" }, | |
| 8026 /*116*/ { UNICODE_MODE, 17, 2, 24, -1, "Google Pixel 4a 128 GB Schwarz;Preis:444,90 €", 0, 17, "(48) E2 2C F4 76 F6 F6 76 C6 52 05 06 97 86 56 C2 03 46 14 27 2A 86 2C C8 84 DC 6A B1 B4", 0, 1, "ECI-17 B15 A9 B21; BWIPP different encodation (B46)" }, | |
| 8027 }; | |
| 8028 const int data_size = ARRAY_SIZE(data); | |
| 8029 int i, length, ret; | |
| 8030 struct zint_symbol *symbol = NULL; | |
| 8031 | |
| 8032 char escaped[4096]; | |
| 8033 char cmp_buf[32768]; | |
| 8034 char cmp_msg[1024]; | |
| 8035 | |
| 8036 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 8037 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 8038 | |
| 8039 testStartSymbol("test_rmqr_input", &symbol); | |
| 8040 | |
| 8041 for (i = 0; i < data_size; i++) { | |
| 8042 | |
| 8043 if (testContinue(p_ctx, i)) continue; | |
| 8044 | |
| 8045 symbol = ZBarcode_Create(); | |
| 8046 assert_nonnull(symbol, "Symbol not created\n"); | |
| 8047 | |
| 8048 debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ | |
| 8049 | |
| 8050 length = testUtilSetSymbol(symbol, BARCODE_RMQR, data[i].input_mode, data[i].eci, data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/, data[i].data, -1, debug); | |
| 8051 | |
| 8052 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 8053 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 8054 | |
| 8055 if (p_ctx->generate) { | |
| 8056 printf(" /*%3d*/ { %s, %d, %d, %d, %s, \"%s\", %s, %d, \"%s\", %d, %d, \"%s\" },\n", | |
| 8057 i, testUtilInputModeName(data[i].input_mode), data[i].eci, | |
| 8058 data[i].option_1, data[i].option_2, testUtilOption3Name(BARCODE_RMQR, data[i].option_3), | |
| 8059 testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), | |
| 8060 testUtilErrorName(data[i].ret), ret < ZINT_ERROR ? symbol->eci : -1, | |
| 8061 symbol->errtxt, data[i].bwipp_cmp, data[i].zxingcpp_cmp, data[i].comment); | |
| 8062 } else { | |
| 8063 if (ret < ZINT_ERROR) { | |
| 8064 assert_equal(symbol->eci, data[i].expected_eci, "i:%d eci %d != %d\n", i, symbol->eci, data[i].expected_eci); | |
| 8065 } | |
| 8066 assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); | |
| 8067 | |
| 8068 if (ret < ZINT_ERROR) { | |
| 8069 if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, debug)) { | |
| 8070 if (!data[i].bwipp_cmp) { | |
| 8071 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 8072 } else { | |
| 8073 char modules_dump[17 * 139 + 1]; | |
| 8074 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 8075 ret = testUtilBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); | |
| 8076 assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 8077 | |
| 8078 ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); | |
| 8079 assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", | |
| 8080 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); | |
| 8081 } | |
| 8082 } | |
| 8083 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { | |
| 8084 if (!data[i].zxingcpp_cmp) { | |
| 8085 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not ZXing-C++ compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 8086 } else { | |
| 8087 int cmp_len, ret_len; | |
| 8088 char modules_dump[17 * 139 + 1]; | |
| 8089 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 8090 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 8091 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 8092 | |
| 8093 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); | |
| 8094 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 8095 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 8096 } | |
| 8097 } | |
| 8098 } | |
| 8099 } | |
| 8100 | |
| 8101 ZBarcode_Delete(symbol); | |
| 8102 } | |
| 8103 | |
| 8104 testFinish(); | |
| 8105 } | |
| 8106 | |
| 8107 static void test_rmqr_gs1(const testCtx *const p_ctx) { | |
| 8108 int debug = p_ctx->debug; | |
| 8109 | |
| 8110 struct item { | |
| 8111 int input_mode; | |
| 8112 char *data; | |
| 8113 int ret; | |
| 8114 char *expected; | |
| 8115 char *comment; | |
| 8116 }; | |
| 8117 static const struct item data[] = { | |
| 8118 /* 0*/ { GS1_MODE, "[01]12345678901231", 0, "A6 00 59 D5 1B EF 43 D8 80 EC 11 EC", "N16" }, | |
| 8119 /* 1*/ { GS1_MODE | GS1PARENS_MODE, "(01)12345678901231", 0, "A6 00 59 D5 1B EF 43 D8 80 EC 11 EC", "N16" }, | |
| 8120 /* 2*/ { GS1_MODE, "[01]04912345123459[15]970331[30]128[10]ABC123", 0, "A5 D0 29 EB 3A A0 05 67 93 F2 94 B4 B4 E2 4E AF 01 47 EC 17 86", "N29 A9" }, | |
| 8121 /* 3*/ { GS1_MODE | GS1PARENS_MODE, "(01)04912345123459(15)970331(30)128(10)ABC123", 0, "A5 D0 29 EB 3A A0 05 67 93 F2 94 B4 B4 E2 4E AF 01 47 EC 17 86", "N29 A9" }, | |
| 8122 /* 4*/ { GS1_MODE, "[91]12%[20]12", 0, "A4 9C 79 32 25 1D 24 32 48 00 EC 11", "N4 B2 N4" }, | |
| 8123 /* 5*/ { GS1_MODE, "[91]123%[20]12", 0, "A4 BC 79 76 44 A3 A4 86 49 00 EC 11", "N5 B2 N4" }, | |
| 8124 /* 6*/ { GS1_MODE, "[91]1234%[20]12", 0, "A4 DC 79 D4 C8 94 74 90 C9 20 EC 11", "N6 B2 N4" }, | |
| 8125 /* 7*/ { GS1_MODE, "[91]12345%[20]12", 0, "A4 FC 79 D4 AC 89 47 49 0C 92 00 EC", "N7 B2 N4" }, | |
| 8126 /* 8*/ { GS1_MODE, "[91]1A%[20]12", 0, "A8 E6 58 1B ED 49 89 0C 92 00 EC 11", "A6(7) N4" }, | |
| 8127 /* 9*/ { GS1_MODE, "[91]%%[20]12", 0, "A4 56 D9 92 92 8E 92 19 24 00 EC 11", "N2 B3 N4" }, | |
| 8128 /* 10*/ { GS1_MODE, "[91]%%%[20]12", 0, "A4 56 DA 12 92 92 8E 92 19 24 00 EC", "N2 B4 N4" }, | |
| 8129 /* 11*/ { GS1_MODE, "[91]A%%%%12345678A%A", 0, "AC E7 26 28 24 A4 A4 A4 A4 81 ED C8 9C 88 7A 35 C0 EC 11", "B7 N8 A3(4)" }, | |
| 8130 /* 12*/ { GS1_MODE, "[91]%23%%6789%%%34567%%%%234%%%%%", 0, "(33) A9 43 2D B5 02 EE D4 DA 84 54 B8 ED 4D A9 B5 08 55 66 1B 30 94 94 94 94 C8 CC D0 94", "A14(20) N5 B12" }, | |
| 8131 }; | |
| 8132 const int data_size = ARRAY_SIZE(data); | |
| 8133 int i, length, ret; | |
| 8134 struct zint_symbol *symbol = NULL; | |
| 8135 | |
| 8136 char escaped[4096]; | |
| 8137 char cmp_buf[32768]; | |
| 8138 char cmp_msg[1024]; | |
| 8139 | |
| 8140 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 8141 | |
| 8142 testStartSymbol("test_rmqr_gs1", &symbol); | |
| 8143 | |
| 8144 for (i = 0; i < data_size; i++) { | |
| 8145 | |
| 8146 if (testContinue(p_ctx, i)) continue; | |
| 8147 | |
| 8148 symbol = ZBarcode_Create(); | |
| 8149 assert_nonnull(symbol, "Symbol not created\n"); | |
| 8150 | |
| 8151 debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ | |
| 8152 | |
| 8153 length = testUtilSetSymbol(symbol, BARCODE_RMQR, data[i].input_mode, -1 /*eci*/, -1 /*option_1*/, -1, -1, -1 /*output_options*/, data[i].data, -1, debug); | |
| 8154 | |
| 8155 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 8156 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 8157 | |
| 8158 if (p_ctx->generate) { | |
| 8159 printf(" /*%3d*/ { %s, \"%s\", %s, \"%s\", \"%s\" },\n", | |
| 8160 i, testUtilInputModeName(data[i].input_mode), testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), testUtilErrorName(data[i].ret), symbol->errtxt, data[i].comment); | |
| 8161 } else { | |
| 8162 assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); | |
| 8163 | |
| 8164 if (ret < ZINT_ERROR) { | |
| 8165 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { | |
| 8166 int cmp_len, ret_len; | |
| 8167 char modules_dump[17 * 139 + 1]; | |
| 8168 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 8169 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 8170 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 8171 | |
| 8172 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); | |
| 8173 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 8174 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 8175 } | |
| 8176 } | |
| 8177 } | |
| 8178 | |
| 8179 ZBarcode_Delete(symbol); | |
| 8180 } | |
| 8181 | |
| 8182 testFinish(); | |
| 8183 } | |
| 8184 | |
| 8185 static void test_rmqr_optimize(const testCtx *const p_ctx) { | |
| 8186 int debug = p_ctx->debug; | |
| 8187 | |
| 8188 struct item { | |
| 8189 int input_mode; | |
| 8190 int option_1; | |
| 8191 int option_2; | |
| 8192 char *data; | |
| 8193 int ret; | |
| 8194 char *expected; | |
| 8195 int bwipp_cmp; | |
| 8196 char *comment; | |
| 8197 }; | |
| 8198 static const struct item data[] = { | |
| 8199 /* 0*/ { UNICODE_MODE, 4, 11, "1", 0, "22 20 EC 11 EC", 1, "N1" }, | |
| 8200 /* 1*/ { UNICODE_MODE, 4, 11, "AAA", 0, "46 73 0A 00 EC", 1, "A3" }, | |
| 8201 /* 2*/ { UNICODE_MODE, 2, 11, "0123456789", 0, "34 06 2B 35 34 80 EC", 1, "N10 (nayuki.io - pure numeric)" }, | |
| 8202 /* 3*/ { UNICODE_MODE, 2, 11, "ABCDEF", 0, "4C 73 51 4A 85 00 EC", 1, "A6 (nayuki.io - pure alphanumeric)" }, | |
| 8203 /* 4*/ { UNICODE_MODE, 4, 11, "wxyz", 0, "71 DD E1 E5 E8", 1, "B4 (nayuki.io - pure byte)" }, | |
| 8204 /* 5*/ { UNICODE_MODE, 2, 20, "「魔法少女まどか☆マギカ」って、 ИАИ desu κα?", ZINT_WARN_NONCOMPLIANT, "Warning (53) 8E 80 D6 00 4F C0 57 6A B5 C2 B8 14 70 94 81 64 37 A1 8D 0C 50 0D 82 82 14 40 00 80", 1, "K29 (nayuki.io - pure kanji)" }, | |
| 8205 /* 6*/ { UNICODE_MODE, 4, 11, "012A", 0, "48 00 43 20 EC", 1, "A4" }, | |
| 8206 /* 7*/ { UNICODE_MODE, 4, 11, "0123A", 0, "28 06 1A 12 80", 1, "N4 A1 (nayuki.io - alpha/numeric)" }, | |
| 8207 /* 8*/ { UNICODE_MODE, 4, 11, "0a", 0, "68 C1 84 00 EC", 1, "B2 (nayuki.io - numeric/byte)" }, | |
| 8208 /* 9*/ { UNICODE_MODE, 4, 11, "01a", 0, "24 05 96 10 EC", 1, "N2 B1 (nayuki.io - numeric/byte)" }, | |
| 8209 /* 10*/ { UNICODE_MODE, 4, 11, "ABCa", 0, "71 05 09 0D 84", 1, "A4 (nayuki.io - alphanumeric/byte)" }, | |
| 8210 /* 11*/ { UNICODE_MODE, 2, 11, "ABCDa", 0, "48 73 51 4B 2C 20 EC", 1, "A4 B1 (same bits as B5)" }, | |
| 8211 /* 12*/ { UNICODE_MODE, 2, 24, "THE SQUARE ROOT OF 2 IS 1.41421356237309504880168872420969807856967187537694807317667973799", 0, "(48) 46 A9 52 9A A0 D5 42 66 E6 F8 A1 4F 62 3E 56 CC D4 40 2B 98 2C F1 AB 19 2E A2 F8 61", 1, " A26 N65 (nayuki.io - alpha/numeric)" }, | |
| 8212 /* 13*/ { UNICODE_MODE, 2, 21, "Golden ratio φ = 1.6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911374......", ZINT_WARN_NONCOMPLIANT, "Warning (73) 65 11 DB DB 19 19 5B 88 1C 98 5D 1A 5B C8 20 F4 C8 0F 48 0C 4B 8B 24 D4 10 FB 97 6E", 1, "B20 N100 A6 (nayuki.io - alpha/numeric/byte)" }, | |
| 8213 /* 14*/ { UNICODE_MODE, 2, 18, "こんにちwa、世界! αβγδ", ZINT_WARN_NONCOMPLIANT, "Warning 84 09 88 5C 42 92 13 F6 B7 76 18 14 19 0A 28 A4 58 14 92 08 40 FF 88 00 40 22 02", 1, "K4 B7 K4 (nayuki.io - kanji/european)" }, | |
| 8214 /* 15*/ { UNICODE_MODE, 2, 32, "6547861663com.acme35584af52fa3-88d0-093b-6c14-b37ddafb59c528908608sg.com.dash.www05303790265903SG.COM.NETS46967004B2AE13344004SG.SGQR209710339382.6359SG8236HELLO FOO2517Singapore3272B815", 0, "(152) 20 AA 3B 12 29 8D 97 B1 B7 B6 97 30 B1 B6 B2 99 9A 9A 9C 1A 30 B3 1A 99 33 30 99 96", 1, "N10 B47 N9 B15 N14 A38 N12 A25 B8 A8 (nayuki.io - SGQR alpha/numeric/byte)" }, | |
| 8215 /* 16*/ { UNICODE_MODE, 2, 27, "2004年大西洋颶風季是有以来造成人失惨重的大季之一,于2004年6月1日正式始,同年11月30日束,上的日期界定了一年中大多数气旋在大西洋形成的段lll ku", ZINT_WARN_NONCOMPLIANT, "Warning (127) 20 43 21 21 87 27 32 95 77 90 AD F0 33 D5 CF 0E BA 58 46 17 22 19 0C 62 5D 62 DB 14", 0, "N4 K24 N4 B6 K7 B6 K26 B6 (nayuki.io - kanji/byte/numeric, non-Shift JIS removed; BWIPP different encodation (N4 K24 N4 B26 K26 B6)" }, | |
| 8216 /* 17*/ { UNICODE_MODE, 2, 17, "AB1234567A", 0, "4A 39 A0 BC 45 8E 72 8A 00 EC 11 EC", 1, "A10" }, | |
| 8217 /* 18*/ { UNICODE_MODE, 2, 17, "AB12345678A", 0, "42 39 A5 03 DB 91 39 04 A0 EC 11 EC", 1, "A2 N8 A1" }, | |
| 8218 /* 19*/ { UNICODE_MODE, 2, 11, "テaA1", ZINT_WARN_NONCOMPLIANT, "Warning 76 0D 95 85 04 C4 00", 1, "B4" }, | |
| 8219 /* 20*/ { UNICODE_MODE, 2, 11, "テaAB1", ZINT_WARN_NONCOMPLIANT, "Warning 6E 0D 95 85 19 CD 04", 0, "B3 A3; BWIPP different encodation (B6)" }, | |
| 8220 /* 21*/ { UNICODE_MODE, 2, 32, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機", ZINT_WARN_NONCOMPLIANT, "Warning (152) 82 0E A2 16 20 97 28 BD 02 C1 4F 09 12 61 08 04 A0 83 AA 3E 3D 43 4C 13 0D 68 73 1F", 1, "K8 N1 K8 N1 K10 N2 K33 N2 K16 N1 K7" }, | |
| 8221 }; | |
| 8222 const int data_size = ARRAY_SIZE(data); | |
| 8223 int i, length, ret; | |
| 8224 struct zint_symbol *symbol = NULL; | |
| 8225 | |
| 8226 char escaped[4096]; | |
| 8227 char cmp_buf[32768]; | |
| 8228 char cmp_msg[1024]; | |
| 8229 | |
| 8230 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 8231 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 8232 | |
| 8233 testStartSymbol("test_rmqr_optimize", &symbol); | |
| 8234 | |
| 8235 for (i = 0; i < data_size; i++) { | |
| 8236 | |
| 8237 if (testContinue(p_ctx, i)) continue; | |
| 8238 | |
| 8239 symbol = ZBarcode_Create(); | |
| 8240 assert_nonnull(symbol, "Symbol not created\n"); | |
| 8241 | |
| 8242 debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ | |
| 8243 | |
| 8244 length = testUtilSetSymbol(symbol, BARCODE_RMQR, data[i].input_mode, -1 /*eci*/, data[i].option_1, data[i].option_2, ZINT_FULL_MULTIBYTE, -1 /*output_options*/, data[i].data, -1, debug); | |
| 8245 | |
| 8246 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 8247 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 8248 | |
| 8249 if (p_ctx->generate) { | |
| 8250 printf(" /*%3d*/ { %s, %d, %d, \"%s\", %s, \"%s\", %d, \"%s\" },\n", | |
| 8251 i, testUtilInputModeName(data[i].input_mode), data[i].option_1, data[i].option_2, | |
| 8252 testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), | |
| 8253 testUtilErrorName(data[i].ret), symbol->errtxt, data[i].bwipp_cmp, data[i].comment); | |
| 8254 } else { | |
| 8255 assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); | |
| 8256 | |
| 8257 if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, -1, debug)) { | |
| 8258 if (!data[i].bwipp_cmp) { | |
| 8259 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 8260 } else { | |
| 8261 char modules_dump[17 * 139 + 1]; | |
| 8262 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 8263 ret = testUtilBwipp(i, symbol, data[i].option_1, data[i].option_2, -1, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); | |
| 8264 assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 8265 | |
| 8266 ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); | |
| 8267 assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", | |
| 8268 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); | |
| 8269 } | |
| 8270 } | |
| 8271 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { | |
| 8272 int cmp_len, ret_len; | |
| 8273 char modules_dump[17 * 139 + 1]; | |
| 8274 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 8275 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 8276 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 8277 | |
| 8278 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); | |
| 8279 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 8280 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 8281 } | |
| 8282 } | |
| 8283 | |
| 8284 ZBarcode_Delete(symbol); | |
| 8285 } | |
| 8286 | |
| 8287 testFinish(); | |
| 8288 } | |
| 8289 | |
| 8290 static void test_rmqr_encode(const testCtx *const p_ctx) { | |
| 8291 int debug = p_ctx->debug; | |
| 8292 | |
| 8293 struct item { | |
| 8294 int input_mode; | |
| 8295 int eci; | |
| 8296 int option_1; | |
| 8297 int option_2; | |
| 8298 int option_3; | |
| 8299 char *data; | |
| 8300 int ret; | |
| 8301 | |
| 8302 int expected_rows; | |
| 8303 int expected_width; | |
| 8304 int bwipp_cmp; | |
| 8305 char *comment; | |
| 8306 char *expected; | |
| 8307 }; | |
| 8308 /* ISO/IEC 23941:2022 */ | |
| 8309 static const struct item data[] = { | |
| 8310 /* 0*/ { UNICODE_MODE, -1, 4, 11, ZINT_FULL_MULTIBYTE, "0123456", 0, 11, 27, 1, "ISO 23941 Annex I Figure I.2, R11x27-H, same", | |
| 8311 "111111101010101010101010111" | |
| 8312 "100000100110100001110100101" | |
| 8313 "101110100001001111010011111" | |
| 8314 "101110101111011011110001100" | |
| 8315 "101110100101110111111001011" | |
| 8316 "100000101110000100111110010" | |
| 8317 "111111101111111110001011111" | |
| 8318 "000000001111101011010010001" | |
| 8319 "111100000010010100111110101" | |
| 8320 "101010100110010100111010001" | |
| 8321 "111010101010101010101011111" | |
| 8322 }, | |
| 8323 /* 1*/ { UNICODE_MODE, -1, 4, 11, -1, "0123456", 0, 11, 27, 1, "ISO 23941 Annex I Figure I.2, R11x27-H, same", | |
| 8324 "111111101010101010101010111" | |
| 8325 "100000100110100001110100101" | |
| 8326 "101110100001001111010011111" | |
| 8327 "101110101111011011110001100" | |
| 8328 "101110100101110111111001011" | |
| 8329 "100000101110000100111110010" | |
| 8330 "111111101111111110001011111" | |
| 8331 "000000001111101011010010001" | |
| 8332 "111100000010010100111110101" | |
| 8333 "101010100110010100111010001" | |
| 8334 "111010101010101010101011111" | |
| 8335 }, | |
| 8336 /* 2*/ { UNICODE_MODE, -1, 2, 17, ZINT_FULL_MULTIBYTE, "12345678901234567890123456", 0, 13, 27, 1, "ISO 23941 6.2 Figure 1, R13x27-M, same", | |
| 8337 "111111101010101010101010111" | |
| 8338 "100000100001001100010011001" | |
| 8339 "101110101100000011001110001" | |
| 8340 "101110100110101100000100000" | |
| 8341 "101110101110100110110110011" | |
| 8342 "100000100011100011001011000" | |
| 8343 "111111100100111111000011101" | |
| 8344 "000000001010010101010001100" | |
| 8345 "110101101011010110010011111" | |
| 8346 "011001101010101111100010001" | |
| 8347 "100000100111000111101010101" | |
| 8348 "100011010010010100000010001" | |
| 8349 "111010101010101010101011111" | |
| 8350 }, | |
| 8351 /* 3*/ { UNICODE_MODE, -1, 2, 2, ZINT_FULL_MULTIBYTE, "0123456789012345", 0, 7, 59, 1, "ISO 23941 7.4.2 Numeric mode Example, R7x59-M, same codewords", | |
| 8352 "11111110101010101011101010101010101010111010101010101010111" | |
| 8353 "10000010101111011110100001100001100001101100100101100100101" | |
| 8354 "10111010100100001011110010110000011110111110111100011011111" | |
| 8355 "10111010110001100010010100111010101101101011111000110110001" | |
| 8356 "10111010011001000011100111100000110010111011010111011010101" | |
| 8357 "10000010101010110110100010111110010010101111101111110010001" | |
| 8358 "11111110101010101011101010101010101010111010101010101011111" | |
| 8359 }, | |
| 8360 /* 4*/ { UNICODE_MODE, -1, 2, 2, ZINT_FULL_MULTIBYTE, "AC-42", 0, 7, 59, 1, "ISO 23941 7.4.3 Alphanumeric mode Example, R7x59-M, same codewords", | |
| 8361 "11111110101010101011101010101010101010111010101010101010111" | |
| 8362 "10000010101111010010110011010101100000101011001111100100101" | |
| 8363 "10111010100100100011100100111100011101111100011011111011111" | |
| 8364 "10111010110001110110100001101110100111101110000010010110001" | |
| 8365 "10111010011000110111111101110000110001111000100110111010101" | |
| 8366 "10000010101010111110100011101110011011101101011010110010001" | |
| 8367 "11111110101010101011101010101010101010111010101010101011111" | |
| 8368 }, | |
| 8369 /* 5*/ { UNICODE_MODE, -1, -1, 1, ZINT_FULL_MULTIBYTE, "123456789012", 0, 7, 43, 1, "R7x43-M max numeric 12 digits", | |
| 8370 "1111111010101010101011101010101010101010111" | |
| 8371 "1000001001010111111010100000100011011000101" | |
| 8372 "1011101010111000100111101101011010111111111" | |
| 8373 "1011101001100110111000000001111111000010001" | |
| 8374 "1011101000101100011111100110111110110010101" | |
| 8375 "1000001011110111111110101101001010111010001" | |
| 8376 "1111111010101010101011101010101010101011111" | |
| 8377 }, | |
| 8378 /* 6*/ { UNICODE_MODE, -1, 4, 32, ZINT_FULL_MULTIBYTE, "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678", 0, 17, 139, 1, "R17x139-H max numeric 178 digits", | |
| 8379 "1111111010101010101010101011101010101010101010101010101110101010101010101010101010111010101010101010101010101011101010101010101010101010111" | |
| 8380 "1000001011001111001111010110101111111110001100100101011011010101100000011101000010101101000110111100000111101010111011011000011100010001001" | |
| 8381 "1011101010001001010100111011111010110101010101000101101110001111010001011001101110111001010011010101010100101011100001100100000011101011111" | |
| 8382 "1011101010010100010101100110101001110011110111011110111001011000100100110010111101000101000111100010011000100100101000110111100110001010000" | |
| 8383 "1011101001010110110010110101011110011101110111001011011100110010101111101110000011010000110001011011001001011001011000011110111101111100111" | |
| 8384 "1000001010001101001110011100001111111000001001101011001011011101110100010001111100001111001000011001100011101000001111001000010010101001110" | |
| 8385 "1111111011110001000111011111010111111010101011110111110111001111100011001110111101110110110010110100110111100101000111111001011100000010101" | |
| 8386 "0000000010010000011010101010101101001101111011101100000001101001101101110100101011101100011111100100101111010100110001110111001000010110000" | |
| 8387 "1110101110111001111110100101000010011011111000110111001110001001001101101111011001111000111111001011111010010111111110010111100000111001101" | |
| 8388 "0101000110010110111000000000001111011000011111111100101011001010101111111000110100100001101111111011001111101000001110011100010101010000100" | |
| 8389 "1001000000100010100001101111110100011001110001011010001111101010010110110101101110010011111100011100011010101001000001101000000111101010011" | |
| 8390 "0011010010110011011010100010101010011000100010100101100010111110001110111010100110100101110010000100010000100110101000010001101110001011010" | |
| 8391 "1000110001111011101101101101110110011110110110111110111110110001000111110010000110110000000011100010000101010111011010010111101001011011111" | |
| 8392 "0010000000111010001110110110011000011010011101100010000011101001011101001011001011001011100010111101010111011000010111001001000010111110001" | |
| 8393 "1100101100110100100101000011111110111000010001101001001111001110110100000111101011111001100101001000000011101011110100101001010100111110101" | |
| 8394 "1010111110110100011001111010100011101111001101100101111011100101011100011011011000101010010000000100111000011010100000100111101001110110001" | |
| 8395 "1110101010101010101010101011101010101010101010101010101110101010101010101010101010111010101010101010101010101011101010101010101010101011111" | |
| 8396 }, | |
| 8397 /* 7*/ { UNICODE_MODE, -1, 4, 33, ZINT_FULL_MULTIBYTE, "123456789012345678901234567890123456789012345678901234", 0, 7, 139, 1, "R7xauto-H max numeric 54 digits", | |
| 8398 "1111111010101010101010101011101010101010101010101010101110101010101010101010101010111010101010101010101010101011101010101010101010101010111" | |
| 8399 "1000001011010011001111100110101000111000110001101010101011100001010000000000011001101000110010111100010100100110101000010111100011001000001" | |
| 8400 "1011101000011001010110011111111001010000100001011100101110111001110001011101010011111000110100100000100100111011100000000010010010101011111" | |
| 8401 "1011101001110011010110011110000111010000111100110001101000100000110000000101101100000011000100100101101000000010100100101000110010000010001" | |
| 8402 "1011101011101101111101010011101111111011101110010111101110110111111000111001010000111011011001100000111000001111111111101001100011001010101" | |
| 8403 "1000001010001100101101000010110110010110000111100001011011001001011001111000100111101011001110101000010111101110101110000101110011110110001" | |
| 8404 "1111111010101010101010101011101010101010101010101010101110101010101010101010101010111010101010101010101010101011101010101010101010101011111" | |
| 8405 }, | |
| 8406 /* 8*/ { UNICODE_MODE, -1, 4, 35, ZINT_FULL_MULTIBYTE, "123456789012345678901234567890123", 0, 11, 59, 1, "R11xauto-H with max numeric 33 digits for width 59", | |
| 8407 "11111110101010101011101010101010101010111010101010101010111" | |
| 8408 "10000010101001100110111000100110101100101100010101111110101" | |
| 8409 "10111010000110100111101001001111110010111101000100110110011" | |
| 8410 "10111010101110011100110101010011111101101001110010001101110" | |
| 8411 "10111010001000101111000010010101001010011011101010011010001" | |
| 8412 "10000010000110110010111111111010010110001110100010000110000" | |
| 8413 "11111110011110011111011101001001101111010001001100001011111" | |
| 8414 "00000000001111111110100100110100101111101111111000111010001" | |
| 8415 "11011000100010010111110110111001011100111000100100010010101" | |
| 8416 "10011101110110100010100011000110110010101001001100100110001" | |
| 8417 "11101010101010101011101010101010101010111010101010101011111" | |
| 8418 }, | |
| 8419 /* 9*/ { UNICODE_MODE, -1, -1, 38, ZINT_FULL_MULTIBYTE, "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", 0, 17, 139, 1, "R17xauto-M max numeric 361 digits", | |
| 8420 "1111111010101010101010101011101010101010101010101010101110101010101010101010101010111010101010101010101010101011101010101010101010101010111" | |
| 8421 "1000001001000101011111010110101000111111101000111100111011110101001110010101100011101100101011101111100000110010101010100000011111110110001" | |
| 8422 "1011101011100111011000001111111010110000100000100110001111110101001001010011000110111101110100011101010101001111100001010000010111111111011" | |
| 8423 "1011101001001100001001111100010100100011000110010110010001110110110101101000001110000111011000110010111111011010010110011101110100001001010" | |
| 8424 "1011101000010101010111011001110010111100100101101001111100011100100111001101000001011010001000000010111001110001001000101111001000010000101" | |
| 8425 "1000001000010001001011010010000000011001010001001001111000001000101010010111010101001001010111111101000011100010101111000011001010111001110" | |
| 8426 "1111111001101010000100101101010011000001101011110111001111100011000000100110111000110100000111110001001010001011110100000000110111011100001" | |
| 8427 "0000000010110010001111111010101001000000110001110110001011100011110111101000111110001101100100000011111100101100011001111000101001000100110" | |
| 8428 "1110101100000110000111010011111100101011100100000000101100000010111010011000101011011100111000001100010101010001100011110101001000100000111" | |
| 8429 "0111101111100011010010111110111010100101011100100101110001010101001010010101100000001000011011101100000000010010100110100000011111110110010" | |
| 8430 "1000000010110100110011010001111100011111010101100000011111011101000101010011000101110101010111011011100001101101011101000000010111110011011" | |
| 8431 "0001011000101100111101110000000000001111001110001000000010001010111101101000001110000111011011010011111111111000011010011101110100011011110" | |
| 8432 "1110010100011011010101000111110001000000010100011111000100100000110111001101000001111010001000100110111110100001110100101111001000110111111" | |
| 8433 "0111111000011110110011110000010100000010011111010011011011111101011010010111010101001001010111100100001011100110101101000011001010000110001" | |
| 8434 "1010111000111001011010111011111111010100010000000001111111011111100000100110111000111000000111101001000000001111100111000000110111110110101" | |
| 8435 "1010100110101011001011101010100000110111001110010011101011010011100100101000111010101110101100010001011100100010101010111100100001000110001" | |
| 8436 "1110101010101010101010101011101010101010101010101010101110101010101010101010101010111010101010101010101010101011101010101010101010101011111" | |
| 8437 }, | |
| 8438 /* 10*/ { UNICODE_MODE, -1, 2, 1, ZINT_FULL_MULTIBYTE, "\001\002\003\004\005", 0, 7, 43, 1, "R7x43-M with max 5 binary", | |
| 8439 "1111111010101010101011101010101010101010111" | |
| 8440 "1000001001010001101010101011001111011000101" | |
| 8441 "1011101010111101100111100101110001011111111" | |
| 8442 "1011101001101111011110011001101001000010001" | |
| 8443 "1011101000100000100111110110101110110010101" | |
| 8444 "1000001011110000000010101011001111011010001" | |
| 8445 "1111111010101010101011101010101010101011111" | |
| 8446 }, | |
| 8447 /* 11*/ { UNICODE_MODE, -1, 4, 1, ZINT_FULL_MULTIBYTE, "\001\002", 0, 7, 43, 1, "R7x43-H with max 2 binary", | |
| 8448 "1111111010101010101011101010101010101010111" | |
| 8449 "1000001011010010110010111001001111001000001" | |
| 8450 "1011101011010011101011110001000001010011111" | |
| 8451 "1011101010111101110110001010001001011010001" | |
| 8452 "1011101001111011011011111111001110011010101" | |
| 8453 "1000001001111110100010111110110110101010001" | |
| 8454 "1111111010101010101011101010101010101011111" | |
| 8455 }, | |
| 8456 /* 12*/ { UNICODE_MODE, -1, 2, 1, ZINT_FULL_MULTIBYTE, "ABCDEFG", 0, 7, 43, 1, "R7x43-M with max 7 alphanumerics", | |
| 8457 "1111111010101010101011101010101010101010111" | |
| 8458 "1000001001011100111110111000000101011000101" | |
| 8459 "1011101010111010101011110111101001011111111" | |
| 8460 "1011101001100001111100011111100010100010001" | |
| 8461 "1011101000110011100011111110010100110010101" | |
| 8462 "1000001011111011101110111110000111111010001" | |
| 8463 "1111111010101010101011101010101010101011111" | |
| 8464 }, | |
| 8465 /* 13*/ { UNICODE_MODE, -1, 2, 1, ZINT_FULL_MULTIBYTE, "点茗点", ZINT_WARN_NONCOMPLIANT, 7, 43, 1, "R7x43-M with max 3 Kanji", | |
| 8466 "1111111010101010101011101010101010101010111" | |
| 8467 "1000001001011000100010101001010001111000101" | |
| 8468 "1011101010110101110111111001011101111111111" | |
| 8469 "1011101001100001101010100110100110100010001" | |
| 8470 "1011101000100010000011101101011011110010101" | |
| 8471 "1000001011111100010110101111011000111010001" | |
| 8472 "1111111010101010101011101010101010101011111" | |
| 8473 }, | |
| 8474 /* 14*/ { UNICODE_MODE, -1, 2, 4, ZINT_FULL_MULTIBYTE, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM", 0, 7, 99, 1, "R7x99-M with max 39 alphanumerics", | |
| 8475 "111111101010101010101011101010101010101010101010111010101010101010101010101110101010101010101010111" | |
| 8476 "100000100111110010010010101010100110101001000011101100101101000010101110001011100000010001111100101" | |
| 8477 "101110100101000000101011100100010000001000001111111111011111000000110101111111101111100000100011111" | |
| 8478 "101110100100011111000100010111001001100101111011100001000001001111101010111010110110100011000110001" | |
| 8479 "101110101000101011110111101110010000110011110101111110100111100010101000101111101101101111000110101" | |
| 8480 "100000101010111010111010111110101001111001101011101010101010001100101101111011100101101010110010001" | |
| 8481 "111111101010101010101011101010101010101010101010111010101010101010101010101110101010101010101011111" | |
| 8482 }, | |
| 8483 /* 15*/ { UNICODE_MODE, -1, 4, 5, ZINT_FULL_MULTIBYTE, "\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026", 0, 7, 139, 1, "R7x139-H with max 22 binary", | |
| 8484 "1111111010101010101010101011101010101010101010101010101110101010101010101010101010111010101010101010101010101011101010101010101010101010111" | |
| 8485 "1000001011010100100110110110100110111000001010100110101010111101000011111010001000101100000100001011011110111110100110011110001101001000001" | |
| 8486 "1011101000010011101011000111111011101001111011110101011110111001000010011111001110111001100001010101110110100011110011110001010001001011111" | |
| 8487 "1011101001111010000010110010111010001000101110001010101000101110001111011000010111001101000001010101101001110100110011110010000001000010001" | |
| 8488 "1011101011110101001101101111100101000110001011010111101111110111111011101010001110111100001101011100001010011111111110111010001101001010101" | |
| 8489 "1000001010000100011110111110111000111001100010111001111011001011011111000110010101101111111111001110101110101010101110110010001100110110001" | |
| 8490 "1111111010101010101010101011101010101010101010101010101110101010101010101010101010111010101010101010101010101011101010101010101010101011111" | |
| 8491 }, | |
| 8492 /* 16*/ { UNICODE_MODE, -1, 2, 7, ZINT_FULL_MULTIBYTE, "\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024", 0, 9, 59, 1, "R9x59-M with max 20 binary", | |
| 8493 "11111110101010101011101010101010101010111010101010101010111" | |
| 8494 "10000010100110111010110111101111000011101110010011100001001" | |
| 8495 "10111010101100001011111100111100011111111100011001111100101" | |
| 8496 "10111010001011110100100111110100100000000110011110000000110" | |
| 8497 "10111010010001101101111101100001011011110011100011111111111" | |
| 8498 "10000010000100101110010110010111100000100111010011101010001" | |
| 8499 "11111110010100010111110011111110011101111100011000011110101" | |
| 8500 "00000000000011111010111011010100000000101110011010000110001" | |
| 8501 "11101010101010101011101010101010101010111010101010101011111" | |
| 8502 }, | |
| 8503 /* 17*/ { UNICODE_MODE, -1, 2, 9, ZINT_FULL_MULTIBYTE, "12345678901234567890123456789012345678901234567", 0, 9, 99, 1, "R9x99-M with max 47 numerics", | |
| 8504 "111111101010101010101011101010101010101010101010111010101010101010101010101110101010101010101010111" | |
| 8505 "100000100010000101001110111001101000101110111000101110001100111010100000001011110010011100011001101" | |
| 8506 "101110101011011101000011110000001000010010010000111011001001111111000001001110101111110010111000101" | |
| 8507 "101110101010111000000000001110110110111110001100000001001111011011101101011011011100000001110110100" | |
| 8508 "101110101111101010100111111010001100011000000110010100011010001111100010110100000110001000111111111" | |
| 8509 "100000100110100000000110100110010010111001000101101000110011010101110000001010000011101010011010001" | |
| 8510 "111111100100110111110011110010000010111111100111111100100110000100000111101110010011011110101010101" | |
| 8511 "000000000111000111011010100110011010111011010011101110110100100111001011111010110011000000001010001" | |
| 8512 "111010101010101010101011101010101010101010101010111010101010101010101010101110101010101010101011111" | |
| 8513 }, | |
| 8514 /* 18*/ { UNICODE_MODE, -1, 2, 11, ZINT_FULL_MULTIBYTE, "\001\002\003\004\005\006", 0, 11, 27, 1, "R11x27-M with max 6 binary", | |
| 8515 "111111101010101010101010111" | |
| 8516 "100000101110010000111000101" | |
| 8517 "101110100111010000000011001" | |
| 8518 "101110100010000111110101110" | |
| 8519 "101110100001011100111000001" | |
| 8520 "100000100110111001101110110" | |
| 8521 "111111100100001110000111111" | |
| 8522 "000000000101011011001010001" | |
| 8523 "111100001110011000010110101" | |
| 8524 "101001111010101000101010001" | |
| 8525 "111010101010101010101011111" | |
| 8526 }, | |
| 8527 /* 19*/ { UNICODE_MODE, -1, 4, 11, ZINT_FULL_MULTIBYTE, "\001\002\003\004", 0, 11, 27, 1, "R11x27-H with max 4 binary", | |
| 8528 "111111101010101010101010111" | |
| 8529 "100000100110100100111000101" | |
| 8530 "101110100001011000000011001" | |
| 8531 "101110101111011111110101010" | |
| 8532 "101110100100000010111000001" | |
| 8533 "100000101110011001111110010" | |
| 8534 "111111101101110100001011111" | |
| 8535 "000000001011111100010010001" | |
| 8536 "111011000110110000011110101" | |
| 8537 "101000000010100100111010001" | |
| 8538 "111010101010101010101011111" | |
| 8539 }, | |
| 8540 /* 20*/ { UNICODE_MODE, -1, 2, 13, ZINT_FULL_MULTIBYTE, "12345678901234567890123456789012345678901234567890123456789012345678901", 0, 11, 59, 1, "R11x59-M with max 71 numerics", | |
| 8541 "11111110101010101011101010101010101010111010101010101010111" | |
| 8542 "10000010001010111110110110010100101111101111001110101100001" | |
| 8543 "10111010011100010011110111110001111100111010111101000100011" | |
| 8544 "10111010011001001000001110100101110100101001110000010010000" | |
| 8545 "10111010011011101111111010100010101001111000011010010100001" | |
| 8546 "10000010100111001000111011110110111001101100001001110110100" | |
| 8547 "11111110010111010111001000011000101010110001001100000111111" | |
| 8548 "00000000011100100100100000100011000100001111000000000010001" | |
| 8549 "11111100110000101111110101101001000100111000101010011010101" | |
| 8550 "10011100001011001110100101001100110111101001101110110110001" | |
| 8551 "11101010101010101011101010101010101010111010101010101011111" | |
| 8552 }, | |
| 8553 /* 21*/ { UNICODE_MODE, -1, 2, 18, ZINT_FULL_MULTIBYTE, "1234567890123456789012345678901234567890123456789012345678901", 0, 13, 43, 1, "R13x43-M with max 61 numerics", | |
| 8554 "1111111010101010101011101010101010101010111" | |
| 8555 "1000001011111001100110111000110110011001001" | |
| 8556 "1011101011100001110011110110101000100010111" | |
| 8557 "1011101011000100101010011001000010110111010" | |
| 8558 "1011101010100100111011011011100011000111111" | |
| 8559 "1000001001101001000000110110001000101101110" | |
| 8560 "1111111010011101101101101010100100101000011" | |
| 8561 "0000000011110010100110111001100100101101110" | |
| 8562 "1111100101001011000001101100111011010111111" | |
| 8563 "0011110001100101000000100000101100110110001" | |
| 8564 "1011101111000010101011110011001100100010101" | |
| 8565 "1000110000010111110010110001001011001010001" | |
| 8566 "1110101010101010101011101010101010101011111" | |
| 8567 }, | |
| 8568 /* 22*/ { UNICODE_MODE, -1, 4, 20, ZINT_FULL_MULTIBYTE, "\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033", 0, 13, 77, 1, "R13x77-H with max 27 binary", | |
| 8569 "11111110101010101010101011101010101010101010101010111010101010101010101010111" | |
| 8570 "10000010101100000001000010111011001111101101111101101110100010001011100001101" | |
| 8571 "10111010010010101011110111100110000111101101101101111110000000011110111011011" | |
| 8572 "10111010100101111101110100000000010011011010000000001100100110011010000001100" | |
| 8573 "10111010000111001111011101001110010010110101111000110001101001100011101011111" | |
| 8574 "10000010111010000011101000001111101111001010101001101100000001000011110011000" | |
| 8575 "11111110110111111101110011101010100110011011111111011100001100110110011100101" | |
| 8576 "00000000110110101010001000000000010111001011110110001100011000011100000101010" | |
| 8577 "11111101010111111111100011100111100011111001111110111001100010010001100011111" | |
| 8578 "01000111110100101000101100110111101100000100100001100110100001001011111110001" | |
| 8579 "10001110011100111011101011110000110011101000011011111010001000011101010110101" | |
| 8580 "10001001000010011011101110100010010001101111111101101000000110010000011010001" | |
| 8581 "11101010101010101010101011101010101010101010101010111010101010101010101011111" | |
| 8582 }, | |
| 8583 /* 23*/ { UNICODE_MODE, -1, 2, 20, ZINT_FULL_MULTIBYTE, "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123", 0, 13, 77, 1, "R13x77-M with max 123 numerics (note was 8 bit cci in draft 2019-6-24 when 7 suffices - corrected in ISO/IEC 23941:2022)", | |
| 8584 "11111110101010101010101011101010101010101010101010111010101010101010101010111" | |
| 8585 "10000010001100001001010010111101110110110101101001101011011001000011001101101" | |
| 8586 "10111010001011111111101011111110010001001001010111111010111100100101101011011" | |
| 8587 "10111010010011001001111000101011110101101001011100100011110111011001010011110" | |
| 8588 "10111010010010000101101011100011011110101010010010011000001101000010111011011" | |
| 8589 "10000010011110010100000110001011110110000101101001100010101000000011101101010" | |
| 8590 "11111110011111101010010101000001100001110001110111111111111000100101101011111" | |
| 8591 "00000000010000010110000110000010010100101010010100100011101011011001010101110" | |
| 8592 "11100011101100001111000101000000101100100001010010011110000001010010101111111" | |
| 8593 "01010100110000011101011010011100101101000101101111001010100000110111000110001" | |
| 8594 "10111001001100001100110011110011010111110001111111111011110000001001011110101" | |
| 8595 "10100110000111111100100010100011100000011010110100101111001000011010001010001" | |
| 8596 "11101010101010101010101011101010101010101010101010111010101010101010101011111" | |
| 8597 }, | |
| 8598 /* 24*/ { UNICODE_MODE, -1, 2, 23, ZINT_FULL_MULTIBYTE, "\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037", 0, 15, 43, 1, "R15x43-M with max 31 binary", | |
| 8599 "1111111010101010101011101010101010101010111" | |
| 8600 "1000001011010010111010101000000011011011001" | |
| 8601 "1011101011000000000011111001010001110001111" | |
| 8602 "1011101000101100100010110000110001110001110" | |
| 8603 "1011101010001110100001100010100011111100001" | |
| 8604 "1000001011000001101010010100001111001010110" | |
| 8605 "1111111011100000010101011001110001110001001" | |
| 8606 "0000000010010111110000110010110001110001010" | |
| 8607 "1100111001111100110001101010100000111000111" | |
| 8608 "0100100011111110010000010100000111101001100" | |
| 8609 "1010101010110000110001101011000001110011111" | |
| 8610 "0110000110000110110010110001000001101010001" | |
| 8611 "1100010010011100000011100110000010000110101" | |
| 8612 "1001011111001000010010110100001011011110001" | |
| 8613 "1110101010101010101011101010101010101011111" | |
| 8614 }, | |
| 8615 /* 25*/ { UNICODE_MODE, -1, 4, 27, ZINT_FULL_MULTIBYTE, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRST", 0, 15, 139, 1, "R15x139-H with max 98 alphanumerics", | |
| 8616 "1111111010101010101010101011101010101010101010101010101110101010101010101010101010111010101010101010101010101011101010101010101010101010111" | |
| 8617 "1000001000101010110111000110101110111011110000110111111011010110110101010100010000101101000101101000000110101010110111000011111101010011001" | |
| 8618 "1011101001100101001100010011101100000011101101100110011111100111110110101101110101111001000011000100010000110111111101101011100000111011001" | |
| 8619 "1011101011111100000110000100011011111010011111100001000000110111001010010001011010000100100101100001011110110010011011101000100100010011100" | |
| 8620 "1011101010000010010111110001010010000101111011010110100110011101001100001111010101110001110100100011101010101111100110010011001001000101101" | |
| 8621 "1000001000100000010010001000110011100110010001011011101011111000000010111001010010101101011110101111011010110000100111110010111111110100100" | |
| 8622 "1111111010100000110011001001111101001101011011110010001100000100000101011011001110110110000000111000011101001011000111111011101000100111101" | |
| 8623 "0000000011000010100010110000111000010011101010111100100010001001010011000110010101000000001100101001010001011010100010111011011111101111010" | |
| 8624 "1100110111000001101100101011110001111111000010100000110110101001010011100001110100111010001100000100000000011001110111111000111010111101011" | |
| 8625 "0100110000100000100100010000001011001010001000111001000001101101100100100011011110100111001111001000110000010100100110011000010010010111000" | |
| 8626 "1100011110010111111010011001011101100001001001001111100101111011111011111110011000110100101110000110011010010101100001111001111011100111111" | |
| 8627 "0001111000000010100011001000110111101111101111101010001010001000101100101101000001000010100000101111101000011100010010011111100011110010001" | |
| 8628 "1100111110100000010000111011110010011100101001110010101110011110110110001100001101111001001110011000111010111011110011001010011001000110101" | |
| 8629 "1011010110101111010001000110110100010001001001100010101011001000110010111101000000101111001000110110011001111010100011110110001000100010001" | |
| 8630 "1110101010101010101010101011101010101010101010101010101110101010101010101010101010111010101010101010101010101011101010101010101010101011111" | |
| 8631 }, | |
| 8632 /* 26*/ { UNICODE_MODE, -1, 2, 28, ZINT_FULL_MULTIBYTE, "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, 17, 43, 1, "R17x43-M with max 90 numerics", | |
| 8633 "1111111010101010101011101010101010101010111" | |
| 8634 "1000001001000101001010111110000001010100101" | |
| 8635 "1011101000101110110011110100001001100110011" | |
| 8636 "1011101010001111111010101000010101101001000" | |
| 8637 "1011101010001001010101011100110000100111111" | |
| 8638 "1000001011111110111110000101001001010110000" | |
| 8639 "1111111001111100101111110111011010000010111" | |
| 8640 "0000000010011101100110011111010000101101010" | |
| 8641 "1100111101010110111011011000110101001100111" | |
| 8642 "0111000100100100011010000110001001101100010" | |
| 8643 "1110110010011101000111101111000000010011011" | |
| 8644 "0011001001011100110000101100100111111011110" | |
| 8645 "1110111010101010010001111101011010001111111" | |
| 8646 "0011110000011011010110001101001000111110001" | |
| 8647 "1010000001001101001111101000100011000110101" | |
| 8648 "1010110110101010011110101110010011011010001" | |
| 8649 "1110101010101010101011101010101010101011111" | |
| 8650 }, | |
| 8651 /* 27*/ { UNICODE_MODE, -1, 4, 29, ZINT_FULL_MULTIBYTE, "\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032", 0, 17, 59, 1, "R17x59-H with max 26 binary", | |
| 8652 "11111110101010101011101010101010101010111010101010101010111" | |
| 8653 "10000010111010100010101100011001100000101011110011110011101" | |
| 8654 "10111010011000111011101011101011010010111000110100011100011" | |
| 8655 "10111010101100010010101010011000101000000100011010000100000" | |
| 8656 "10111010111100100101101000101000101000110110010001100011011" | |
| 8657 "10000010110011101100010010111000101111100010111011100001100" | |
| 8658 "11111110111111001101001001000101011110111100010111001111011" | |
| 8659 "00000000100101101110101100000000101101101110010110001101100" | |
| 8660 "11111011001011101111100001011101011101110010010011100111111" | |
| 8661 "01111100111111000000111000001001010100000001000011110011000" | |
| 8662 "11000001111111001011000010001010001011010000111011111010101" | |
| 8663 "01100000111110100010100111100111001101101100010100001111010" | |
| 8664 "11100011100001100111001001110100011101110000100001100111111" | |
| 8665 "00111000001010001100000100010100100101100101111011111010001" | |
| 8666 "11001011110100101111111000101000111011111100010100001010101" | |
| 8667 "10001000111011111010100011010111101101101010011010011110001" | |
| 8668 "11101010101010101011101010101010101010111010101010101011111" | |
| 8669 }, | |
| 8670 /* 28*/ { UNICODE_MODE, -1, 2, 32, ZINT_FULL_MULTIBYTE, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCD", 0, 17, 139, 1, "R17x139-M with max 108 alphanumerics", | |
| 8671 "1111111010101010101010101011101010101010101010101010101110101010101010101010101010111010101010101010101010101011101010101010101010101010111" | |
| 8672 "1000001001001010010000011110111001001010110101010100011010100010100111011001101000101010101100000100100110001010101000100111011010000101001" | |
| 8673 "1011101011101001000100010111100111100100100101100010111110100010110000000011101010111111111001010011110000010011101011000101000000010001001" | |
| 8674 "1011101001001010011011111000100110001100100000001101000001000100101101001100011111001001100011101000011011111100011000101100010110111010010" | |
| 8675 "1011101000010011111100010001011011011101010000111000011111011101000101100100100101010000110110001101001010111101111100000110011111111111011" | |
| 8676 "1000001000010100010000011000101101000110011001100110110010101011010011010101111010101010010100100110100000110110101111011011011011100101010" | |
| 8677 "1111111010110001111001010111010110101110100000000000110100000011111001011111111010110111100111000011110101100001100011111001100001010001101" | |
| 8678 "0000000011111011001111110010100100001100101010101101000011010110100100001100000010100111010100101010011111001000010110100100101100100100000" | |
| 8679 "1100110101110001011110010111111000100011110010001010011111101100000110101100100011011100011011011000001010001101111100000110000111011110011" | |
| 8680 "0101010100000101010000011010101100001001010100000000110001111111010011011010110010000010010111010001010000110110101011010001010110000100100" | |
| 8681 "1001011101000001111001110101010101001100110111010001010100010111111001110000110001010101110010110000000001100011010011111000010001011010101" | |
| 8682 "0011011000000111000111000100101000100110010001010111110010101110110100110110100110101101110001001110111111001000010110100101000000011011110" | |
| 8683 "1110111001100101010110010111110100010000101110101010101110101100101110011111000010011100111000011110001011001101011100010100101100110111111" | |
| 8684 "0100010111111011011100011000111100111111001001111000101010111111010010011011010011000000010010111101010000011000110001110010010101100110001" | |
| 8685 "1001111110101110110000100111110101011101100010011001101111010111011000010000110101111000000110110100010011000111111100101110011011110110101" | |
| 8686 "1011101011001101111111100110101100110110111011010111001011101011000100010101100000101110111100000010011100011010100100011000001100000110001" | |
| 8687 "1110101010101010101010101011101010101010101010101010101110101010101010101010101010111010101010101010101010101011101010101010101010101011111" | |
| 8688 }, | |
| 8689 }; | |
| 8690 const int data_size = ARRAY_SIZE(data); | |
| 8691 int i, length, ret; | |
| 8692 struct zint_symbol *symbol = NULL; | |
| 8693 | |
| 8694 char escaped[4096]; | |
| 8695 char cmp_buf[32768]; | |
| 8696 char cmp_msg[1024]; | |
| 8697 | |
| 8698 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 8699 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 8700 | |
| 8701 testStartSymbol("test_rmqr_encode", &symbol); | |
| 8702 | |
| 8703 for (i = 0; i < data_size; i++) { | |
| 8704 | |
| 8705 if (testContinue(p_ctx, i)) continue; | |
| 8706 | |
| 8707 symbol = ZBarcode_Create(); | |
| 8708 assert_nonnull(symbol, "Symbol not created\n"); | |
| 8709 | |
| 8710 length = testUtilSetSymbol(symbol, BARCODE_RMQR, data[i].input_mode, data[i].eci, data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/, data[i].data, -1, debug); | |
| 8711 | |
| 8712 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 8713 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 8714 | |
| 8715 if (p_ctx->generate) { | |
| 8716 printf(" /*%3d*/ { %s, %d, %d, %d, %s, \"%s\", %s, %d, %d, %d, \"%s\",\n", | |
| 8717 i, testUtilInputModeName(data[i].input_mode), data[i].eci, data[i].option_1, data[i].option_2, | |
| 8718 testUtilOption3Name(BARCODE_RMQR, data[i].option_3), | |
| 8719 testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), testUtilErrorName(data[i].ret), | |
| 8720 symbol->rows, symbol->width, data[i].bwipp_cmp, data[i].comment); | |
| 8721 testUtilModulesPrint(symbol, " ", "\n"); | |
| 8722 printf(" },\n"); | |
| 8723 } else { | |
| 8724 if (ret < ZINT_ERROR) { | |
| 8725 int width, row; | |
| 8726 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d (%s)\n", i, symbol->rows, data[i].expected_rows, data[i].data); | |
| 8727 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data); | |
| 8728 | |
| 8729 ret = testUtilModulesCmp(symbol, data[i].expected, &width, &row); | |
| 8730 assert_zero(ret, "i:%d testUtilModulesCmp ret %d != 0 width %d row %d (%s)\n", i, ret, width, row, data[i].data); | |
| 8731 | |
| 8732 if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, -1, debug)) { | |
| 8733 if (!data[i].bwipp_cmp) { | |
| 8734 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 8735 } else { | |
| 8736 ret = testUtilBwipp(i, symbol, data[i].option_1, data[i].option_2, -1, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); | |
| 8737 assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 8738 | |
| 8739 ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, data[i].expected); | |
| 8740 assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", | |
| 8741 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, data[i].expected); | |
| 8742 } | |
| 8743 } | |
| 8744 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { | |
| 8745 int cmp_len, ret_len; | |
| 8746 char modules_dump[17 * 139 + 1]; | |
| 8747 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 8748 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 8749 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 8750 | |
| 8751 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); | |
| 8752 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 8753 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 8754 } | |
| 8755 } | |
| 8756 } | |
| 8757 | |
| 8758 ZBarcode_Delete(symbol); | |
| 8759 } | |
| 8760 | |
| 8761 testFinish(); | |
| 8762 } | |
| 8763 | |
| 8764 static void test_rmqr_encode_segs(const testCtx *const p_ctx) { | |
| 8765 int debug = p_ctx->debug; | |
| 8766 | |
| 8767 struct item { | |
| 8768 int input_mode; | |
| 8769 int option_1; | |
| 8770 int option_2; | |
| 8771 int option_3; | |
| 8772 struct zint_seg segs[3]; | |
| 8773 int ret; | |
| 8774 | |
| 8775 int expected_rows; | |
| 8776 int expected_width; | |
| 8777 int bwipp_cmp; | |
| 8778 char *comment; | |
| 8779 char *expected; | |
| 8780 }; | |
| 8781 static const struct item data[] = { | |
| 8782 /* 0*/ { UNICODE_MODE, 2, 11, -1, { { TU("¶"), -1, 0 }, { TU("Ж"), -1, 7 }, { TU(""), 0, 0 } }, 0, 11, 27, 1, "Standard example", | |
| 8783 "111111101010101010101010111" | |
| 8784 "100000101110110001100111101" | |
| 8785 "101110100111000001110101111" | |
| 8786 "101110100010010000000110000" | |
| 8787 "101110100000011010001111001" | |
| 8788 "100000100110100000101110110" | |
| 8789 "111111101001011111100111111" | |
| 8790 "000000001011110111101010001" | |
| 8791 "111010111010001000110110101" | |
| 8792 "101111001111110001001010001" | |
| 8793 "111010101010101010101011111" | |
| 8794 }, | |
| 8795 /* 1*/ { UNICODE_MODE, 2, 11, -1, { { TU("¶"), -1, 0 }, { TU("Ж"), -1, 0 }, { TU(""), 0, 0 } }, ZINT_WARN_USES_ECI, 11, 27, 1, "Standard example auto-ECI", | |
| 8796 "111111101010101010101010111" | |
| 8797 "100000101110110001100111101" | |
| 8798 "101110100111000001110101111" | |
| 8799 "101110100010010000000110000" | |
| 8800 "101110100000011010001111001" | |
| 8801 "100000100110100000101110110" | |
| 8802 "111111101001011111100111111" | |
| 8803 "000000001011110111101010001" | |
| 8804 "111010111010001000110110101" | |
| 8805 "101111001111110001001010001" | |
| 8806 "111010101010101010101011111" | |
| 8807 }, | |
| 8808 /* 2*/ { UNICODE_MODE, 2, 11, -1, { { TU("Ж"), -1, 7 }, { TU("¶"), -1, 0 }, { TU(""), 0, 0 } }, 0, 11, 27, 1, "Standard example inverted", | |
| 8809 "111111101010101010101010111" | |
| 8810 "100000101110111000010111101" | |
| 8811 "101110100111011111110010001" | |
| 8812 "101110100010111111001100000" | |
| 8813 "101110100001001011110100001" | |
| 8814 "100000100111111101101110100" | |
| 8815 "111111100001000001000111111" | |
| 8816 "000000001111000000101010001" | |
| 8817 "111001110101001100010110101" | |
| 8818 "101010011111101111101010001" | |
| 8819 "111010101010101010101011111" | |
| 8820 }, | |
| 8821 /* 3*/ { UNICODE_MODE, 2, 11, -1, { { TU("Ж"), -1, 0 }, { TU("¶"), -1, 0 }, { TU(""), 0, 0 } }, ZINT_WARN_USES_ECI, 11, 27, 1, "Standard example inverted auto-ECI", | |
| 8822 "111111101010101010101010111" | |
| 8823 "100000101110111000010111101" | |
| 8824 "101110100111011111110010001" | |
| 8825 "101110100010111111001100000" | |
| 8826 "101110100001001011110100001" | |
| 8827 "100000100111111101101110100" | |
| 8828 "111111100001000001000111111" | |
| 8829 "000000001111000000101010001" | |
| 8830 "111001110101001100010110101" | |
| 8831 "101010011111101111101010001" | |
| 8832 "111010101010101010101011111" | |
| 8833 }, | |
| 8834 /* 4*/ { UNICODE_MODE, 2, 32, -1, { { TU("Google Pixel 4a 128 GB Black;price:$439.97"), -1, 3 }, { TU("Google 谷歌 Pixel 4a 128 GB黑色;零售价:¥3149.79"), -1, 29 }, { TU("Google Pixel 4a 128 GB Schwarz;Preis:444,90 €"), -1, 17 } }, 0, 17, 139, 0, "AIM ITS/04-023:2022 Annex A example (shortened); BWIPP different encodation", | |
| 8835 "1111111010101010101010101011101010101010101010101010101110101010101010101010101010111010101010101010101010101011101010101010101010101010111" | |
| 8836 "1000001001000010100111001110100000111100110111111110001010100010000110011100101000101101010100111001001101110110110010000011110000101100101" | |
| 8837 "1011101011101011111110110011100101100111101000001011111111110000100000111001000110111011000011100011000000100011101101100100110100110011011" | |
| 8838 "1011101001001110000110100100001111011110111110111101000000100101001111110100111010000000011000101101110100000100011001000010001010101111110" | |
| 8839 "1011101000010000111010100101101000100010100100110100011110111110001100101010001111110110111000000000101011100001101000001000110000000110111" | |
| 8840 "1000001000001001100011001110100010110001011011011100110000111111011101011110010000000000000010001110010111000010001001110111010101011000110" | |
| 8841 "1111111010100010010100110101101010100010001110001000100100011111111001000000111011111000110011111010000011011111100111011001000000011010001" | |
| 8842 "0000000010010110010000100000000010101010110111110011010010110001100100001000010011000000110101111100010001000000100101100111011000011011110" | |
| 8843 "1101110011111001110010000111111111101100100101001110001111101110010110101100001110110110001110100100111100000111111011110100100101011111001" | |
| 8844 "0111111100100011001110011010010100110111101101010111000011001111100011011100001100100110011110110101111010101100010101100000010010110101000" | |
| 8845 "1011000010101000110000001001010011101001100001111011001100010011011010010000101101110011000011010011011111110101101101100101110101100001001" | |
| 8846 "0001110000010011000000110000010111111010010001010100100000101010000111111001110000000101100101110001010001010010011010001110101101111011100" | |
| 8847 "1000101101011001001010000001111011100111100000100110101100101100110100100101001101110111101001100111001101111001111010001011011000110111111" | |
| 8848 "0110100001110101010110010010100000111110011101011100100010111011000010010110001010000001001001001111000010011100111110010011000110100110001" | |
| 8849 "1001000001100110110011100011111101010111100110100101011110010011101010100011101001111010100111010100110100011111110111100101000101010110101" | |
| 8850 "1010011110111011011111000010111011001001010001011111011011101000100101110000010011101110110100011010110111010110110011110110000001000110001" | |
| 8851 "1110101010101010101010101011101010101010101010101010101110101010101010101010101010111010101010101010101010101011101010101010101010101011111" | |
| 8852 }, | |
| 8853 /* 5*/ { DATA_MODE, 4, 3, -1, { { TU("\266"), 1, 0 }, { TU("\266"), 1, 7 }, { TU("\266"), 1, 0 } }, 0, 7, 77, 1, "Standard example + extra seg, data mode", | |
| 8854 "11111110101010101010101011101010101010101010101010111010101010101010101010111" | |
| 8855 "10000010000101011111110110101011011101110110100011101011010110001000110000001" | |
| 8856 "10111010000101001001111111110011100001100010110011111100010111010001101011111" | |
| 8857 "10111010001111110101010000111011110111000111100010101100011110001110101010001" | |
| 8858 "10111010100010101100010111101010000111111001010110111000010010000000100110101" | |
| 8859 "10000010011011101100010110100010100010101101100001101010000100011011101010001" | |
| 8860 "11111110101010101010101011101010101010101010101010111010101010101010101011111" | |
| 8861 }, | |
| 8862 /* 6*/ { UNICODE_MODE, 2, 4, -1, { { TU("¿é"), -1, 0 }, { TU("กขฯ"), -1, 0 }, { TU("φχψω"), -1, 0 } }, ZINT_WARN_USES_ECI, 7, 99, 1, "Auto-ECI", | |
| 8863 "111111101010101010101011101010101010101010101010111010101010101010101010101110101010101010101010111" | |
| 8864 "100000100111110000101010111000010110100100000100101011100110111000000110101010111110010111111100101" | |
| 8865 "101110100101001001110111111010010100110101100100111110111100100111111111101110010010111000100011111" | |
| 8866 "101110100100110100000110011111110011101110010000000100000110000101011000100000111111001101100110001" | |
| 8867 "101110101000100010000111100101110011010000111010111010110011110101110111101111111011111010100110101" | |
| 8868 "100000101010100100010010111001101101000001111001101100011000001111001110111011001101000110110010001" | |
| 8869 "111111101010101010101011101010101010101010101010111010101010101010101010101110101010101010101011111" | |
| 8870 }, | |
| 8871 }; | |
| 8872 const int data_size = ARRAY_SIZE(data); | |
| 8873 int i, j, seg_count, ret; | |
| 8874 struct zint_symbol *symbol = NULL; | |
| 8875 | |
| 8876 char escaped[4096]; | |
| 8877 char cmp_buf[32768]; | |
| 8878 char cmp_msg[1024]; | |
| 8879 | |
| 8880 int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ | |
| 8881 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ | |
| 8882 | |
| 8883 testStartSymbol("test_rmqr_encode_segs", &symbol); | |
| 8884 | |
| 8885 for (i = 0; i < data_size; i++) { | |
| 8886 | |
| 8887 if (testContinue(p_ctx, i)) continue; | |
| 8888 | |
| 8889 symbol = ZBarcode_Create(); | |
| 8890 assert_nonnull(symbol, "Symbol not created\n"); | |
| 8891 | |
| 8892 testUtilSetSymbol(symbol, BARCODE_RMQR, data[i].input_mode, -1 /*eci*/, | |
| 8893 data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/, | |
| 8894 NULL, 0, debug); | |
| 8895 for (j = 0, seg_count = 0; j < 3 && data[i].segs[j].length; j++, seg_count++); | |
| 8896 | |
| 8897 ret = ZBarcode_Encode_Segs(symbol, data[i].segs, seg_count); | |
| 8898 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode_Segs ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 8899 | |
| 8900 if (p_ctx->generate) { | |
| 8901 char escaped1[4096]; | |
| 8902 char escaped2[4096]; | |
| 8903 int length = data[i].segs[0].length == -1 ? (int) ustrlen(data[i].segs[0].source) : data[i].segs[0].length; | |
| 8904 int length1 = data[i].segs[1].length == -1 ? (int) ustrlen(data[i].segs[1].source) : data[i].segs[1].length; | |
| 8905 int length2 = data[i].segs[2].length == -1 ? (int) ustrlen(data[i].segs[2].source) : data[i].segs[2].length; | |
| 8906 printf(" /*%3d*/ { %s, %d, %d, %d, { { TU(\"%s\"), %d, %d }, { TU(\"%s\"), %d, %d }, { TU(\"%s\"), %d, %d } }, %s, %d, %d, %d, \"%s\",\n", | |
| 8907 i, testUtilInputModeName(data[i].input_mode), | |
| 8908 data[i].option_1, data[i].option_2, data[i].option_3, | |
| 8909 testUtilEscape((const char *) data[i].segs[0].source, length, escaped, sizeof(escaped)), data[i].segs[0].length, data[i].segs[0].eci, | |
| 8910 testUtilEscape((const char *) data[i].segs[1].source, length1, escaped1, sizeof(escaped1)), data[i].segs[1].length, data[i].segs[1].eci, | |
| 8911 testUtilEscape((const char *) data[i].segs[2].source, length2, escaped2, sizeof(escaped2)), data[i].segs[2].length, data[i].segs[2].eci, | |
| 8912 testUtilErrorName(data[i].ret), symbol->rows, symbol->width, data[i].bwipp_cmp, data[i].comment); | |
| 8913 testUtilModulesPrint(symbol, " ", "\n"); | |
| 8914 printf(" },\n"); | |
| 8915 } else { | |
| 8916 if (ret < ZINT_ERROR) { | |
| 8917 int width, row; | |
| 8918 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows); | |
| 8919 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width); | |
| 8920 | |
| 8921 ret = testUtilModulesCmp(symbol, data[i].expected, &width, &row); | |
| 8922 assert_zero(ret, "i:%d testUtilModulesCmp ret %d != 0 width %d row %d\n", i, ret, width, row); | |
| 8923 | |
| 8924 if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, debug)) { | |
| 8925 if (!data[i].bwipp_cmp) { | |
| 8926 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); | |
| 8927 } else { | |
| 8928 ret = testUtilBwippSegs(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, data[i].segs, seg_count, NULL, cmp_buf, sizeof(cmp_buf)); | |
| 8929 assert_zero(ret, "i:%d %s testUtilBwippSegs ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 8930 | |
| 8931 ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, data[i].expected); | |
| 8932 assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", | |
| 8933 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, data[i].expected); | |
| 8934 } | |
| 8935 } | |
| 8936 if (do_zxingcpp) { | |
| 8937 if ((symbol->input_mode & 0x07) == DATA_MODE) { | |
| 8938 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d multiple segments in DATA_MODE not currently supported for ZXing-C++ testing (%s)\n", i, testUtilBarcodeName(symbol->symbology)); | |
| 8939 } else { | |
| 8940 int length = data[i].segs[0].length == -1 ? (int) ustrlen(data[i].segs[0].source) : data[i].segs[0].length; | |
| 8941 if (testUtilCanZXingCPP(i, symbol, (const char *) data[i].segs[0].source, length, debug)) { | |
| 8942 int cmp_len, ret_len; | |
| 8943 char modules_dump[32768]; | |
| 8944 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); | |
| 8945 ret = testUtilZXingCPP(i, symbol, (const char *) data[i].segs[0].source, length, | |
| 8946 modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); | |
| 8947 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); | |
| 8948 | |
| 8949 ret = testUtilZXingCPPCmpSegs(symbol, cmp_msg, cmp_buf, cmp_len, data[i].segs, seg_count, | |
| 8950 NULL /*primary*/, escaped, &ret_len); | |
| 8951 assert_zero(ret, "i:%d %s testUtilZXingCPPCmpSegs %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", | |
| 8952 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); | |
| 8953 } | |
| 8954 } | |
| 8955 } | |
| 8956 } | |
| 8957 } | |
| 8958 | |
| 8959 ZBarcode_Delete(symbol); | |
| 8960 } | |
| 8961 | |
| 8962 testFinish(); | |
| 8963 } | |
| 8964 | |
| 8965 /* #300 Andre Maute */ | |
| 8966 static void test_fuzz(const testCtx *const p_ctx) { | |
| 8967 int debug = p_ctx->debug; | |
| 8968 | |
| 8969 struct item { | |
| 8970 int symbology; | |
| 8971 int input_mode; | |
| 8972 int eci; | |
| 8973 int option_1; | |
| 8974 int option_2; | |
| 8975 int option_3; | |
| 8976 char *data; | |
| 8977 int length; | |
| 8978 int ret; | |
| 8979 int bwipp_cmp; | |
| 8980 char *comment; | |
| 8981 }; | |
| 8982 /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ | |
| 8983 static const struct item data[] = { | |
| 8984 /* 0*/ { BARCODE_QRCODE, GS1_MODE | GS1NOCHECK_MODE, -1, -1, -1, -1, "[]CCCCCLLLLLLLLLLLLLLLLLLLLLCCCCCCCC@CCCCCCCCCCCCCCCCCCCCCCC%%C%C%%%%%%%%%%%%%%LLLCCCCCCCC%%C%C%%%%%%%%%%%%%%LLLLLLLLLLLLLLLLLLL000000032861710*383556LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL155816162LLLLLCC%%C%C%%%%%%%%%%%%%%LLLCCCCCCCC%%C%C%%%%%%%%%%%%%%LLLLLLLLLL)!1661055777[723]T5", -1, 0, 1, "" }, /* #300 (#14), Andre Maute */ | |
| 8985 /* 1*/ { BARCODE_QRCODE, DATA_MODE, -1, -1, -1, ZINT_FULL_MULTIBYTE, "\215\215\350\2156750\215\215\215\215\215\215\000\000\000\025\215\215\215\215\215\232\215\232\232\001\361\215\215\215\215\215\221\215\215\215\215JJJJJJNJJJJJJ\215\215\215\2159999\215\215\215\215\215\215\215\215\215\235\215\215\215\215\215\035\004\000\000@\000\000\000\000\375\000\000\000\000\000\000\000\000\000\000\000\000\000\241\000\000\000\000\000\000\000\241\247^^^\377\377\377\000 \000\000\000\000\000\000\377\377u\000\000\000\000\000\000\000^\377\377^^\000:\000\177\377\377\377?\377\377\377\377\377\377\377\377\377\377\377\377\377\377\241\241\232\232\232\232\232\232\232\232\000\377\377\377\242\003\000\000\377\377/\000AA\000\000\000\000\000\000\000\000\000\000\000\000T\000\000\000\000\000\000\000\000WWW\237\250WWWWWW\377\377R30 \377\377\000\000\000", 231, 0, 1, "" }, /* #300 (#15), Andre Maute */ | |
| 8986 /* 2*/ { BARCODE_QRCODE, DATA_MODE, 35, -1, -1, ZINT_FULL_MULTIBYTE, "\215\215\215\215\215\350\215\215999\215\21500000\215\215\215\215\215\215\377O\000\000\036\000\000\000\000\357\376\026\377\377\377\377\241\241\232\232\232\232\232\232\235\032@\374:JGB \000\000@d\000\000\000\241\241\000\000\027\002\241\241\000\000\014\000\000\000\000\357\327\004\000\000\000\000\000\000\000\375\000\000\000\000\000\000\000\000\000\000\000\000\0000253]9R4R44,44,4404[255\350999\215\21599999\215\215\215\2150000\215\215\215\215\215\215\215\215\215]9444442<4444,4044%44vA\000\000\002\000'\000\000\215\377@\215\215\350\215\215\215\215\215\215\215\307\306\306n\215\215\000\000\001\000\000\203\000\000\000\000\000\000@\215\215\215[\2154315@]R0", 229, 0, 1, "" }, /* #300 (#16), Andre Maute */ | |
| 8987 }; | |
| 8988 const int data_size = ARRAY_SIZE(data); | |
| 8989 int i, length, ret; | |
| 8990 struct zint_symbol *symbol = NULL; | |
| 8991 | |
| 8992 testStartSymbol("test_fuzz", &symbol); | |
| 8993 | |
| 8994 for (i = 0; i < data_size; i++) { | |
| 8995 | |
| 8996 if (testContinue(p_ctx, i)) continue; | |
| 8997 | |
| 8998 symbol = ZBarcode_Create(); | |
| 8999 assert_nonnull(symbol, "Symbol not created\n"); | |
| 9000 | |
| 9001 length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, data[i].eci, data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/, data[i].data, data[i].length, debug); | |
| 9002 | |
| 9003 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); | |
| 9004 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); | |
| 9005 | |
| 9006 ZBarcode_Delete(symbol); | |
| 9007 } | |
| 9008 | |
| 9009 testFinish(); | |
| 9010 } | |
| 9011 | |
| 9012 int main(int argc, char *argv[]) { | |
| 9013 | |
| 9014 testFunction funcs[] = { /* name, func */ | |
| 9015 { "test_qr_large", test_qr_large }, | |
| 9016 { "test_qr_options", test_qr_options }, | |
| 9017 { "test_qr_input", test_qr_input }, | |
| 9018 { "test_qr_gs1", test_qr_gs1 }, | |
| 9019 { "test_qr_optimize", test_qr_optimize }, | |
| 9020 { "test_qr_encode", test_qr_encode }, | |
| 9021 { "test_qr_encode_segs", test_qr_encode_segs }, | |
| 9022 { "test_qr_perf", test_qr_perf }, | |
| 9023 | |
| 9024 { "test_microqr_options", test_microqr_options }, | |
| 9025 { "test_microqr_input", test_microqr_input }, | |
| 9026 { "test_microqr_padding", test_microqr_padding }, | |
| 9027 { "test_microqr_optimize", test_microqr_optimize }, | |
| 9028 { "test_microqr_encode", test_microqr_encode }, | |
| 9029 { "test_microqr_perf", test_microqr_perf }, | |
| 9030 | |
| 9031 { "test_upnqr_input", test_upnqr_input }, | |
| 9032 { "test_upnqr_encode", test_upnqr_encode }, | |
| 9033 | |
| 9034 { "test_rmqr_large", test_rmqr_large }, | |
| 9035 { "test_rmqr_options", test_rmqr_options }, | |
| 9036 { "test_rmqr_input", test_rmqr_input }, | |
| 9037 { "test_rmqr_gs1", test_rmqr_gs1 }, | |
| 9038 { "test_rmqr_optimize", test_rmqr_optimize }, | |
| 9039 { "test_rmqr_encode", test_rmqr_encode }, | |
| 9040 { "test_rmqr_encode_segs", test_rmqr_encode_segs }, | |
| 9041 | |
| 9042 { "test_fuzz", test_fuzz }, | |
| 9043 }; | |
| 9044 | |
| 9045 testRun(argc, argv, funcs, ARRAY_SIZE(funcs)); | |
| 9046 | |
| 9047 testReport(); | |
| 9048 | |
| 9049 return 0; | |
| 9050 } | |
| 9051 | |
| 9052 /* vim: set ts=4 sw=4 et norl : */ |
