static void test_parse_port_string(void) { static const char *valid[] = { "1", "1s", "1r", "1.2.3.4:1", "1.2.3.4:1s", "1.2.3.4:1r", #if defined(USE_IPV6) "[::1]:123", "[3ffe:2a00:100:7031::1]:900", #endif NULL }; static const char *invalid[] = { "0", "99999", "1k", "1.2.3", "1.2.3.4:", "1.2.3.4:2p", NULL }; struct socket so; struct vec vec; int i; for (i = 0; valid[i] != NULL; i++) { vec.ptr = valid[i]; vec.len = strlen(vec.ptr); ASSERT(parse_port_string(&vec, &so) != 0); } for (i = 0; invalid[i] != NULL; i++) { vec.ptr = invalid[i]; vec.len = strlen(vec.ptr); ASSERT(parse_port_string(&vec, &so) == 0); } }
END_TEST START_TEST(test_parse_port_string) { /* Adapted from unit_test.c */ /* Copyright (c) 2013-2015 the Civetweb developers */ /* Copyright (c) 2004-2013 Sergey Lyubka */ static const char *valid[] = { "0", "1", "1s", "1r", "1.2.3.4:1", "1.2.3.4:1s", "1.2.3.4:1r", #if defined(USE_IPV6) "[::1]:123", "[::]:80", "[3ffe:2a00:100:7031::1]:900", "+80", #endif NULL }; static const char *invalid[] = { "99999", "1k", "1.2.3", "1.2.3.4:", "1.2.3.4:2p", NULL}; struct socket so; struct vec vec; int ip_family; int i; for (i = 0; valid[i] != NULL; i++) { vec.ptr = valid[i]; vec.len = strlen(vec.ptr); ip_family = 123; ck_assert_int_ne(parse_port_string(&vec, &so, &ip_family), 0); if (i < 7) { ck_assert_int_eq(ip_family, 4); } else if (i < 10) { ck_assert_int_eq(ip_family, 6); } else { ck_assert_int_eq(ip_family, 4 + 6); } } for (i = 0; invalid[i] != NULL; i++) { vec.ptr = invalid[i]; vec.len = strlen(vec.ptr); ip_family = 123; ck_assert_int_eq(parse_port_string(&vec, &so, &ip_family), 0); ck_assert_int_eq(ip_family, 0); } }
static const char *test_parse_port_string(void) { static const char *valid[] = { "1", "1.2.3.4:1", #if defined(USE_IPV6) "[::1]:123", "[3ffe:2a00:100:7031::1]:900", #endif NULL }; static const char *invalid[] = { "0", "99999", "1k", "1.2.3", "1.2.3.4:", "1.2.3.4:2p", NULL }; union socket_address sa; int i; for (i = 0; valid[i] != NULL; i++) { ASSERT(parse_port_string(valid[i], &sa) != 0); } for (i = 0; invalid[i] != NULL; i++) { ASSERT(parse_port_string(invalid[i], &sa) == 0); } return NULL; }