diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/data/Choices | 5 | ||||
-rw-r--r-- | test/data/Choices-full | 2 | ||||
-rw-r--r-- | test/nsoption.c | 188 |
3 files changed, 179 insertions, 16 deletions
diff --git a/test/data/Choices b/test/data/Choices index f4a62afc4..dcef8dd7d 100644 --- a/test/data/Choices +++ b/test/data/Choices @@ -1,3 +1,8 @@ +# this is test choices file + +broken +badkey: +badkey:badvalue http_proxy:0 http_proxy_port:8080 http_proxy_auth:0 diff --git a/test/data/Choices-full b/test/data/Choices-full index 2667a6aa6..f035bae1d 100644 --- a/test/data/Choices-full +++ b/test/data/Choices-full @@ -5,12 +5,14 @@ font_mono:Monospace font_cursive:Serif font_fantasy:Serif accept_language:en +disc_cache_size:42 enable_javascript:1 ca_path:/etc/ssl/certs cookie_file:/home/vince/.netsurf/Cookies cookie_jar:/home/vince/.netsurf/Cookies homepage_url:about:welcome core_select_menu:1 +sys_colour_ActiveBorder:0d00d0 downloads_directory:/home/vince url_file:/home/vince/.netsurf/URLs show_single_tab:1 diff --git a/test/nsoption.c b/test/nsoption.c index 73acbd25a..0f8680a62 100644 --- a/test/nsoption.c +++ b/test/nsoption.c @@ -37,6 +37,7 @@ const char *test_choices_path = "test/data/Choices"; const char *test_choices_short_path = "test/data/Choices-short"; const char *test_choices_all_path = "test/data/Choices-all"; const char *test_choices_full_path = "test/data/Choices-full"; +const char *test_choices_missing_path = "test/data/Choices-missing"; nserror gui_options_init_defaults(struct nsoption_s *defaults) @@ -94,6 +95,37 @@ static int cmp(const char *f1, const char *f2) return res; } +/** option create fixture */ +static void nsoption_create(void) +{ + nserror res; + + res = nsoption_init(NULL, NULL, NULL); + ck_assert_int_eq(res, NSERROR_OK); +} + +/** option create fixture for format case */ +static void nsoption_format_create(void) +{ + nserror res; + + res = nsoption_init(NULL, NULL, NULL); + ck_assert_int_eq(res, NSERROR_OK); + + /* read from file */ + res = nsoption_read(test_choices_path, NULL); + ck_assert_int_eq(res, NSERROR_OK); +} + +/** option teardown fixture */ +static void nsoption_teardown(void) +{ + nserror res; + + res = nsoption_finalise(NULL, NULL); + ck_assert_int_eq(res, NSERROR_OK); +} + /** * Test full options session from start to finish @@ -116,9 +148,15 @@ START_TEST(nsoption_session_test) res = nsoption_commandline(&argc, &argv[0], NULL); ck_assert_int_eq(res, NSERROR_OK); - /* change an option */ + /* change a string option */ nsoption_set_charp(http_proxy_host, strdup("bar")); + /* change an uint option */ + nsoption_set_uint(disc_cache_size, 42); + + /* change a colour */ + nsoption_set_colour(sys_colour_ActiveBorder, 0x00d0000d); + /* write options out */ outnam = tmpnam(NULL); res = nsoption_write(outnam, NULL, NULL); @@ -146,6 +184,92 @@ TCase *nsoption_session_case_create(void) } + +struct format_test_vec_s { + int opt_idx; + const char *res_html; + const char *res_text; +}; + +struct format_test_vec_s format_test_vec[] = { + { + NSOPTION_http_proxy, + "<tr><th>http_proxy</th><td>boolean</td><td>default</td><td>false</td></tr>", + "http_proxy:0" + }, + { + NSOPTION_cookie_file, + "<tr><th>cookie_file</th><td>string</td><td>user</td><td>/home/vince/.netsurf/Cookies</td></tr>", + "cookie_file:/home/vince/.netsurf/Cookies" + }, + { + NSOPTION_disc_cache_size, + "<tr><th>disc_cache_size</th><td>unsigned integer</td><td>default</td><td>1073741824</td></tr>", + "disc_cache_size:1073741824" + }, + { + NSOPTION_sys_colour_ActiveBorder, + "<tr><th>sys_colour_ActiveBorder</th><td>colour</td><td>default</td><td><span style=\"background-color: #d3d3d3; color: #000000; font-family:Monospace; \">#D3D3D3</span></td></tr>", + "sys_colour_ActiveBorder:d3d3d3" + }, +}; + +/** + * Test formatting of html output + */ +START_TEST(nsoption_format_html_test) +{ + int ret; + char buffer[1024]; + struct format_test_vec_s *tst = &format_test_vec[_i]; + + ret = nsoption_snoptionf(buffer, sizeof buffer, tst->opt_idx, + "<tr><th>%k</th><td>%t</td><td>%p</td><td>%V</td></tr>"); + ck_assert_int_gt(ret, 0); + ck_assert_str_eq(buffer, tst->res_html); +} +END_TEST + +/** + * Test formatting of text output + */ +START_TEST(nsoption_format_text_test) +{ + int ret; + char buffer[1024]; + struct format_test_vec_s *tst = &format_test_vec[_i]; + + ret = nsoption_snoptionf(buffer, sizeof buffer, tst->opt_idx, + "%k:%v"); + ck_assert_int_gt(ret, 0); + ck_assert_str_eq(buffer, tst->res_text); +} +END_TEST + +#define NELEMS(x) (sizeof(x) / sizeof((x)[0])) + +TCase *nsoption_format_case_create(void) +{ + TCase *tc; + tc = tcase_create("Formatted output"); + + /* ensure options are initialised and finalised for every test */ + tcase_add_unchecked_fixture(tc, + nsoption_format_create, + nsoption_teardown); + + tcase_add_loop_test(tc, + nsoption_format_html_test, + 0, NELEMS(format_test_vec)); + + tcase_add_loop_test(tc, + nsoption_format_text_test, + 0, NELEMS(format_test_vec)); + + return tc; +} + + /** * Test dumping option file */ @@ -208,6 +332,18 @@ START_TEST(nsoption_read_test) } END_TEST + +/** + * Test reading missing option file + */ +START_TEST(nsoption_read_missing_test) +{ + nserror res; + res = nsoption_read(test_choices_missing_path, NULL); + ck_assert_int_eq(res, NSERROR_NOT_FOUND); +} +END_TEST + /** * Test commandline string value setting */ @@ -226,21 +362,6 @@ START_TEST(nsoption_commandline_test) } END_TEST -static void nsoption_create(void) -{ - nserror res; - res = nsoption_init(NULL, NULL, NULL); - ck_assert_int_eq(res, NSERROR_OK); -} - -static void nsoption_teardown(void) -{ - nserror res; - - res = nsoption_finalise(NULL, NULL); - ck_assert_int_eq(res, NSERROR_OK); -} - TCase *nsoption_case_create(void) { TCase *tc; @@ -253,6 +374,7 @@ TCase *nsoption_case_create(void) tcase_add_test(tc, nsoption_commandline_test); tcase_add_test(tc, nsoption_read_test); + tcase_add_test(tc, nsoption_read_missing_test); tcase_add_test(tc, nsoption_write_test); tcase_add_test(tc, nsoption_dump_test); @@ -425,6 +547,37 @@ START_TEST(nsoption_api_init_def_test) } END_TEST +/** + * Test default initialisation and finalisation with parameters + */ +START_TEST(nsoption_api_init_param_test) +{ + nserror res; + res = nsoption_init(NULL, &nsoptions, &nsoptions_default); + ck_assert_int_eq(res, NSERROR_OK); + + res = nsoption_finalise(nsoptions, nsoptions_default); + ck_assert_int_eq(res, NSERROR_OK); +} +END_TEST + +static nserror failing_init_cb(struct nsoption_s *defaults) +{ + return NSERROR_INIT_FAILED; +} + +/** + * Test default initialisation waith failing callback + */ +START_TEST(nsoption_api_init_failcb_test) +{ + nserror res; + res = nsoption_init(failing_init_cb, NULL, NULL); + ck_assert_int_eq(res, NSERROR_INIT_FAILED); +} +END_TEST + + TCase *nsoption_api_case_create(void) { TCase *tc; @@ -441,6 +594,8 @@ TCase *nsoption_api_case_create(void) tcase_add_test(tc, nsoption_api_commandline_no_init_test); tcase_add_test(tc, nsoption_api_init_def_test); tcase_add_test(tc, nsoption_api_fini_twice_test); + tcase_add_test(tc, nsoption_api_init_param_test); + tcase_add_test(tc, nsoption_api_init_failcb_test); return tc; } @@ -453,6 +608,7 @@ Suite *nsoption_suite_create(void) suite_add_tcase(s, nsoption_api_case_create()); suite_add_tcase(s, nsoption_case_create()); + suite_add_tcase(s, nsoption_format_case_create()); suite_add_tcase(s, nsoption_session_case_create()); return s; |