From ee26be9c8f221c8b3b708a8eb0fe2f87f740fdf6 Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos Date: Fri, 25 Nov 2016 11:47:53 +0100 Subject: tests: added unit tests of of _gnutls_idna_reverse_map --- tests/str-idna.c | 49 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/tests/str-idna.c b/tests/str-idna.c index af32bfce8b..20d4b46731 100644 --- a/tests/str-idna.c +++ b/tests/str-idna.c @@ -32,8 +32,21 @@ #include int _gnutls_idna_map(const char *input, unsigned ilen, gnutls_datum_t *out, unsigned flags); +int _gnutls_idna_reverse_map(const char * input, unsigned ilen, gnutls_datum_t *out, unsigned flags); -#define MATCH_FUNC(fname, str, normalized) \ +#define MATCH_FUNC(fname, str, normalized, reverse) \ +static void fname##_reverse(void **glob_state) \ +{ \ + gnutls_datum_t out; \ + int ret; \ + if (normalized == NULL) \ + return; \ + ret = _gnutls_idna_reverse_map(normalized, strlen(normalized), &out, 0); \ + assert_int_equal(ret, 0); \ + \ + assert_int_equal(strcmp((char*)out.data, (char*)str), 0); \ + gnutls_free(out.data); \ +} \ static void fname(void **glob_state) \ { \ gnutls_datum_t out; \ @@ -46,25 +59,28 @@ static void fname(void **glob_state) \ } \ assert_int_equal(strcmp((char*)out.data, (char*)normalized), 0); \ gnutls_free(out.data); \ + if (reverse) fname##_reverse(glob_state); \ } + /* vectors taken from: * http://www.unicode.org/Public/idna/9.0.0/IdnaTest.txt */ -MATCH_FUNC(test_ascii, "localhost", "localhost"); -MATCH_FUNC(test_ascii_caps, "LOCALHOST", "LOCALHOST"); -MATCH_FUNC(test_greek1, "βόλοσ.com", "xn--nxasmq6b.com"); -MATCH_FUNC(test_greek2, "βόλος.com", "xn--nxasmq6b.com"); -MATCH_FUNC(test_cap_greek3, "ΒΌΛΟΣ.com", "xn--nxasmq6b.com"); -MATCH_FUNC(test_mix, "简体中文.εξτρα.com", "xn--fiqu1az03c18t.xn--mxah1amo.com"); -MATCH_FUNC(test_german1, "faß.de", "fass.de"); -MATCH_FUNC(test_german2, "Faß.de", "fass.de"); -MATCH_FUNC(test_german3, "Ü.ü", "xn--tda.xn--tda"); -MATCH_FUNC(test_german4, "Bücher.de", "xn--bcher-kva.de"); -MATCH_FUNC(test_u1, "夡夞夜夙", "xn--bssffl"); -MATCH_FUNC(test_jp2, "日本語.jp", "xn--wgv71a119e.jp"); -MATCH_FUNC(test_dots, "a.b.c。d。", "a.b.c.d."); +MATCH_FUNC(test_ascii, "localhost", "localhost", 1); +MATCH_FUNC(test_ascii_caps, "LOCALHOST", "LOCALHOST", 1); +MATCH_FUNC(test_greek1, "βόλοσ.com", "xn--nxasmq6b.com", 1); +MATCH_FUNC(test_greek2, "βόλος.com", "xn--nxasmq6b.com", 0); +MATCH_FUNC(test_cap_greek3, "ΒΌΛΟΣ.com", "xn--nxasmq6b.com", 0); +MATCH_FUNC(test_mix, "简体中文.εξτρα.com", "xn--fiqu1az03c18t.xn--mxah1amo.com", 1); +MATCH_FUNC(test_german1, "faß.de", "fass.de", 0); +MATCH_FUNC(test_caps_german2, "Faß.de", "fass.de", 0); +MATCH_FUNC(test_caps_german3, "Ü.ü", "xn--tda.xn--tda", 0); +MATCH_FUNC(test_caps_german4, "Bücher.de", "xn--bcher-kva.de", 0); +MATCH_FUNC(test_german4, "bücher.de", "xn--bcher-kva.de", 1); +MATCH_FUNC(test_u1, "夡夞夜夙", "xn--bssffl", 1); +MATCH_FUNC(test_jp2, "日本語.jp", "xn--wgv71a119e.jp", 1); +MATCH_FUNC(test_dots, "a.b.c。d。", "a.b.c.d.", 0); int main(void) { @@ -78,8 +94,9 @@ int main(void) cmocka_unit_test(test_cap_greek3), cmocka_unit_test(test_mix), cmocka_unit_test(test_german1), - cmocka_unit_test(test_german2), - cmocka_unit_test(test_german3), + cmocka_unit_test(test_caps_german2), + cmocka_unit_test(test_caps_german3), + cmocka_unit_test(test_caps_german4), cmocka_unit_test(test_german4), cmocka_unit_test(test_u1), cmocka_unit_test(test_jp2), -- cgit v1.2.1