bel 9 лет назад
Родитель
Сommit
4f38f7fb70
3 измененных файлов с 45 добавлено и 0 удалено
  1. 1 0
      test/CMakeLists.txt
  2. 38 0
      test/private.c
  3. 6 0
      test/public_func.c

+ 1 - 0
test/CMakeLists.txt

@@ -131,6 +131,7 @@ civetweb_add_test(Private "URL Parsing")
 civetweb_add_test(Private "Internal Parsing")
 civetweb_add_test(Private "Internal Parsing")
 civetweb_add_test(Private "Encode Decode")
 civetweb_add_test(Private "Encode Decode")
 civetweb_add_test(Private "Mask Data")
 civetweb_add_test(Private "Mask Data")
+civetweb_add_test(Private "Date Parsing")
 
 
 # Public API function tests
 # Public API function tests
 civetweb_add_test(PublicFunc "Version")
 civetweb_add_test(PublicFunc "Version")

+ 38 - 0
test/private.c

@@ -283,6 +283,18 @@ alloc_printf(char **buf, size_t size, const char *fmt, ...)
 	return ret;
 	return ret;
 }
 }
 
 
+static int
+alloc_printf2(char **buf, const char *fmt, ...)
+{
+	/* Test alternative implementation */
+	va_list ap;
+	int ret = 0;
+	va_start(ap, fmt);
+	ret = alloc_vprintf2(buf, fmt, ap);
+	va_end(ap);
+	return ret;
+}
+
 START_TEST(test_alloc_vprintf)
 START_TEST(test_alloc_vprintf)
 {
 {
 	/* Adapted from unit_test.c */
 	/* Adapted from unit_test.c */
@@ -292,13 +304,24 @@ START_TEST(test_alloc_vprintf)
 
 
 	ck_assert(alloc_printf(&p, sizeof(buf), "%s", "hi") == 2);
 	ck_assert(alloc_printf(&p, sizeof(buf), "%s", "hi") == 2);
 	ck_assert(p == buf);
 	ck_assert(p == buf);
+
 	ck_assert(alloc_printf(&p, sizeof(buf), "%s", "") == 0);
 	ck_assert(alloc_printf(&p, sizeof(buf), "%s", "") == 0);
+	ck_assert(p == buf);
+
 	ck_assert(alloc_printf(&p, sizeof(buf), "") == 0);
 	ck_assert(alloc_printf(&p, sizeof(buf), "") == 0);
+	ck_assert(p == buf);
 
 
 	/* Pass small buffer, make sure alloc_printf allocates */
 	/* Pass small buffer, make sure alloc_printf allocates */
 	ck_assert(alloc_printf(&p, 1, "%s", "hello") == 5);
 	ck_assert(alloc_printf(&p, 1, "%s", "hello") == 5);
 	ck_assert(p != buf);
 	ck_assert(p != buf);
 	mg_free(p);
 	mg_free(p);
+	p = buf;
+
+	/* Test alternative implementation */
+	ck_assert(alloc_printf2(&p, "%s", "hello") == 5);
+	ck_assert(p != buf);
+	mg_free(p);
+	p = buf;
 }
 }
 END_TEST
 END_TEST
 
 
@@ -511,6 +534,16 @@ START_TEST(test_mask_data)
 END_TEST
 END_TEST
 
 
 
 
+START_TEST(test_parse_date_string)
+{
+	ch_assert_uint_eq(parse_date_string("1/Jan/1970 00:01:02"), 62);
+	ch_assert_uint_eq(parse_date_string("1 Jan 1970 00:02:03"), 123);
+	ch_assert_uint_eq(parse_date_string("1-Jan-1970 00:03:04"), 184);
+	ch_assert_uint_eq(parse_date_string("Xyz, 1 Jan 1970 00:04:05"), 245);
+}
+END_TEST
+
+
 Suite *
 Suite *
 make_private_suite(void)
 make_private_suite(void)
 {
 {
@@ -521,6 +554,7 @@ make_private_suite(void)
 	TCase *const tcase_internal_parse = tcase_create("Internal Parsing");
 	TCase *const tcase_internal_parse = tcase_create("Internal Parsing");
 	TCase *const tcase_encode_decode = tcase_create("Encode Decode");
 	TCase *const tcase_encode_decode = tcase_create("Encode Decode");
 	TCase *const tcase_mask_data = tcase_create("Mask Data");
 	TCase *const tcase_mask_data = tcase_create("Mask Data");
+	TCase *const tcase_parse_date_string = tcase_create("Date Parsing");
 
 
 	tcase_add_test(tcase_http_message, test_parse_http_message);
 	tcase_add_test(tcase_http_message, test_parse_http_message);
 	tcase_add_test(tcase_http_message, test_should_keep_alive);
 	tcase_add_test(tcase_http_message, test_should_keep_alive);
@@ -550,5 +584,9 @@ make_private_suite(void)
 	tcase_set_timeout(tcase_mask_data, civetweb_min_test_timeout);
 	tcase_set_timeout(tcase_mask_data, civetweb_min_test_timeout);
 	suite_add_tcase(suite, tcase_mask_data);
 	suite_add_tcase(suite, tcase_mask_data);
 
 
+	tcase_add_test(tcase_parse_date_string, test_parse_date_string);
+	tcase_set_timeout(tcase_mask_data, civetweb_min_test_timeout);
+	suite_add_tcase(suite, tcase_parse_date_string);
+
 	return suite;
 	return suite;
 }
 }

+ 6 - 0
test/public_func.c

@@ -282,6 +282,12 @@ START_TEST(test_mg_get_var)
 	ck_assert_int_eq(ret, 1);
 	ck_assert_int_eq(ret, 1);
 	ck_assert_str_eq("3", buf);
 	ck_assert_str_eq("3", buf);
 
 
+	/* mg_get_var call mg_get_var2 with last argument 0 */
+	memset(buf, 77, sizeof(buf));
+	ret = mg_get_var(shortquery, strlen(shortquery), "key1", buf, sizeof(buf));
+	ck_assert_int_eq(ret, 1);
+	ck_assert_str_eq("1", buf);
+
 	/* longer value in the middle of a longer string */
 	/* longer value in the middle of a longer string */
 	memset(buf, 77, sizeof(buf));
 	memset(buf, 77, sizeof(buf));
 	ret =
 	ret =