|
@@ -308,6 +308,46 @@ START_TEST(test_mg_strcasestr)
|
|
|
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",
|
|
|
+ "[3ffe:2a00:100:7031::1]:900",
|
|
|
+#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 i;
|
|
|
+
|
|
|
+ for (i = 0; valid[i] != NULL; i++) {
|
|
|
+ vec.ptr = valid[i];
|
|
|
+ vec.len = strlen(vec.ptr);
|
|
|
+ ck_assert(parse_port_string(&vec, &so) != 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (i = 0; invalid[i] != NULL; i++) {
|
|
|
+ vec.ptr = invalid[i];
|
|
|
+ vec.len = strlen(vec.ptr);
|
|
|
+ ck_assert(parse_port_string(&vec, &so) == 0);
|
|
|
+ }
|
|
|
+}
|
|
|
+END_TEST
|
|
|
+
|
|
|
+
|
|
|
START_TEST(test_encode_decode)
|
|
|
{
|
|
|
char buf[64];
|
|
@@ -427,6 +467,7 @@ Suite *make_private_suite(void)
|
|
|
tcase_add_test(internal_parse, test_skip_quoted);
|
|
|
tcase_add_test(internal_parse, test_mg_strcasestr);
|
|
|
tcase_add_test(internal_parse, test_alloc_vprintf);
|
|
|
+ tcase_add_test(internal_parse, test_parse_port_string);
|
|
|
suite_add_tcase(suite, internal_parse);
|
|
|
|
|
|
tcase_add_test(encode_decode, test_encode_decode);
|