/* * Copyright 2013 (c) Anna Schumaker. */ #include #include #include #include static IndexEntry *IDX_NULL = NULL; static Queue *Q_NULL = NULL; static void test_init() { IndexEntry *ent; Queue *q = playlist :: get_queue(); test_not_equal(q, Q_NULL); test_equal(q->has_flag(Q_ENABLED), true); test_equal(q->has_flag(Q_REPEAT), true); test_equal(q->has_flag(Q_NO_SORT), true); /* init should work even if playlist.db doesn't exist! */ playlist :: init(); test :: cp_data_dir(); tags :: init(); library :: init(); playlist :: init(); ent = playlist :: get_tracks("Banned"); test_equal(ent->size(), (size_t)4); test_equal(library :: get_queue()->size(), (unsigned)20); ent = playlist :: get_tracks("Favorites"); test_equal(ent->size(), (size_t)8); ent = playlist :: get_tracks("No Such Playlist"); test_equal(ent, IDX_NULL); } static void test_queue() { Queue *q = playlist :: get_queue(); playlist :: select("Banned"); test_equal(q->size(), (unsigned)4); playlist :: select("Favorites"); test_equal(q->size(), (unsigned)8); } static void test_add() { IndexEntry *ent; Queue *q = playlist :: get_queue(); Queue *l = library :: get_queue(); playlist :: add(tags :: get_track(5), "Banned"); ent = playlist :: get_tracks("Banned"); test_equal(ent->size(), (size_t)5); test_equal(q->size(), (unsigned)8); test_equal(l->size(), (unsigned)19); playlist :: add(tags :: get_track(16), "Favorites"); playlist :: add(tags :: get_track(5), "Favorites"); ent = playlist :: get_tracks("Favorites"); test_equal(ent->size(), (size_t)9); test_equal(q->size(), (unsigned)9); playlist :: add(tags :: get_track(6), "No Playlist"); test_equal(playlist :: get_tracks("No Playlist"), IDX_NULL); } static void test_delete() { IndexEntry *ent; Queue *q = playlist :: get_queue(); Queue *l = library :: get_queue(); playlist :: del(tags :: get_track(5), "Banned"); ent = playlist :: get_tracks("Banned"); test_equal(ent->size(), (size_t)4); test_equal(q->size(), (unsigned)9); test_equal(l->size(), (unsigned)20); playlist :: del(tags :: get_track(5), "Favorites"); ent = playlist :: get_tracks("Favorites"); test_equal(ent->size(), (size_t)8); test_equal(q->size(), (unsigned)8); playlist :: del(tags :: get_track(6), "No Playlist"); test_equal(playlist :: get_tracks("No Playlist"), IDX_NULL); } static unsigned int _test_has_loop_banned(unsigned int i) { Track *track = tags :: get_track(i); bool has = playlist :: has(track, "Banned"); if (i <= 3) return has ? LOOP_PASSED : LOOP_FAILED; return has ? LOOP_FAILED : LOOP_PASSED; } static unsigned int _test_has_loop_favorites(unsigned int i) { Track *track = tags :: get_track(i); bool has = playlist :: has(track, "Favorites"); if (i >= 16) return has ? LOOP_PASSED : LOOP_FAILED; return has ? LOOP_FAILED : LOOP_PASSED; } static void test_has() { test_for_each(0, 24, 1, _test_has_loop_banned); test_for_each(0, 24, 1, _test_has_loop_favorites); } int main(int argc, char **argv) { test :: rm_data_dir(); test :: run("Playlist Initialization Test", test_init); test :: run("Playlist Queue Test", test_queue); test :: run("Playlist Add Test", test_add); test :: run("Playlist Delete Test", test_delete); test :: run("Playlist Has Test", test_has); return 0; }