diff --git a/tests/Makefile.am b/tests/Makefile.am index e637d3a..fb064a7 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -22,4 +22,11 @@ AM_CPPFLAGS = @EZ_CPPFLAGS@ \ AM_CFLAGS = @EZ_CFLAGS@ @CHECK_CFLAGS@ AM_LDFLAGS = @EZ_LDFLAGS@ +EXTRA_DIST = \ + config-bad.xml \ + config-bad2.xml \ + config-bad3.xml \ + config-bad4.xml \ + config-ok.xml + CLEANFILES = *~ *.core core *.gcno *.gcda diff --git a/tests/check_cfg.c b/tests/check_cfg.c index 772bd0c..103fdaf 100644 --- a/tests/check_cfg.c +++ b/tests/check_cfg.c @@ -78,8 +78,46 @@ ck_assert_uint_eq(g(), 20); \ } while (0) +#define TEST_INTNUM(s, g) do { \ + const char *errstr2; \ + \ + TEST_EMPTYSTR(s, g); \ + \ + errstr2 = NULL; \ + ck_assert_int_eq(s("-2147483649", &errstr2), -1); \ + ck_assert_ptr_ne(errstr2, NULL); \ + \ + errstr2 = NULL; \ + ck_assert_int_eq(s("2147483648", &errstr2), -1); \ + ck_assert_ptr_ne(errstr2, NULL); \ + \ + ck_assert_int_eq(s("20", NULL), 0); \ + ck_assert_uint_eq(g(), 20); \ +} while (0) + Suite * cfg_suite(void); +START_TEST(test_reload) +{ + ck_assert_int_eq(cfg_set_program_config_file("config-ok.xml", NULL), + 0); + ck_assert_int_eq(cfg_reload(), 0); + ck_assert_int_eq(cfg_reload(), 0); + ck_assert_int_eq(cfg_set_program_config_file("config-bad.xml", NULL), + 0); + ck_assert_int_eq(cfg_reload(), -1); + ck_assert_int_eq(cfg_set_program_config_file("config-bad2.xml", NULL), + 0); + ck_assert_int_eq(cfg_reload(), -1); + ck_assert_int_eq(cfg_set_program_config_file("config-bad3.xml", NULL), + 0); + ck_assert_int_eq(cfg_reload(), -1); + ck_assert_int_eq(cfg_set_program_config_file("config-bad4.xml", NULL), + 0); + ck_assert_int_eq(cfg_reload(), -1); +} +END_TEST + START_TEST(test_stream_str2fmt) { enum cfg_stream_format fmt; @@ -109,6 +147,7 @@ END_TEST START_TEST(test_file_check) { ck_assert_int_eq(cfg_file_check(NULL), -1); + ck_assert_int_eq(cfg_file_check("check_cfg.c"), 0); } END_TEST @@ -144,6 +183,13 @@ START_TEST(test_program_quiet_stderr) } END_TEST +START_TEST(test_program_rtstatus_output) +{ + ck_assert_int_eq(cfg_set_program_rtstatus_output(-1, NULL), 0); + ck_assert_int_ne(cfg_get_program_rtstatus_output(), 0); +} +END_TEST + START_TEST(test_program_verbosity) { ck_assert_int_eq(cfg_set_program_verbosity(2000, NULL), 0); @@ -163,8 +209,10 @@ START_TEST(test_server_protocol) ck_assert_int_eq(cfg_set_server_protocol("hTtP", NULL), 0); ck_assert_int_eq(cfg_get_server_protocol(), CFG_PROTO_HTTP); + ck_assert_str_eq(cfg_get_server_protocol_str(), "http"); ck_assert_int_eq(cfg_set_server_protocol("HtTpS", NULL), 0); ck_assert_int_eq(cfg_get_server_protocol(), CFG_PROTO_HTTPS); + ck_assert_str_eq(cfg_get_server_protocol_str(), "https"); } END_TEST @@ -380,7 +428,9 @@ END_TEST START_TEST(test_metadata_refresh_interval) { - TEST_UINTNUM(cfg_set_metadata_refresh_interval, + ck_assert_int_eq(cfg_get_metadata_refresh_interval(), -1); + + TEST_INTNUM(cfg_set_metadata_refresh_interval, cfg_get_metadata_refresh_interval); } END_TEST @@ -408,6 +458,7 @@ cfg_suite(void) s = suite_create("Config"); tc_core = tcase_create("Core"); + tcase_add_test(tc_core, test_reload); tcase_add_test(tc_core, test_stream_str2fmt); tcase_add_test(tc_core, test_stream_fmt2str); tcase_add_test(tc_core, test_file_check); @@ -415,6 +466,7 @@ cfg_suite(void) tcase_add_test(tc_core, test_program_config_type); tcase_add_test(tc_core, test_program_config_file); tcase_add_test(tc_core, test_program_quiet_stderr); + tcase_add_test(tc_core, test_program_rtstatus_output); tcase_add_test(tc_core, test_program_verbosity); tcase_add_test(tc_core, test_server_protocol); tcase_add_test(tc_core, test_server_hostname); @@ -459,6 +511,10 @@ main(void) Suite *s; SRunner *sr; + (void)cfg_init(); + (void)cfg_decoder_init(); + (void)cfg_encoder_init(); + s = cfg_suite(); sr = srunner_create(s); @@ -466,6 +522,8 @@ main(void) num_failed = srunner_ntests_failed(sr); srunner_free(sr); + cfg_encoder_exit(); + cfg_decoder_exit(); cfg_exit(); if (num_failed) diff --git a/tests/config-bad.xml b/tests/config-bad.xml new file mode 100644 index 0000000..1b1adb4 --- /dev/null +++ b/tests/config-bad.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/config-bad2.xml b/tests/config-bad2.xml new file mode 100644 index 0000000..46ab35d --- /dev/null +++ b/tests/config-bad2.xml @@ -0,0 +1 @@ + diff --git a/tests/config-bad4.xml b/tests/config-bad4.xml new file mode 100644 index 0000000..3037869 --- /dev/null +++ b/tests/config-bad4.xml @@ -0,0 +1,2 @@ + + diff --git a/tests/config-ok.xml b/tests/config-ok.xml new file mode 100644 index 0000000..ab6ff5a --- /dev/null +++ b/tests/config-ok.xml @@ -0,0 +1,65 @@ + + + + + + https + 127.0.0.1 + 8000 + source + hackme + /tmp + /tmp/ca.crt + client.crt + client.key + 10 + + + + /stream.ogg + VORBIS + OggEnc-Q1.5 + Test + http://localhost + Test Tones + A variation of test tones. + 6 + 24 + 96000 + 8 + False + + + + Playlist + playlist.m3u + True + False + + + + metadata.sh + @A@ - @T@ + -1 + True + False + + + + + Universal + oggdec -R -o - @T@ + .ogg + .oga + + + + + + OggEnc-Q1.5 + Vorbis + oggenc -r -q 1.5 -t @M@ - + + + +