2015-05-06 17:45:52 -04:00
|
|
|
#include <check.h>
|
2015-05-10 18:47:39 -04:00
|
|
|
#include <limits.h>
|
|
|
|
#include <netdb.h>
|
2015-05-06 17:45:52 -04:00
|
|
|
|
2015-05-10 18:47:39 -04:00
|
|
|
#include "cfg.h"
|
|
|
|
|
|
|
|
Suite * cfg_suite(void);
|
|
|
|
|
|
|
|
START_TEST(test_stream_str2fmt)
|
|
|
|
{
|
|
|
|
enum cfg_stream_format fmt;
|
|
|
|
|
|
|
|
ck_assert_int_eq(cfg_stream_str2fmt(CFG_SFMT_VORBIS, &fmt), 0);
|
|
|
|
ck_assert_int_eq(fmt, CFG_STREAM_VORBIS);
|
|
|
|
ck_assert_int_eq(cfg_stream_str2fmt(CFG_SFMT_MP3, &fmt), 0);
|
|
|
|
ck_assert_int_eq(fmt, CFG_STREAM_MP3);
|
|
|
|
ck_assert_int_eq(cfg_stream_str2fmt(CFG_SFMT_THEORA, &fmt), 0);
|
|
|
|
ck_assert_int_eq(fmt, CFG_STREAM_THEORA);
|
|
|
|
ck_assert_int_eq(cfg_stream_str2fmt("<something else>", &fmt), -1);
|
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
START_TEST(test_stream_fmt2str)
|
|
|
|
{
|
|
|
|
ck_assert_str_eq(cfg_stream_fmt2str(CFG_STREAM_VORBIS),
|
|
|
|
CFG_SFMT_VORBIS);
|
|
|
|
ck_assert_str_eq(cfg_stream_fmt2str(CFG_STREAM_MP3),
|
|
|
|
CFG_SFMT_MP3);
|
|
|
|
ck_assert_str_eq(cfg_stream_fmt2str(CFG_STREAM_THEORA),
|
|
|
|
CFG_SFMT_THEORA);
|
|
|
|
ck_assert_ptr_eq(cfg_stream_fmt2str(CFG_STREAM_INVALID), NULL);
|
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
START_TEST(test_file_check)
|
|
|
|
{
|
|
|
|
ck_assert_int_eq(cfg_file_check(NULL), -1);
|
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
START_TEST(test_program_name)
|
|
|
|
{
|
|
|
|
char buf[PATH_MAX * 2];
|
|
|
|
const char *errstr;
|
|
|
|
|
|
|
|
errstr = NULL;
|
|
|
|
ck_assert_int_eq(cfg_set_program_name(NULL, &errstr), -1);
|
|
|
|
ck_assert_ptr_ne(errstr, NULL);
|
|
|
|
|
|
|
|
errstr = NULL;
|
|
|
|
memset(buf, 'A', sizeof(buf) - 1);
|
|
|
|
buf[sizeof(buf) - 1] = '\0';
|
|
|
|
ck_assert_int_eq(cfg_set_program_name(buf, &errstr), -1);
|
|
|
|
ck_assert_ptr_ne(errstr, NULL);
|
|
|
|
|
|
|
|
ck_assert_int_eq(cfg_set_program_name("check_cfg", NULL), 0);
|
|
|
|
ck_assert_str_eq(cfg_get_program_name(), "check_cfg");
|
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
START_TEST(test_program_config_type)
|
|
|
|
{
|
|
|
|
const char *errstr = NULL;
|
|
|
|
|
|
|
|
ck_assert_int_eq(cfg_set_program_config_type(-2, &errstr), -1);
|
|
|
|
ck_assert_str_eq(errstr, "invalid");
|
|
|
|
ck_assert_int_eq(cfg_set_program_config_type(CFG_TYPE_XMLFILE, NULL),
|
|
|
|
0);
|
|
|
|
ck_assert_int_eq(cfg_get_program_config_type(), CFG_TYPE_XMLFILE);
|
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
START_TEST(test_program_config_file)
|
|
|
|
{
|
|
|
|
char buf[PATH_MAX + 1];
|
|
|
|
const char *errstr;
|
|
|
|
|
|
|
|
errstr = NULL;
|
|
|
|
ck_assert_int_eq(cfg_set_program_config_file(NULL, &errstr), -1);
|
|
|
|
ck_assert_ptr_ne(errstr, NULL);
|
|
|
|
|
|
|
|
errstr = NULL;
|
|
|
|
memset(buf, 'A', sizeof(buf) - 1);
|
|
|
|
buf[sizeof(buf) - 1] = '\0';
|
|
|
|
ck_assert_int_eq(cfg_set_program_config_file(buf, &errstr), -1);
|
|
|
|
ck_assert_ptr_ne(errstr, NULL);
|
|
|
|
|
|
|
|
ck_assert_int_eq(cfg_set_program_config_file("/path/to/somewhere.cfg",
|
|
|
|
NULL), 0);
|
|
|
|
ck_assert_str_eq(cfg_get_program_config_file(),
|
|
|
|
"/path/to/somewhere.cfg");
|
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
START_TEST(test_program_quiet_stderr)
|
2015-05-06 17:45:52 -04:00
|
|
|
{
|
2015-05-10 18:47:39 -04:00
|
|
|
ck_assert_int_eq(cfg_set_program_quiet_stderr(-1, NULL), 0);
|
|
|
|
ck_assert_int_ne(cfg_get_program_quiet_stderr(), 0);
|
2015-05-06 17:45:52 -04:00
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
2015-05-10 18:47:39 -04:00
|
|
|
START_TEST(test_program_verbosity)
|
|
|
|
{
|
|
|
|
ck_assert_int_eq(cfg_set_program_verbosity(2000, NULL), 0);
|
|
|
|
ck_assert_int_eq(cfg_get_program_verbosity(), 2000);
|
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
START_TEST(test_server_protocol)
|
|
|
|
{
|
|
|
|
const char *errstr = NULL;
|
|
|
|
|
|
|
|
ck_assert_int_eq(cfg_set_server_protocol(NULL, &errstr), -1);
|
|
|
|
ck_assert_str_eq(errstr, "empty");
|
|
|
|
ck_assert_int_eq(cfg_set_server_protocol("invalid", &errstr), -1);
|
|
|
|
ck_assert_str_eq(errstr, "unsupported");
|
|
|
|
ck_assert_int_eq(cfg_set_server_protocol("hTtP", NULL), 0);
|
|
|
|
ck_assert_int_eq(cfg_get_server_protocol(), CFG_PROTO_HTTP);
|
|
|
|
ck_assert_int_eq(cfg_set_server_protocol("HtTpS", NULL), 0);
|
|
|
|
ck_assert_int_eq(cfg_get_server_protocol(), CFG_PROTO_HTTPS);
|
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
START_TEST(test_server_hostname)
|
|
|
|
{
|
|
|
|
char buf[NI_MAXHOST + 1];
|
|
|
|
const char *errstr;
|
|
|
|
|
|
|
|
errstr = NULL;
|
|
|
|
ck_assert_int_eq(cfg_set_server_hostname(NULL, &errstr), -1);
|
|
|
|
ck_assert_ptr_ne(errstr, NULL);
|
|
|
|
|
|
|
|
errstr = NULL;
|
|
|
|
memset(buf, 'A', sizeof(buf) - 1);
|
|
|
|
buf[sizeof(buf) - 1] = '\0';
|
|
|
|
ck_assert_int_eq(cfg_set_server_hostname(buf, &errstr), -1);
|
|
|
|
ck_assert_ptr_ne(errstr, NULL);
|
|
|
|
|
|
|
|
ck_assert_int_eq(cfg_set_server_hostname("check_cfg", NULL), 0);
|
|
|
|
ck_assert_str_eq(cfg_get_server_hostname(), "check_cfg");
|
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
START_TEST(test_server_port)
|
|
|
|
{
|
|
|
|
const char *errstr;
|
|
|
|
|
|
|
|
errstr = NULL;
|
|
|
|
ck_assert_int_eq(cfg_set_server_port(NULL, &errstr), -1);
|
|
|
|
ck_assert_str_eq(errstr, "empty");
|
|
|
|
|
|
|
|
errstr = NULL;
|
|
|
|
ck_assert_int_eq(cfg_set_server_port("0", &errstr), -1);
|
|
|
|
ck_assert_ptr_ne(errstr, NULL);
|
|
|
|
|
|
|
|
errstr = NULL;
|
|
|
|
ck_assert_int_eq(cfg_set_server_port("65536", &errstr), -1);
|
|
|
|
ck_assert_ptr_ne(errstr, NULL);
|
|
|
|
|
|
|
|
ck_assert_int_eq(cfg_set_server_port("8000", NULL), 0);
|
|
|
|
ck_assert_uint_eq(cfg_get_server_port(), 8000);
|
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
Suite *
|
|
|
|
cfg_suite(void)
|
|
|
|
{
|
|
|
|
Suite *s;
|
|
|
|
TCase *tc_core;
|
|
|
|
|
|
|
|
s = suite_create("Config");
|
|
|
|
|
|
|
|
tc_core = tcase_create("Core");
|
|
|
|
tcase_add_test(tc_core, test_stream_str2fmt);
|
|
|
|
tcase_add_test(tc_core, test_stream_fmt2str);
|
|
|
|
tcase_add_test(tc_core, test_file_check);
|
|
|
|
tcase_add_test(tc_core, test_program_name);
|
|
|
|
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_verbosity);
|
|
|
|
tcase_add_test(tc_core, test_server_protocol);
|
|
|
|
tcase_add_test(tc_core, test_server_hostname);
|
|
|
|
tcase_add_test(tc_core, test_server_port);
|
|
|
|
suite_add_tcase(s, tc_core);
|
|
|
|
|
|
|
|
return (s);
|
|
|
|
}
|
|
|
|
|
2015-05-06 17:45:52 -04:00
|
|
|
int
|
|
|
|
main(void)
|
|
|
|
{
|
2015-05-10 18:47:39 -04:00
|
|
|
unsigned int num_failed;
|
|
|
|
Suite *s;
|
|
|
|
SRunner *sr;
|
|
|
|
|
|
|
|
s = cfg_suite();
|
|
|
|
sr = srunner_create(s);
|
|
|
|
|
|
|
|
srunner_run_all(sr, CK_NORMAL);
|
|
|
|
num_failed = srunner_ntests_failed(sr);
|
|
|
|
srunner_free(sr);
|
|
|
|
|
|
|
|
cfg_exit();
|
|
|
|
|
|
|
|
if (num_failed)
|
|
|
|
return (1);
|
2015-05-06 17:45:52 -04:00
|
|
|
return (0);
|
|
|
|
}
|