1
0
mirror of https://gitlab.xiph.org/xiph/ezstream.git synced 2024-10-13 04:53:36 -04:00

Add remaining tests of cfg.c

This commit is contained in:
Moritz Grimm 2015-05-15 00:47:47 +02:00
parent 5a8e087b31
commit 13be6d2680
7 changed files with 202 additions and 1 deletions

View File

@ -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

View File

@ -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)

67
tests/config-bad.xml Normal file
View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<ezstream>
<server>
<protocol></protocol>
<hostname></hostname>
<port></port>
<user></user>
<password></password>
<ca_dir></ca_dir>
<ca_file></ca_file>
<client_cert></client_cert>
<client_key></client_key>
<reconnect_attempts></reconnect_attempts>
</server>
<stream>
<mountpoint></mountpoint>
<name></name>
<url></url>
<genre></genre>
<description></description>
<quality></quality>
<bitrate></bitrate>
<samplerate></samplerate>
<channels></channels>
<server_public></server_public>
<format></format>
<encoder></encoder>
</stream>
<media>
<type></type>
<filename></filename>
<shuffle></shuffle>
<stream_once></stream_once>
</media>
<metadata>
<program></program>
<format_str></format_str>
<refresh_interval></refresh_interval>
<normalize_strings></normalize_strings>
<no_updates></no_updates>
</metadata>
<decoders>
<decoder>
<name></name>
<program></program>
<file_ext></file_ext>
<!-- ... -->
</decoder>
<!-- ... -->
</decoders>
<encoders>
<encoder>
<name></name>
<format></format>
<program></program>
</encoder>
<!-- ... -->
</encoders>
</ezstream>

1
tests/config-bad2.xml Normal file
View File

@ -0,0 +1 @@
<ezstream

1
tests/config-bad3.xml Normal file
View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?>

2
tests/config-bad4.xml Normal file
View File

@ -0,0 +1,2 @@
<test>
</test>

65
tests/config-ok.xml Normal file
View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<ezstream>
<server>
<protocol>https</protocol>
<hostname>127.0.0.1</hostname>
<port>8000</port>
<user>source</user>
<password>hackme</password>
<ca_dir>/tmp</ca_dir>
<ca_file>/tmp/ca.crt</ca_file>
<client_cert>client.crt</client_cert>
<client_key>client.key</client_key>
<reconnect_attempts>10</reconnect_attempts>
</server>
<stream>
<mountpoint>/stream.ogg</mountpoint>
<format>VORBIS</format>
<encoder>OggEnc-Q1.5</encoder>
<name>Test</name>
<url>http://localhost</url>
<genre>Test Tones</genre>
<description>A variation of test tones.</description>
<quality>6</quality>
<bitrate>24</bitrate>
<samplerate>96000</samplerate>
<channels>8</channels>
<server_public>False</server_public>
</stream>
<media>
<type>Playlist</type>
<filename>playlist.m3u</filename>
<shuffle>True</shuffle>
<stream_once>False</stream_once>
</media>
<metadata>
<program>metadata.sh</program>
<format_str>@A@ - @T@</format_str>
<refresh_interval>-1</refresh_interval>
<normalize_strings>True</normalize_strings>
<no_updates>False</no_updates>
</metadata>
<decoders>
<decoder>
<name>Universal</name>
<program>oggdec -R -o - @T@</program>
<file_ext>.ogg</file_ext>
<file_ext>.oga</file_ext>
</decoder>
</decoders>
<encoders>
<encoder>
<name>OggEnc-Q1.5</name>
<format>Vorbis</format>
<program>oggenc -r -q 1.5 -t @M@ -</program>
</encoder>
</encoders>
</ezstream>