From b930757ccc8e19b1de207286cd90aa0c33ae096c Mon Sep 17 00:00:00 2001 From: Hubert Tarasiuk Date: Tue, 23 Jun 2015 16:36:21 +0200 Subject: [PATCH 6/8] Unit test for find_key_value. * src/http.c: Add test_find_key_value. * src/test.c (main): Run new test. * src/test.h: Add test_find_key_value. --- src/http.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- src/test.c | 1 + src/test.h | 1 + 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/http.c b/src/http.c index 7a47563..f3e78e0 100644 --- a/src/http.c +++ b/src/http.c @@ -4996,10 +4996,57 @@ ensure_extension (struct http_stat *hs, const char *ext, int *dt) } } - #ifdef TESTING const char * +test_find_key_value (void) +{ + static const char *header_data = "key1=val1;key2=val2 ;key3=val3; key4=val4"\ + " ; key5=val5;key6 =val6;key7= val7; "\ + "key8 = val8 ; key9 = val9 "; + static const struct + { + const char *key; + const char *val; + bool result; + } test_array[] = + { + { "key1", "val1", true }, + { "key2", "val2", true }, + { "key3", "val3", true }, + { "key4", "val4", true }, + { "key5", "val5", true }, + { "key6", "val6", true }, + { "key7", "val7", true }, + { "key8", "val8", true }, + { "key9", "val9", true }, + { "key10", NULL, false }, + { "ey1", NULL, false }, + { "dey1", NULL, false } + }; + size_t i; + + for (i=0; i < countof (test_array); ++i) + { + bool result; + char *value; + + result = find_key_value (header_data, + header_data + strlen(header_data), + test_array[i].key, &value); + + mu_assert ("test_find_key_value: wrong result", + result == test_array[i].result && + ((!test_array[i].result && !value) || + !strncmp (value, test_array[i].val, strlen (value)))); + + xfree (value); + } + + return NULL; +} + +const char * test_parse_content_disposition(void) { unsigned i; diff --git a/src/test.c b/src/test.c index e8e3669..2c7d4db 100644 --- a/src/test.c +++ b/src/test.c @@ -58,6 +58,7 @@ int tests_run; static const char * all_tests(void) { + mu_run_test (test_find_key_value); mu_run_test (test_parse_content_disposition); mu_run_test (test_subdir_p); mu_run_test (test_dir_matches_p); diff --git a/src/test.h b/src/test.h index e60c292..d427483 100644 --- a/src/test.h +++ b/src/test.h @@ -45,6 +45,7 @@ do { \ extern int tests_run; +const char *test_find_key_value (void); const char *test_parse_content_disposition(void); const char *test_commands_sorted(void); const char *test_cmd_spec_restrict_file_names(void); -- 2.4.3