/* * Copyright 2013 (c) Anna Schumaker. */ #include #include #include #include #include "test.h" static index_entry *IDX_NULL = NULL; static Queue *Q_NULL = NULL; static void test_init() { index_entry *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(); filter_init(); tags :: init(); collection :: init(); playlist :: init(); ent = playlist :: get_tracks("Banned"); test_equal(set_size(&ent->ie_set), (size_t)4); test_equal(collection :: get_queue()->size(), (unsigned)20); ent = playlist :: get_tracks("Favorites"); test_equal(set_size(&ent->ie_set), (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); playlist :: select("Unplayed"); test_equal(q->size(), (unsigned)3); playlist :: select("Most Played"); test_equal(q->size(), (unsigned)10); playlist :: select("Least Played"); test_equal(q->size(), (unsigned)12); } static void test_add() { index_entry *ent; Queue *q = playlist :: get_queue(); Queue *l = collection :: get_queue(); playlist :: select("Favorites"); playlist :: add(tags :: get_track(5), "Banned"); ent = playlist :: get_tracks("Banned"); test_equal(set_size(&ent->ie_set), (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(set_size(&ent->ie_set), (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() { index_entry *ent; Queue *q = playlist :: get_queue(); Queue *l = collection :: get_queue(); playlist :: del(tags :: get_track(5), "Banned"); ent = playlist :: get_tracks("Banned"); test_equal(set_size(&ent->ie_set), (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(set_size(&ent->ie_set), (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 void test_has() { struct track *track; for (unsigned int i = 0; i < 24; i++) { track = tags :: get_track(i); test_loop_equal(playlist :: has(track, "Banned"), (i <= 3) ? true : false, i); } test_loop_passed(); for (unsigned int i = 0; i < 24; i++) { track = tags :: get_track(i); test_loop_equal(playlist :: has(track, "Favorites"), (i >= 16) ? true : false, i); } test_loop_passed(); } DECLARE_UNIT_TESTS( UNIT_TEST("Playlist Init", test_init), UNIT_TEST("Playlist Queue", test_queue), UNIT_TEST("Playlist Add", test_add), UNIT_TEST("Playlist Delete", test_delete), UNIT_TEST("Playlist Has", test_has), );