mirror of
https://git.code.sf.net/p/zint/code
synced 2025-05-18 17:25:09 -04:00
MAXICODE: fix shifting from sets C/D/E to A/B (only latch available)
This commit is contained in:
parent
89518c4f01
commit
5187f2226d
9 changed files with 518 additions and 189 deletions
|
@ -52,10 +52,10 @@ static void test_large(int index, int debug) {
|
|||
/* 1*/ { -1, -1, "1", 139, "", ZINT_ERROR_TOO_LONG, -1, -1 },
|
||||
/* 2*/ { -1, -1, "A", 93, "", 0, 33, 30 },
|
||||
/* 3*/ { -1, -1, "A", 94, "", ZINT_ERROR_TOO_LONG, -1, -1 },
|
||||
/* 4*/ { -1, -1, "\001", 91, "", 0, 33, 30 },
|
||||
/* 5*/ { -1, -1, "\001", 92, "", ZINT_ERROR_TOO_LONG, -1, -1 },
|
||||
/* 6*/ { -1, -1, "\200", 91, "", 0, 33, 30 },
|
||||
/* 7*/ { -1, -1, "\200", 92, "", ZINT_ERROR_TOO_LONG, -1, -1 },
|
||||
/* 4*/ { -1, -1, "\001", 90, "", 0, 33, 30 },
|
||||
/* 5*/ { -1, -1, "\001", 91, "", ZINT_ERROR_TOO_LONG, -1, -1 },
|
||||
/* 6*/ { -1, -1, "\200", 90, "", 0, 33, 30 },
|
||||
/* 7*/ { -1, -1, "\200", 91, "", ZINT_ERROR_TOO_LONG, -1, -1 },
|
||||
/* 8*/ { 2, -1, "1", 126, "123456789123123", 0, 33, 30 },
|
||||
/* 9*/ { 2, -1, "1", 127, "123456789123123", ZINT_ERROR_TOO_LONG, -1, -1 },
|
||||
/* 10*/ { 2, -1, "A", 84, "123456789123123", 0, 33, 30 },
|
||||
|
@ -214,6 +214,8 @@ static void test_encode(int index, int generate, int debug) {
|
|||
|
||||
testStart("");
|
||||
|
||||
int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); // Only do BWIPP test if asked, too slow otherwise
|
||||
|
||||
int ret;
|
||||
struct item {
|
||||
int input_mode;
|
||||
|
@ -226,11 +228,12 @@ static void test_encode(int index, int generate, int debug) {
|
|||
|
||||
int expected_rows;
|
||||
int expected_width;
|
||||
int bwipp_cmp;
|
||||
char *comment;
|
||||
char *expected;
|
||||
};
|
||||
struct item data[] = {
|
||||
/* 0*/ { -1, -1, -1, "THIS IS A 93 CHARACTER CODE SET A MESSAGE THAT FILLS A MODE 4, UNAPPENDED, MAXICODE SYMBOL...", -1, "", 0, 33, 30, "ISO/IEC 16023:2000 Figure 2, same",
|
||||
/* 0*/ { -1, -1, -1, "THIS IS A 93 CHARACTER CODE SET A MESSAGE THAT FILLS A MODE 4, UNAPPENDED, MAXICODE SYMBOL...", -1, "", 0, 33, 30, 1, "ISO/IEC 16023:2000 Figure 2, same",
|
||||
"011111010000001000001000100111"
|
||||
"000100000001000000001010000000"
|
||||
"001011001100100110110010010010"
|
||||
|
@ -265,7 +268,7 @@ static void test_encode(int index, int generate, int debug) {
|
|||
"001001101111101101101010011100"
|
||||
"001011000000111101100100001000"
|
||||
},
|
||||
/* 1*/ { -1, 4, -1, "MaxiCode (19 chars)", -1, "", 0, 33, 30, "ISO/IEC 16023:2000 Figure H1 **NOT SAME** different encodation (figure uses '3 Shift A' among other differences)",
|
||||
/* 1*/ { -1, 4, -1, "MaxiCode (19 chars)", -1, "", 0, 33, 30, 0, "ISO/IEC 16023:2000 Figure H1 **NOT SAME** different encodation (figure uses '3 Shift A' among other differences); BWIPP different encodation again",
|
||||
"001101011111011100000010101111"
|
||||
"101100010001001100010000001100"
|
||||
"101100001010001111001001111101"
|
||||
|
@ -300,7 +303,7 @@ static void test_encode(int index, int generate, int debug) {
|
|||
"010110010110001110100000010100"
|
||||
"010011110011000001010111100111"
|
||||
},
|
||||
/* 2*/ { DATA_MODE | ESCAPE_MODE, 2, 96, "1Z00004951\\GUPSN\\G06X610\\G159\\G1234567\\G1/1\\G\\GY\\G634 ALPHA DR\\GPITTSBURGH\\GPA\\R\\E", -1, "152382802840001", 0, 33, 30, "ISO/IEC 16023:2000 Figure B2 **NOT SAME** uses different encodation (figure uses Latch B/Latch A instead of Shift B for '>\\R', and precedes PAD chars with Latch B)",
|
||||
/* 2*/ { DATA_MODE | ESCAPE_MODE, 2, 96, "1Z00004951\\GUPSN\\G06X610\\G159\\G1234567\\G1/1\\G\\GY\\G634 ALPHA DR\\GPITTSBURGH\\GPA\\R\\E", -1, "152382802840001", 0, 33, 30, 0, "ISO/IEC 16023:2000 Figure B2 **NOT SAME** uses different encodation (figure uses Latch B/Latch A instead of Shift B for '>\\R', and precedes PAD chars with Latch B); BWIPP different encodation again",
|
||||
"110101110110111110111111101111"
|
||||
"010101010111000011011000010010"
|
||||
"110110110001001010101010010011"
|
||||
|
@ -335,7 +338,7 @@ static void test_encode(int index, int generate, int debug) {
|
|||
"010110101101000001111000100110"
|
||||
"110110100000010000001011110011"
|
||||
},
|
||||
/* 3*/ { -1, 3, -1, "CEN", -1, "B1050056999", 0, 33, 30, "ISO/IEC 16023:2000 B.1 Example (primary only given, data arbitrary); verified manually against BWIP and tec-it",
|
||||
/* 3*/ { -1, 3, -1, "CEN", -1, "B1050056999", 0, 33, 30, 1, "ISO/IEC 16023:2000 B.1 Example (primary only given, data arbitrary); verified manually against tec-it",
|
||||
"000000010101010101010101010111"
|
||||
"001011000000000000000000000010"
|
||||
"111001101010101010101010101000"
|
||||
|
@ -370,7 +373,7 @@ static void test_encode(int index, int generate, int debug) {
|
|||
"010010001001110010000101000010"
|
||||
"010001011010000011010010011100"
|
||||
},
|
||||
/* 4*/ { UNICODE_MODE | ESCAPE_MODE, -1, -1, "Comité Européen de Normalisation\034rue de Stassart 36\034B-1050 BRUXELLES\034TEL +3225196811", -1, "", 0, 33, 30, "ISO/IEC 16023:2000 Example F.5 **NOT SAME** uses different encodation (2 Shift A among other things)",
|
||||
/* 4*/ { UNICODE_MODE | ESCAPE_MODE, -1, -1, "Comité Européen de Normalisation\034rue de Stassart 36\034B-1050 BRUXELLES\034TEL +3225196811", -1, "", 0, 33, 30, 0, "ISO/IEC 16023:2000 Example F.5 **NOT SAME** uses different encodation (2 Shift A among other things); BWIPP different encodation again",
|
||||
"010010100010110000000100001111"
|
||||
"001010001100110110111110100110"
|
||||
"001010011100101010011100100000"
|
||||
|
@ -405,7 +408,7 @@ static void test_encode(int index, int generate, int debug) {
|
|||
"001011110011100001001001101100"
|
||||
"000010111011111010110011000011"
|
||||
},
|
||||
/* 5*/ { -1, -1, -1, "999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999", -1, "", 0, 33, 30, "Numeric compaction, verified manually against BWIPP and tec-it",
|
||||
/* 5*/ { -1, -1, -1, "999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999", -1, "", 0, 33, 30, 1, "Numeric compaction, verified manually against tec-it",
|
||||
"010111101101010111101101010111"
|
||||
"111011110110111011110110111010"
|
||||
"001111111101001111111101001100"
|
||||
|
@ -440,115 +443,362 @@ static void test_encode(int index, int generate, int debug) {
|
|||
"111010101011001101111001011010"
|
||||
"011110011111000011101011111011"
|
||||
},
|
||||
/* 6*/ { -1, 5, -1, "\000\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\037\237\240\242\243\244\245\246\247\251\255\256\266\225\226\227\230\231\232\233\234\235\236", 51, "", 0, 33, 30, "Mode 5 set E; single difference from BWIPP - Zint uses Latch B at end before padding instead of Latch A",
|
||||
/* 6*/ { -1, 5, -1, "\000\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\037\237\240\242\243\244\245\246\247\251\255\256\266\225\226\227\230\231\232\233\234\235\236", 51, "", 0, 33, 30, 1, "Mode 5 set E",
|
||||
"000000000000000000101010101011"
|
||||
"100101010111111111000000001000"
|
||||
"110010011100100111001001110001"
|
||||
"010101010101011010101010101000"
|
||||
"010110101010001101010110101000"
|
||||
"100101010111111111000000001010"
|
||||
"110010011100100111001001110010"
|
||||
"010101010101011010101010101010"
|
||||
"010110101010001101010110101001"
|
||||
"100011011000110101100011011000"
|
||||
"010101010101111111111111111110"
|
||||
"010111111111000000001010101010"
|
||||
"011100100111001001110010011101"
|
||||
"010101011011110000001011111100"
|
||||
"000000001111110010010011010100"
|
||||
"101010100110000010001011100000"
|
||||
"010101110010000000001101010100"
|
||||
"010101011011110000001011111110"
|
||||
"000000001111110010010001010110"
|
||||
"101010100110000010001001100000"
|
||||
"010101110010000000001101010111"
|
||||
"000000111000000000001000000010"
|
||||
"101010110100000000001110101011"
|
||||
"010101010000000000001001010100"
|
||||
"000000001000000000001000000001"
|
||||
"101010100000000000001010101010"
|
||||
"010101100000000000001001010100"
|
||||
"101010100000000000001010101000"
|
||||
"010101100000000000001001010110"
|
||||
"000000000000000000000000000000"
|
||||
"101010100100000000011110101010"
|
||||
"101100110100000001110101100110"
|
||||
"011100010010110101110111010011"
|
||||
"110011100010110001001000101010"
|
||||
"110001101111100011111110101000"
|
||||
"111110010101110100010110100000"
|
||||
"110001110000111101111111000011"
|
||||
"111001000100001011001011011110"
|
||||
"101010110110100001110011010011"
|
||||
"100100100001001100000001100000"
|
||||
"010101001001000001111101011111"
|
||||
"110110111000001000001101100100"
|
||||
"100100010010000000010001010111"
|
||||
"101100110100000001110101110110"
|
||||
"011000000010110101110111000011"
|
||||
"110111000010110001001000011010"
|
||||
"100001101111010001110110101000"
|
||||
"111110011001100100010110010010"
|
||||
"100011110000001110111011000001"
|
||||
"111001000110000011101000011000"
|
||||
"101110110100100001100011011111"
|
||||
"101100010011001000110000101100"
|
||||
"110101001101000000111101001111"
|
||||
"100111110000101000000001110100"
|
||||
"100101010010100000010101000111"
|
||||
},
|
||||
/* 7*/ { -1, 6, -1, "\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377\241\250\253\257\260\264\267\270\273\277\212\213\214\215\216\217\220\221\222\223\224", -1, "", 0, 33, 30, "Mode 6 set D; single difference from BWIPP as above - Zint uses Latch B at end before padding instead of Latch A",
|
||||
/* 7*/ { -1, 6, -1, "\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377\241\250\253\257\260\264\267\270\273\277\212\213\214\215\216\217\220\221\222\223\224", -1, "", 0, 33, 30, 1, "Mode 6 set D",
|
||||
"000000000000000000101010101011"
|
||||
"100101010111111111000000001000"
|
||||
"100101010111111111000000001010"
|
||||
"110010011100100111001001110001"
|
||||
"010101010101010110101010101000"
|
||||
"010101010101010110101010101010"
|
||||
"101010100000000001010110101000"
|
||||
"110110001101100001100011011000"
|
||||
"010101010101010111111111111111"
|
||||
"010101011111111100000000101000"
|
||||
"001001110010011100100111001001"
|
||||
"010111110111110000000011111100"
|
||||
"000011011011110010011101101000"
|
||||
"101011101110000001000100110100"
|
||||
"010101110000000000000001010100"
|
||||
"010111110111110000000011111110"
|
||||
"000001011011110010011101101011"
|
||||
"101001101110000001000100110110"
|
||||
"010101110000000000000001010110"
|
||||
"000000101000000000000000000010"
|
||||
"101010110100000000000110101010"
|
||||
"010101010000000000001001010100"
|
||||
"000000001000000000001000000011"
|
||||
"101010100000000000001010101000"
|
||||
"010101101100000000001001010110"
|
||||
"101010100000000000001010101010"
|
||||
"010101101100000000001001010111"
|
||||
"000000101000000000001000000010"
|
||||
"101010010110000000011010101001"
|
||||
"010101011100000000111101010100"
|
||||
"000000001110110111011000000011"
|
||||
"101010100110110001100110101010"
|
||||
"010101010101010101011101101100"
|
||||
"000000000000000000001000010000"
|
||||
"101010101010101010100110000001"
|
||||
"101000111111101000101010110100"
|
||||
"010100110011011001101100111001"
|
||||
"100101010011111101011110000010"
|
||||
"111101110110111101001001010101"
|
||||
"011110000010110111001011110110"
|
||||
"001110010110111101101011110010"
|
||||
"010101010101010101011001011100"
|
||||
"000000000000000000001000000000"
|
||||
"101010101010101010101010100010"
|
||||
"101100011100101000011001110100"
|
||||
"011100110000010001111110111110"
|
||||
"101101100000111001011101001010"
|
||||
"001100111110101100001101010101"
|
||||
"011111001010000101000011000110"
|
||||
"101111010010011100100011110010"
|
||||
},
|
||||
/* 8*/ { -1, 6, -1, "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\252\254\261\262\263\265\271\272\274\275\276\200\201\202\203\204\205\206\207\210\211", -1, "", 0, 33, 30, "Mode 6 set C; single difference from BWIPP as above - Zint uses Latch B at end before padding instead of Latch A",
|
||||
/* 8*/ { -1, 6, -1, "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\252\254\261\262\263\265\271\272\274\275\276\200\201\202\203\204\205\206\207\210\211", -1, "", 0, 33, 30, 1, "Mode 6 set C",
|
||||
"000000000000000000101010101011"
|
||||
"100101010111111111000000001000"
|
||||
"100101010111111111000000001010"
|
||||
"110010011100100111001001110001"
|
||||
"010101010101010110101010101000"
|
||||
"010101010101010110101010101010"
|
||||
"101010100000000001010110101000"
|
||||
"110110001101100001100011011000"
|
||||
"010101010101010111111111111111"
|
||||
"010101011111111100000000101000"
|
||||
"001001110010011100100111001001"
|
||||
"010111111111110000000111111100"
|
||||
"000011010111110010010001101000"
|
||||
"101011101010000001001100110100"
|
||||
"010101100000000000000101010100"
|
||||
"010111111111110000000111111110"
|
||||
"000001010111110010010001101011"
|
||||
"101001101010000001001100110110"
|
||||
"010101100000000000000101010110"
|
||||
"000000011000000000000100000010"
|
||||
"101010110100000000000010101010"
|
||||
"010101010000000000001001010100"
|
||||
"000000001000000000001000000011"
|
||||
"101010100000000000001010101000"
|
||||
"010101110000000000001001010110"
|
||||
"101010100000000000001010101010"
|
||||
"010101110000000000001001010111"
|
||||
"000000111100000000001100000010"
|
||||
"101010110000000000010110101001"
|
||||
"010101010100000000101101010100"
|
||||
"000000001010110101011000000011"
|
||||
"101010100010110001010110101010"
|
||||
"010101010101010101011101101100"
|
||||
"000000000000000000001000010000"
|
||||
"101010101010101010100110000001"
|
||||
"101000111111101000101010110100"
|
||||
"010100110011011001101100111001"
|
||||
"100101010011111101011110000010"
|
||||
"111101110110111101001001010101"
|
||||
"011110000010110111001011110110"
|
||||
"001110010110111101101011110010"
|
||||
"010101010101010101011001011100"
|
||||
"000000000000000000001000000000"
|
||||
"101010101010101010101010100010"
|
||||
"101100011100101000011001110100"
|
||||
"011100110000010001111110111110"
|
||||
"101101100000111001011101001010"
|
||||
"001100111110101100001101010101"
|
||||
"011111001010000101000011000110"
|
||||
"101111010010011100100011110010"
|
||||
},
|
||||
/* 9*/ { UNICODE_MODE, 4, -1, "ABCDabcdAabcABabcABCabcABCDaABCabABCabcABCéa", -1, "", 0, 33, 30, 1, "Mode 4 LCHB SHA 2SHA 3SHA LCHA SHB LCHB 3SHA 3SHA SHD",
|
||||
"110000000011000000000011000011"
|
||||
"010000000001000000000001000000"
|
||||
"111010011100100110011110100101"
|
||||
"000000001100000000110000000000"
|
||||
"000000000110000000110000000010"
|
||||
"110110101100110110111101101100"
|
||||
"110000110000000000001100000000"
|
||||
"110000010000000000000100000000"
|
||||
"111001101001111001111010011110"
|
||||
"010101010011000000001000001100"
|
||||
"000000000001000010001000011111"
|
||||
"101010100110000000010010101000"
|
||||
"010101000010000000000001010101"
|
||||
"000000001000000000101000000000"
|
||||
"101010100000000000010010101010"
|
||||
"010101011000000000001101010110"
|
||||
"000000001000000000001000000001"
|
||||
"101010001000000000001010101000"
|
||||
"010101001100000000001001010111"
|
||||
"000000111000000000011000000010"
|
||||
"101010101000000000001110101000"
|
||||
"010101010110000000010101010100"
|
||||
"000000001110001111001100000001"
|
||||
"101010101111000001101110101000"
|
||||
"010101010101010101011101000110"
|
||||
"000000000000000000000000000110"
|
||||
"101010101010101010101101100100"
|
||||
"000010001010001010000101010000"
|
||||
"101000000111100010010001111100"
|
||||
"101001111000010101010110110010"
|
||||
"011101111110011111011100001000"
|
||||
"110001000010011110111101111000"
|
||||
"011010011011111110001000000010"
|
||||
},
|
||||
/* 10*/ { UNICODE_MODE, 4, -1, "ÀÁÂÃ1", -1, "", 0, 33, 30, 1, "Mode 4 LCKC LCHA",
|
||||
"010101010101010101010101010111"
|
||||
"000000000000000000000000000000"
|
||||
"101010101010101010101010101010"
|
||||
"010101010101010101010101010110"
|
||||
"000000000000000000000000000001"
|
||||
"101010101010101010101010101000"
|
||||
"010101010101010101010101010110"
|
||||
"000000000000000000000000000010"
|
||||
"101010101010101010101010101001"
|
||||
"010101011111110000111001010100"
|
||||
"000000001111110010001000000000"
|
||||
"101010101010000000011110101010"
|
||||
"010101000100000000000101010110"
|
||||
"000000110000000000000100000000"
|
||||
"101010011000000000001110101000"
|
||||
"010101110000000000001001010110"
|
||||
"000000101000000000001000000010"
|
||||
"101010000000000000001110101000"
|
||||
"010101001100000000000001010111"
|
||||
"000000100100000000001000000010"
|
||||
"101010010000000000010110101011"
|
||||
"010101011100000000001101010100"
|
||||
"000000001010110101111100000011"
|
||||
"101010101010110001111110101010"
|
||||
"010101010101010101011111010111"
|
||||
"000000000000000000001111010110"
|
||||
"101010101010101010100000000010"
|
||||
"111111110000111100000101000000"
|
||||
"010110101111000011110101010100"
|
||||
"101010100000010101011111101010"
|
||||
"111101011010000011110101101010"
|
||||
"010110101111010110101010111100"
|
||||
"010100000000010110101010010100"
|
||||
},
|
||||
/* 11*/ { UNICODE_MODE, 4, -1, "ÀÁÂÃ123456789", -1, "", 0, 33, 30, 1, "Mode 4 LCKC NS",
|
||||
"111110110101010101010101010111"
|
||||
"111010010000000000000000000000"
|
||||
"000010011010101010101010101000"
|
||||
"010101010101010101010101010100"
|
||||
"000000000000000000000000000001"
|
||||
"101010101010101010101010101010"
|
||||
"010101010101010101010101010101"
|
||||
"000000000000000000000000000000"
|
||||
"101010101010101010101010101001"
|
||||
"010101010111110000110001010110"
|
||||
"000000000011110010010000000010"
|
||||
"101010100110000000111010101010"
|
||||
"010101011000000000001001010101"
|
||||
"000000101000000000001000000000"
|
||||
"101010000100000000000110101011"
|
||||
"010101010000000000001101010110"
|
||||
"000000001000000000001000000000"
|
||||
"101010100000000000001010101000"
|
||||
"010101100000000000001001010100"
|
||||
"000000001000000000001100000010"
|
||||
"101010110000000000011010101001"
|
||||
"010101010100000000011001010100"
|
||||
"000000001110110101111000000000"
|
||||
"101010101010110001000110101010"
|
||||
"010101010101010101010000101101"
|
||||
"000000000000000000001110011100"
|
||||
"101010101010101010100111100010"
|
||||
"011101100110110110100011110010"
|
||||
"010001101101001001100100011011"
|
||||
"100011011110110000101000000010"
|
||||
"101101111000011101010000100101"
|
||||
"000000111100011110100001110000"
|
||||
"101000000010100111001011110101"
|
||||
},
|
||||
/* 12*/ { UNICODE_MODE, 4, -1, "àáâã1", -1, "", 0, 33, 30, 1, "Mode 4 LCKD LCHA",
|
||||
"010101010101010101010101010111"
|
||||
"000000000000000000000000000000"
|
||||
"101010101010101010101010101010"
|
||||
"010101010101010101010101010110"
|
||||
"000000000000000000000000000001"
|
||||
"101010101010101010101010101000"
|
||||
"010101010101010101010101010110"
|
||||
"000000000000000000000000000010"
|
||||
"101010101010101010101010101001"
|
||||
"010101010111110000111101010100"
|
||||
"000000000011110010000100000000"
|
||||
"101010101110000000010110101010"
|
||||
"010101010100000000000001010110"
|
||||
"000000000000000000000000000000"
|
||||
"101010011000000000001010101000"
|
||||
"010101110000000000001001010110"
|
||||
"000000101000000000001000000010"
|
||||
"101010000000000000001110101000"
|
||||
"010101010000000000000001010111"
|
||||
"000000110000000000001100000010"
|
||||
"101010110110000000011010101011"
|
||||
"010101010100000000011101010100"
|
||||
"000000001110110111111100000011"
|
||||
"101010101110110001001110101010"
|
||||
"010101010101010101011111010111"
|
||||
"000000000000000000001111010110"
|
||||
"101010101010101010100000000010"
|
||||
"111111110000111100000101000000"
|
||||
"010110101111000011110101010100"
|
||||
"101010100000010101011111101010"
|
||||
"111101011010000011110101101010"
|
||||
"010110101111010110101010111100"
|
||||
"010100000000010110101010010100"
|
||||
},
|
||||
/* 13*/ { UNICODE_MODE, 4, -1, "¢£¤¥1", -1, "", 0, 33, 30, 1, "Mode 4 LCKE LCHA",
|
||||
"010101010101010101010101010111"
|
||||
"000000000000000000000000000000"
|
||||
"101010101010101010101010101010"
|
||||
"010101010101010101010101010110"
|
||||
"000000000000000000000000000001"
|
||||
"101010101010101010101010101000"
|
||||
"010101010101010101010101010110"
|
||||
"000000000000000000000000000010"
|
||||
"101010101010101010101010101001"
|
||||
"010101010111110100110001010100"
|
||||
"000000000101110110000100000000"
|
||||
"101010101010000000011110101010"
|
||||
"010101010110000000001001010110"
|
||||
"000000010000000000111000000000"
|
||||
"101010011000000000001110101000"
|
||||
"010101111000000000001001010110"
|
||||
"000000101000000000001000000010"
|
||||
"101010000000000000001110101000"
|
||||
"010101111000000000001101010111"
|
||||
"000000111100000000111000000010"
|
||||
"101010001100000000111110101011"
|
||||
"010101011110000001011101010100"
|
||||
"000000001010110001011100000011"
|
||||
"101010101010110101101010101010"
|
||||
"010101010101010101011111010111"
|
||||
"000000000000000000001111010110"
|
||||
"101010101010101010100000000010"
|
||||
"111111110000111100000101000000"
|
||||
"010110101111000011110101010100"
|
||||
"101010100000010101011111101010"
|
||||
"111101011010000011110101101010"
|
||||
"010110101111010110101010111100"
|
||||
"010100000000010110101010010100"
|
||||
},
|
||||
/* 14*/ { UNICODE_MODE, 4, -1, "¢£¤¥123456789", -1, "", 0, 33, 30, 1, "Mode 4 LCKE NS",
|
||||
"111110110101010101010101010111"
|
||||
"111010010000000000000000000000"
|
||||
"000010011010101010101010101000"
|
||||
"010101010101010101010101010100"
|
||||
"000000000000000000000000000001"
|
||||
"101010101010101010101010101010"
|
||||
"010101010101010101010101010101"
|
||||
"000000000000000000000000000000"
|
||||
"101010101010101010101010101001"
|
||||
"010101011111110100111001010110"
|
||||
"000000001001110110011100000010"
|
||||
"101010100110000000111010101010"
|
||||
"010101001010000000000101010101"
|
||||
"000000001000000000110100000000"
|
||||
"101010000100000000000110101011"
|
||||
"010101011000000000001101010110"
|
||||
"000000001000000000001000000000"
|
||||
"101010100000000000001010101000"
|
||||
"010101010100000000000101010100"
|
||||
"000000010000000000111100000010"
|
||||
"101010101100000000110010101001"
|
||||
"010101010110000001001001010100"
|
||||
"000000001110110001011000000000"
|
||||
"101010101010110101010010101010"
|
||||
"010101010101010101010000101101"
|
||||
"000000000000000000001110011100"
|
||||
"101010101010101010100111100010"
|
||||
"011101100110110110100011110010"
|
||||
"010001101101001001100100011011"
|
||||
"100011011110110000101000000010"
|
||||
"101101111000011101010000100101"
|
||||
"000000111100011110100001110000"
|
||||
"101000000010100111001011110101"
|
||||
},
|
||||
/* 15*/ { UNICODE_MODE, 4, -1, "ABCDE12abcde1ÀÁÂ⣤¥1àáâãabcde123A123456789àáâ㢣¤¥abc", -1, "", 0, 33, 30, 1, "Mode 4 mixed sets",
|
||||
"000000001111111100000000111111"
|
||||
"000010100100111100000000111100"
|
||||
"011100101110000000100111010100"
|
||||
"001100000000111111110101010110"
|
||||
"001100000000111100010101101001"
|
||||
"101111011000101010011000110110"
|
||||
"000000001111111100100010111110"
|
||||
"000010101100000000111010111000"
|
||||
"011100101110011110111101000010"
|
||||
"000000001011001100010111111010"
|
||||
"000000000001000010000111111000"
|
||||
"110110001110000000011110101010"
|
||||
"111101000010000000001101010101"
|
||||
"111110110000000000100110010100"
|
||||
"010101101000000000010111001001"
|
||||
"010100110000000000001100001110"
|
||||
"000000101000000000001000001110"
|
||||
"101011110000000000001101101110"
|
||||
"010101101000000000000001010101"
|
||||
"000000000100000000010000000000"
|
||||
"101010100000000000000110101000"
|
||||
"010101010100000000000101010100"
|
||||
"000000001010001011100000000011"
|
||||
"101010101011000001011010101000"
|
||||
"010101010101010101010101001001"
|
||||
"000000000000000000000010100000"
|
||||
"101010101010101010101111110001"
|
||||
"001110011111110100100011111000"
|
||||
"011001101011100100010000010101"
|
||||
"010000011110010110000011110010"
|
||||
"110111100111000100111111001011"
|
||||
"100011000001110011101110101000"
|
||||
"001001110010111101100100010001"
|
||||
},
|
||||
};
|
||||
int data_size = ARRAY_SIZE(data);
|
||||
|
||||
char escaped[1024];
|
||||
char bwipp_buf[8192];
|
||||
char bwipp_msg[1024];
|
||||
|
||||
for (int i = 0; i < data_size; i++) {
|
||||
|
||||
|
@ -564,9 +814,9 @@ static void test_encode(int index, int generate, int debug) {
|
|||
assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt);
|
||||
|
||||
if (generate) {
|
||||
printf(" /*%3d*/ { %s, %d, %d, \"%s\", %d, \"%s\", %s, %d, %d, \"%s\",\n",
|
||||
printf(" /*%3d*/ { %s, %d, %d, \"%s\", %d, \"%s\", %s, %d, %d, %d, \"%s\",\n",
|
||||
i, testUtilInputModeName(data[i].input_mode), data[i].option_1, data[i].option_2, testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), data[i].length,
|
||||
data[i].primary, testUtilErrorName(data[i].ret), symbol->rows, symbol->width, data[i].comment);
|
||||
data[i].primary, testUtilErrorName(data[i].ret), symbol->rows, symbol->width, data[i].bwipp_cmp, data[i].comment);
|
||||
testUtilModulesPrint(symbol, " ", "\n");
|
||||
printf(" },\n");
|
||||
} else {
|
||||
|
@ -577,6 +827,19 @@ static void test_encode(int index, int generate, int debug) {
|
|||
int width, row;
|
||||
ret = testUtilModulesCmp(symbol, data[i].expected, &width, &row);
|
||||
assert_zero(ret, "i:%d testUtilModulesCmp ret %d != 0 width %d row %d (%s)\n", i, ret, width, row, data[i].data);
|
||||
|
||||
if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, -1, debug)) {
|
||||
if (!data[i].bwipp_cmp) {
|
||||
if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment);
|
||||
} else {
|
||||
ret = testUtilBwipp(i, symbol, data[i].option_1, data[i].option_2, -1, data[i].data, length, data[i].primary, bwipp_buf, sizeof(bwipp_buf));
|
||||
assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret);
|
||||
|
||||
ret = testUtilBwippCmp(symbol, bwipp_msg, bwipp_buf, data[i].expected);
|
||||
assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n",
|
||||
i, testUtilBarcodeName(symbol->symbology), ret, bwipp_msg, bwipp_buf, data[i].expected);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -699,6 +962,7 @@ static void test_fuzz(int index, int debug) {
|
|||
/* 2*/ { -1, "AaAaAaAaAaAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA123456789A", -1, ZINT_ERROR_TOO_LONG },
|
||||
/* 3*/ { -1, "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", -1, ZINT_ERROR_TOO_LONG },
|
||||
/* 4*/ { 32768, "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678", -1, ZINT_ERROR_TOO_LONG },
|
||||
/* 5*/ { -1, "AaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAa", -1, ZINT_ERROR_TOO_LONG },
|
||||
};
|
||||
int data_size = ARRAY_SIZE(data);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue