void doit (void) { char *out; size_t i; for (i = 0; i < sizeof (nfkc) / sizeof (nfkc[0]); i++) { if (debug) printf ("NFKC entry %ld\n", i); out = stringprep_utf8_nfkc_normalize (nfkc[i].in, (ssize_t) strlen (nfkc[i].in)); if (out == NULL) { fail ("NFKC entry %ld failed fatally\n", i); continue; } if (debug) { uint32_t *t; size_t len; printf ("in:\n"); escapeprint (nfkc[i].in, strlen (nfkc[i].in)); hexprint (nfkc[i].in, strlen (nfkc[i].in)); binprint (nfkc[i].in, strlen (nfkc[i].in)); printf ("out:\n"); escapeprint (out, strlen (out)); hexprint (out, strlen (out)); binprint (out, strlen (out)); t = stringprep_utf8_to_ucs4 (out, -1, &len); if (t) { ucs4print (t, len); free (t); } printf ("expected out:\n"); escapeprint (nfkc[i].out, strlen (nfkc[i].out)); hexprint (nfkc[i].out, strlen (nfkc[i].out)); binprint (nfkc[i].out, strlen (nfkc[i].out)); } if (strlen (nfkc[i].out) != strlen (out) || memcmp (nfkc[i].out, out, strlen (out)) != 0) { fail ("NFKC entry %ld failed\n", i); if (debug) printf ("ERROR\n"); } else if (debug) printf ("OK\n"); free (out); } }
void doit (void) { size_t i; int rc; for (i = 0; i < sizeof (tv) / sizeof (tv[0]); i++) { if (debug) printf ("PR29 entry %d: %s\n", i, tv[i].name); if (debug) { printf ("in:\n"); ucs4print (tv[i].in, tv[i].inlen); } rc = pr29_4 (tv[i].in, tv[i].inlen); if (rc != tv[i].rc) { fail ("PR29 entry %d failed (expected %d): %d\n", i, tv[i].rc, rc); if (debug) printf ("FATAL\n"); continue; } rc = pr29_4z (tv[i].in); if (rc != tv[i].rc) { fail ("PR29 entry %d failed (expected %d): %d\n", i, tv[i].rc, rc); if (debug) printf ("FATAL\n"); continue; } if (debug) printf ("OK\n"); } }
void doit (void) { size_t i; char *out; int rc; for (i = 0; i < sizeof (idna) / sizeof (idna[0]); i++) { if (debug) printf ("IDNA2 entry %ld\n", i); if (debug) { uint32_t *p; size_t len; printf ("in: %s\n", idna[i].in); hexprint (idna[i].in, strlen (idna[i].in)); escapeprint (idna[i].in, strlen (idna[i].in)); p = stringprep_utf8_to_ucs4 (idna[i].in, -1, &len); ucs4print (p, len); free (p); } rc = idna_to_ascii_8z (idna[i].in, &out, IDNA_ALLOW_UNASSIGNED | IDNA_USE_STD3_ASCII_RULES); if (rc != IDNA_SUCCESS && strlen (idna[i].out) > 0) { fail ("IDNA2 entry %ld failed: %d\n", i, rc); continue; } if (debug && rc == IDNA_SUCCESS) { printf ("computed out: %s\n", out); printf ("expected out: %s\n", idna[i].out); } else if (debug) printf ("returned %d\n", rc); if (rc == IDNA_SUCCESS) { if (strlen (idna[i].out) != strlen (out) || strcasecmp (idna[i].out, out) != 0) { fail ("IDNA2 entry %ld failed\n", i); if (debug) printf ("ERROR\n"); } else if (debug) printf ("OK\n"); free (out); out = NULL; } else if (rc != IDNA_SUCCESS && strlen (idna[i].out) == 0 && debug) printf ("OK (fail)\n"); else if (debug) printf ("OK\n"); } }
void doit (void) { char label[100]; uint32_t *ucs4label = NULL; uint32_t tmp[100]; size_t len, len2, i; int rc; for (i = 0; i < sizeof (idna) / sizeof (idna[0]); i++) { if (debug) printf ("IDNA entry %d: %s\n", i, idna[i].name); if (debug) { printf ("in:\n"); ucs4print (idna[i].in, idna[i].inlen); } rc = idna_to_ascii_4i (idna[i].in, idna[i].inlen, label, idna[i].flags); if (rc != idna[i].toasciirc) { fail ("IDNA entry %d failed: %d\n", i, rc); if (debug) printf ("FATAL\n"); continue; } if (debug && rc == IDNA_SUCCESS) { printf ("computed out: %s\n", label); printf ("expected out: %s\n", idna[i].out); } else if (debug) printf ("returned %d expected %d\n", rc, idna[i].toasciirc); if (rc == IDNA_SUCCESS) { if (strlen (idna[i].out) != strlen (label) || strcasecmp (idna[i].out, label) != 0) { fail ("IDNA entry %d failed\n", i); if (debug) printf ("ERROR\n"); } else if (debug) printf ("OK\n"); } else if (debug) printf ("OK\n"); if (ucs4label) free (ucs4label); ucs4label = stringprep_utf8_to_ucs4 (idna[i].out, -1, &len); if (debug) { printf ("in: %s (%d==%d)\n", idna[i].out, strlen (idna[i].out), len); ucs4print (ucs4label, len); } len2 = sizeof (tmp) / sizeof (tmp[0]); rc = idna_to_unicode_44i (ucs4label, len, tmp, &len2, idna[i].flags); if (debug) { printf ("expected out (%d):\n", rc == IDNA_SUCCESS ? idna[i].inlen : len); if (rc == IDNA_SUCCESS) ucs4print (idna[i].in, idna[i].inlen); else ucs4print (ucs4label, len); printf ("computed out (%d):\n", len2); ucs4print (tmp, len2); } if (rc != idna[i].tounicoderc) { fail ("IDNA entry %d failed: %d\n", i, rc); if (debug) printf ("FATAL\n"); continue; } if ((rc == IDNA_SUCCESS && (len2 != idna[i].inlen || memcmp (idna[i].in, tmp, len2) != 0)) || (rc != IDNA_SUCCESS && (len2 != len || memcmp (ucs4label, tmp, len) != 0))) { if (debug) { if (rc == IDNA_SUCCESS) printf ("len=%d len2=%d\n", len2, idna[i].inlen); else printf ("len=%d len2=%d\n", len, len2); } fail ("IDNA entry %d failed\n", i); if (debug) printf ("ERROR\n"); } else if (debug) printf ("OK\n\n"); } if (ucs4label) free (ucs4label); }
void doit (void) { size_t i; int rc; for (i = 0; i < sizeof (tv) / sizeof (tv[0]); i++) { if (debug) { uint32_t *p, *q; printf ("PR29 entry %ld: %s\n", i, tv[i].name); printf ("in:\n"); ucs4print (tv[i].in, tv[i].inlen); printf ("nfkc:\n"); p = stringprep_ucs4_nfkc_normalize (tv[i].in, tv[i].inlen); ucs4print (p, -1); printf ("second nfkc:\n"); q = stringprep_ucs4_nfkc_normalize (p, -1); ucs4print (q, -1); free (p); free (q); } rc = pr29_4 (tv[i].in, tv[i].inlen); if (rc != tv[i].rc) { fail ("PR29 entry %ld failed (expected %d): %d\n", i, tv[i].rc, rc); if (debug) printf ("FATAL\n"); continue; } rc = pr29_4z (tv[i].in); if (rc != tv[i].rc) { fail ("PR29 entry %ld failed (expected %d): %d\n", i, tv[i].rc, rc); if (debug) printf ("FATAL\n"); continue; } { char *p; size_t items_read, items_written; p = stringprep_ucs4_to_utf8 (tv[i].in, (ssize_t) tv[i].inlen, &items_read, &items_written); if (p == NULL) fail ("FAIL: stringprep_ucs4_to_utf8(tv[%ld]) == NULL\n", i); if (debug) hexprint (p, strlen (p)); rc = pr29_8z (p); free (p); if (rc != tv[i].rc) { fail ("PR29 entry %ld failed (expected %d): %d\n", i, tv[i].rc, rc); if (debug) printf ("FATAL\n"); continue; } } if (debug) { if (tv[i].rc != PR29_SUCCESS) printf ("EXPECTED FAIL\n"); else printf ("OK\n"); } } }
void doit (void) { size_t i; const Tld_table *tldtable; size_t errpos; int rc; tldtable = tld_get_table (NULL, NULL); if (tldtable != NULL) fail ("FAIL: tld_get_table (NULL, NULL) != NULL\n"); tldtable = tld_get_table ("nonexisting", NULL); if (tldtable != NULL) fail ("FAIL: tld_get_table (\"nonexisting\", NULL) != NULL\n"); tldtable = tld_default_table (NULL, NULL); if (tldtable != NULL) fail ("FAIL: tld_default_table (NULL, NULL) != NULL\n"); for (i = 0; i < sizeof (tld) / sizeof (tld[0]); i++) { if (debug) printf ("TLD entry %ld: %s\n", i, tld[i].name); if (debug) { printf ("in:\n"); ucs4print (tld[i].in, tld[i].inlen); } tldtable = tld_default_table (tld[i].tld, NULL); if (tldtable == NULL) { fail ("TLD entry %ld tld_get_table (%s)\n", i, tld[i].tld); if (debug) printf ("FATAL\n"); continue; } rc = tld_check_4t (tld[i].in, tld[i].inlen, &errpos, tldtable); if (rc != tld[i].rc) { fail ("TLD entry %ld failed: %d\n", i, rc); if (debug) printf ("FATAL\n"); continue; } if (debug) printf ("returned %d expected %d\n", rc, tld[i].rc); if (rc != tld[i].rc) { fail ("TLD entry %ld failed\n", i); if (debug) printf ("ERROR\n"); } else if (rc == TLD_INVALID) { if (debug) printf ("returned errpos %ld expected errpos %ld\n", errpos, tld[i].errpos); if (tld[i].errpos != errpos) { fail ("TLD entry %ld failed because errpos %ld != %ld\n", i, tld[i].errpos, errpos); if (debug) printf ("ERROR\n"); } } else if (debug) printf ("OK\n"); { rc = tld_check_8z (tld[i].example, &errpos, NULL); if (rc != tld[i].rc) { fail ("TLD entry %ld failed\n", i); if (debug) printf ("ERROR\n"); } if (debug) printf ("TLD entry %ld tld_check_8z (%s)\n", i, tld[i].example); } } }