mirror of
https://git.code.sf.net/p/zint/code
synced 2025-05-31 15:18:29 -04:00
tests: VC6 compatible; plot_raster_dotty: avoid float rounding difference
This commit is contained in:
parent
e5115bad07
commit
70801d8932
97 changed files with 3354 additions and 1893 deletions
|
@ -39,6 +39,9 @@
|
|||
// See also backend/tests/tools/data/GB18030.TXT.README and backend/tests/tools/gen_test_tab.php.
|
||||
static int gb18030_wctomb_zint2(unsigned int *r1, unsigned int *r2, unsigned int wc) {
|
||||
unsigned int c;
|
||||
int tab_length, start_i, end_i;
|
||||
int i;
|
||||
|
||||
// GB18030 two-byte extension (libiconv-1.16/lib/gb18030ext.h)
|
||||
if (wc == 0x1E3F) { // GB 18030-2005 change, was PUA U+E7C7 below, see Table 3-39, p.111, Lunde 2nd ed.
|
||||
*r1 = 0xA8BC;
|
||||
|
@ -106,10 +109,10 @@ static int gb18030_wctomb_zint2(unsigned int *r1, unsigned int *r2, unsigned int
|
|||
*r2 = 0x8130 + (c % 10) + 0x100 * (c / 10);
|
||||
return 4;
|
||||
}
|
||||
int tab_length = sizeof(test_gb18030_tab) / sizeof(unsigned int);
|
||||
int start_i = test_gb18030_tab_ind[wc >> 10];
|
||||
int end_i = start_i + 0x800 > tab_length ? tab_length : start_i + 0x800;
|
||||
for (int i = start_i; i < end_i; i += 2) {
|
||||
tab_length = ARRAY_SIZE(test_gb18030_tab);
|
||||
start_i = test_gb18030_tab_ind[wc >> 10];
|
||||
end_i = start_i + 0x800 > tab_length ? tab_length : start_i + 0x800;
|
||||
for (i = start_i; i < end_i; i += 2) {
|
||||
if (test_gb18030_tab[i + 1] == wc) {
|
||||
c = test_gb18030_tab[i];
|
||||
if (c <= 0xFFFF) {
|
||||
|
@ -126,12 +129,13 @@ static int gb18030_wctomb_zint2(unsigned int *r1, unsigned int *r2, unsigned int
|
|||
|
||||
static void test_gb18030_wctomb_zint(void) {
|
||||
|
||||
testStart("");
|
||||
|
||||
int ret, ret2;
|
||||
unsigned int val1_1, val1_2, val2_1, val2_2;
|
||||
unsigned int i;
|
||||
|
||||
for (unsigned int i = 0; i < 0x10400; i++) { // Don't bother with U+10400..U+10FFFF, programmatically filled
|
||||
testStart("test_gb18030_wctomb_zint");
|
||||
|
||||
for (i = 0; i < 0x10400; i++) { // Don't bother with U+10400..U+10FFFF, programmatically filled
|
||||
if (i >= 0xD800 && i <= 0xDFFF) { // UTF-16 surrogates
|
||||
continue;
|
||||
}
|
||||
|
@ -150,9 +154,6 @@ static void test_gb18030_wctomb_zint(void) {
|
|||
|
||||
static void test_gb18030_utf8(int index) {
|
||||
|
||||
testStart("");
|
||||
|
||||
int ret;
|
||||
struct item {
|
||||
char *data;
|
||||
int length;
|
||||
|
@ -181,24 +182,28 @@ static void test_gb18030_utf8(int index) {
|
|||
/* 7*/ { "—", -1, 0, 1, { 0xA1AA }, "GB 18030 subset mapping" },
|
||||
/* 8*/ { "aβc・·—é—Z", -1, 0, 10, { 'a', 0xA6C2, 'c', 0x8139, 0xA739, 0xA1A4, 0xA1AA, 0xA8A6, 0xA1AA, 'Z' }, "" },
|
||||
};
|
||||
|
||||
int data_size = sizeof(data) / sizeof(struct item);
|
||||
int data_size = ARRAY_SIZE(data);
|
||||
int i, length, ret;
|
||||
|
||||
struct zint_symbol symbol;
|
||||
unsigned int gbdata[30];
|
||||
|
||||
for (int i = 0; i < data_size; i++) {
|
||||
testStart("test_gb18030_utf8");
|
||||
|
||||
for (i = 0; i < data_size; i++) {
|
||||
int ret_length;
|
||||
|
||||
if (index != -1 && i != index) continue;
|
||||
|
||||
int length = data[i].length == -1 ? (int) strlen(data[i].data) : data[i].length;
|
||||
int ret_length = length;
|
||||
length = data[i].length == -1 ? (int) strlen(data[i].data) : data[i].length;
|
||||
ret_length = length;
|
||||
|
||||
ret = gb18030_utf8(&symbol, (unsigned char *) data[i].data, &ret_length, gbdata);
|
||||
assert_equal(ret, data[i].ret, "i:%d ret %d != %d (%s)\n", i, ret, data[i].ret, symbol.errtxt);
|
||||
if (ret == 0) {
|
||||
int j;
|
||||
assert_equal(ret_length, data[i].ret_length, "i:%d ret_length %d != %d\n", i, ret_length, data[i].ret_length);
|
||||
for (int j = 0; j < (int) ret_length; j++) {
|
||||
for (j = 0; j < (int) ret_length; j++) {
|
||||
assert_equal(gbdata[j], data[i].expected_gbdata[j], "i:%d gbdata[%d] 0x%04X != 0x%04X\n", i, j, gbdata[j], data[i].expected_gbdata[j]);
|
||||
}
|
||||
}
|
||||
|
@ -209,9 +214,6 @@ static void test_gb18030_utf8(int index) {
|
|||
|
||||
static void test_gb18030_utf8_to_eci(int index) {
|
||||
|
||||
testStart("");
|
||||
|
||||
int ret;
|
||||
struct item {
|
||||
int eci;
|
||||
int full_multibyte;
|
||||
|
@ -283,23 +285,27 @@ static void test_gb18030_utf8_to_eci(int index) {
|
|||
/* 50*/ { 30, 0, "詰", -1, 0, 2, { 0x7D + 0x80, 0x7E + 0x80 }, "EUC-KR U+8A70 (0xFDFE)" },
|
||||
/* 51*/ { 30, 1, "詰", -1, 0, 1, { 0x7D7E + 0x8080 }, "All EUC-KR in GB 18030 Hanzi mode range" },
|
||||
};
|
||||
|
||||
int data_size = sizeof(data) / sizeof(struct item);
|
||||
int data_size = ARRAY_SIZE(data);
|
||||
int i, length, ret;
|
||||
|
||||
unsigned int gbdata[30];
|
||||
|
||||
for (int i = 0; i < data_size; i++) {
|
||||
testStart("test_gb18030_utf8_to_eci");
|
||||
|
||||
for (i = 0; i < data_size; i++) {
|
||||
int ret_length;
|
||||
|
||||
if (index != -1 && i != index) continue;
|
||||
|
||||
int length = data[i].length == -1 ? (int) strlen(data[i].data) : data[i].length;
|
||||
int ret_length = length;
|
||||
length = data[i].length == -1 ? (int) strlen(data[i].data) : data[i].length;
|
||||
ret_length = length;
|
||||
|
||||
ret = gb18030_utf8_to_eci(data[i].eci, (unsigned char *) data[i].data, &ret_length, gbdata, data[i].full_multibyte);
|
||||
assert_equal(ret, data[i].ret, "i:%d ret %d != %d\n", i, ret, data[i].ret);
|
||||
if (ret == 0) {
|
||||
int j;
|
||||
assert_equal(ret_length, data[i].ret_length, "i:%d ret_length %d != %d\n", i, ret_length, data[i].ret_length);
|
||||
for (int j = 0; j < (int) ret_length; j++) {
|
||||
for (j = 0; j < (int) ret_length; j++) {
|
||||
assert_equal(gbdata[j], data[i].expected_gbdata[j], "i:%d gbdata[%d] 0x%04X != 0x%04X\n", i, j, gbdata[j], data[i].expected_gbdata[j]);
|
||||
}
|
||||
}
|
||||
|
@ -310,8 +316,6 @@ static void test_gb18030_utf8_to_eci(int index) {
|
|||
|
||||
static void test_gb18030_cpy(int index) {
|
||||
|
||||
testStart("");
|
||||
|
||||
struct item {
|
||||
int full_multibyte;
|
||||
char *data;
|
||||
|
@ -334,21 +338,25 @@ static void test_gb18030_cpy(int index) {
|
|||
/* 8*/ { 0, "\241\240\241\376\367\376\367\377\2012\2013", -1, 0, 12, { 0xA1, 0xA0, 0xA1, 0xFE, 0xF7, 0xFE, 0xF7, 0xFF, 0x81, 0x32, 0x81, 0x33 }, "" },
|
||||
/* 9*/ { 1, "\241\240\241\376\367\376\367\377\2012\2013", -1, 0, 7, { 0xA1A0, 0xA1FE, 0xF7FE, 0xF7, 0xFF, 0x8132, 0x8133 }, "" },
|
||||
};
|
||||
|
||||
int data_size = sizeof(data) / sizeof(struct item);
|
||||
int data_size = ARRAY_SIZE(data);
|
||||
int i, length;
|
||||
|
||||
unsigned int gbdata[30];
|
||||
|
||||
for (int i = 0; i < data_size; i++) {
|
||||
testStart("test_gb18030_cpy");
|
||||
|
||||
for (i = 0; i < data_size; i++) {
|
||||
int ret_length;
|
||||
int j;
|
||||
|
||||
if (index != -1 && i != index) continue;
|
||||
|
||||
int length = data[i].length == -1 ? (int) strlen(data[i].data) : data[i].length;
|
||||
int ret_length = length;
|
||||
length = data[i].length == -1 ? (int) strlen(data[i].data) : data[i].length;
|
||||
ret_length = length;
|
||||
|
||||
gb18030_cpy((unsigned char *) data[i].data, &ret_length, gbdata, data[i].full_multibyte);
|
||||
assert_equal(ret_length, data[i].ret_length, "i:%d ret_length %d != %d\n", i, ret_length, data[i].ret_length);
|
||||
for (int j = 0; j < (int) ret_length; j++) {
|
||||
for (j = 0; j < (int) ret_length; j++) {
|
||||
assert_equal(gbdata[j], data[i].expected_gbdata[j], "i:%d gbdata[%d] %04X != %04X\n", i, j, gbdata[j], data[i].expected_gbdata[j]);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue