1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
#include <check.h>
#include "cfg.h"
#include "log.h"
#include "playlist.h"
Suite * playlist_suite(void);
void setup_checked(void);
void teardown_checked(void);
START_TEST(test_playlist_file)
{
playlist_t p;
ck_assert_ptr_eq(playlist_read("nonexistent.txt"), NULL);
p = playlist_read(SRCDIR "/playlist.txt");
ck_assert_ptr_ne(p, NULL);
ck_assert_uint_gt(playlist_get_num_items(p), 0);
ck_assert_str_eq(playlist_get_next(p), "1.ogg");
playlist_skip_next(p);
ck_assert_uint_eq(playlist_get_position(p), 2);
ck_assert_str_eq(playlist_get_next(p), "3.ogg");
ck_assert_int_eq(playlist_goto_entry(p, "2.ogg"), 1);
ck_assert_str_eq(playlist_get_next(p), "2.ogg");
playlist_rewind(p);
ck_assert_str_eq(playlist_get_next(p), "1.ogg");
ck_assert_int_eq(playlist_goto_entry(p, "5.ogg"), 1);
ck_assert_int_eq(playlist_goto_entry(p, "6.ogg"), 0);
ck_assert_str_eq(playlist_get_next(p), "5.ogg");
ck_assert_ptr_eq(playlist_get_next(p), NULL);
ck_assert_int_eq(playlist_reread(&p), 1);
ck_assert_str_eq(playlist_get_next(p), "1.ogg");
ck_assert_str_eq(playlist_get_next(p), "2.ogg");
ck_assert_str_eq(playlist_get_next(p), "3.ogg");
ck_assert_str_eq(playlist_get_next(p), "4.ogg");
ck_assert_str_eq(playlist_get_next(p), "5.ogg");
ck_assert_ptr_eq(playlist_get_next(p), NULL);
playlist_shuffle(p);
playlist_free(&p);
p = playlist_read(SRCDIR "/playlist-bad.txt");
ck_assert_ptr_ne(p, NULL);
ck_assert_ptr_eq(playlist_get_next(p), NULL);
playlist_free(&p);
p = playlist_read(SRCDIR "/playlist-bad2.txt");
ck_assert_ptr_ne(p, NULL);
ck_assert_str_eq(playlist_get_next(p), "1.ogg");
playlist_free(&p);
}
END_TEST
START_TEST(test_playlist_program)
{
playlist_t p;
ck_assert_ptr_eq(playlist_program("nonexistent.sh"), NULL);
ck_assert_ptr_eq(playlist_program(SRCDIR "/playlist.txt"), NULL);
// p = playlist_program(SRCDIR "/bad-executable.sh");
// ck_assert_ptr_ne(p, NULL);
// ck_assert_ptr_eq(playlist_get_next(p), NULL);
// playlist_free(&p);
p = playlist_program(EXAMPLESDIR "/play.sh");
ck_assert_ptr_ne(p, NULL);
ck_assert_str_eq(playlist_get_next(p),
"Great_Artist_-_Great_Song.ogg");
ck_assert_uint_eq(playlist_get_num_items(p), 0);
ck_assert_uint_eq(playlist_get_position(p), 0);
ck_assert_int_eq(playlist_goto_entry(p,
"Great_Artist_-_Great_Song.ogg"), 0);
ck_assert_int_eq(playlist_reread(&p), 0);
playlist_rewind(p);
playlist_shuffle(p);
playlist_free(&p);
p = playlist_program(SRCDIR "/play-bad.sh");
ck_assert_ptr_ne(p, NULL);
ck_assert_ptr_eq(playlist_get_next(p), NULL);
playlist_free(&p);
p = playlist_program(SRCDIR "/play-bad2.sh");
ck_assert_ptr_ne(p, NULL);
ck_assert_ptr_eq(playlist_get_next(p), NULL);
playlist_free(&p);
p = playlist_program(SRCDIR "/play-bad3.sh");
ck_assert_ptr_ne(p, NULL);
ck_assert_ptr_eq(playlist_get_next(p), NULL);
playlist_free(&p);
}
END_TEST
START_TEST(test_playlist_free)
{
playlist_t p;
p = playlist_read(SRCDIR "/playlist.txt");
ck_assert_ptr_ne(p, NULL);
playlist_free(&p);
ck_assert_ptr_eq(p, NULL);
playlist_free(&p);
playlist_free(NULL);
}
END_TEST
Suite *
playlist_suite(void)
{
Suite *s;
TCase *tc_playlist;
s = suite_create("Playlist");
tc_playlist = tcase_create("Playlist");
tcase_add_checked_fixture(tc_playlist, setup_checked, teardown_checked);
tcase_add_test(tc_playlist, test_playlist_file);
tcase_add_test(tc_playlist, test_playlist_program);
tcase_add_test(tc_playlist, test_playlist_free);
suite_add_tcase(s, tc_playlist);
return (s);
}
void
setup_checked(void)
{
if (0 < cfg_init() ||
0 < cfg_set_program_name("check_playlist", NULL) ||
0 < log_init(cfg_get_program_name()) ||
0 < playlist_init())
ck_abort_msg("setup_checked failed");
}
void
teardown_checked(void)
{
playlist_exit();
}
int
main(void)
{
int num_failed;
Suite *s;
SRunner *sr;
s = playlist_suite();
sr = srunner_create(s);
srunner_run_all(sr, CK_NORMAL);
num_failed = srunner_ntests_failed(sr);
srunner_free(sr);
if (num_failed)
return (1);
return (0);
}
|