/* * Copyright 2016 (c) Anna Schumaker. */ #include #include #include #include #include #include void test_library() { struct playlist *playlist; struct library *library; g_assert_null(playlist_new(PL_LIBRARY, "tests/Music/Hyrule Symphony/01 - Title Theme.ogg")); g_assert_null(playlist_get_queue(PL_LIBRARY, "tests/Music")); g_assert_false(playlist_select(PL_LIBRARY, "tests/Music")); playlist = playlist_new(PL_LIBRARY, "tests/Music"); g_assert_nonnull(playlist); g_assert_null(playlist_new(PL_LIBRARY, "tests/Music")); g_assert_nonnull(playlist_get_queue(PL_LIBRARY, "tests/Music")); g_assert_cmpuint(playlist_get_id(PL_LIBRARY, "tests/Music"), ==, 0); g_assert_cmpstr_free(playlist_get_name(PL_LIBRARY, 0), ==, "tests/Music"); g_assert_false(playlist_select(PL_LIBRARY, "tests/Music")); library = library_get(0); playlist = library->li_playlist; g_assert_nonnull(library); g_assert_nonnull(playlist); g_assert_cmpuint(playlist_size(playlist), ==, 0); while (idle_run_task()) {}; g_assert_cmpuint(playlist_size(playlist), ==, 48); g_assert_cmpuint(playlist_size(playlist_get(PL_SYSTEM, "Unplayed")), ==, 48); g_assert_cmpuint(playlist_size(playlist_get(PL_SYSTEM, "Collection")), ==, 48); g_assert(playlist_cur() != playlist_get(PL_LIBRARY, "tests/Music")); g_assert_true(playlist_select(PL_LIBRARY, "tests/Music")); g_assert_cmpuint(settings_get("core.playlist.cur.type"), ==, PL_LIBRARY); g_assert_cmpuint(settings_get("core.playlist.cur.id"), ==, 0); g_assert(playlist_cur() == playlist_get(PL_LIBRARY, "tests/Music")); g_assert_false(playlist_add(playlist, track_get(0))); g_assert_false(playlist_add(playlist, track_get(1))); g_assert_false(playlist_remove(playlist, track_get(0))); g_assert_false(playlist_remove(playlist, track_get(1))); pl_library_deinit(); g_assert_null(playlist_get_queue(PL_LIBRARY, "tests/Music")); g_assert_null(library->li_playlist); pl_library_init(NULL); while (idle_run_task()) {}; playlist = library->li_playlist; g_assert_nonnull(library->li_playlist); g_assert_nonnull(playlist_get_queue(PL_LIBRARY, "tests/Music")); g_assert_cmpuint(playlist_size(playlist), ==, 48); g_assert(playlist_get_queue(PL_LIBRARY, "tests/Music")); g_assert_false(playlist_add(playlist, track_get(0))); g_assert_false(playlist_add(playlist, track_get(1))); g_assert_false(playlist_remove(playlist, track_get(0))); g_assert_false(playlist_remove(playlist, track_get(1))); g_assert_cmpuint(playlist_size(playlist), ==, 48); g_assert_false(playlist_get_random(playlist)); playlist_set_random(playlist, true); g_assert_true(playlist_get_random(playlist)); playlist_set_random(playlist, false); g_assert_false(playlist_get_random(playlist)); g_assert_cmpuint(g_slist_length(playlist->pl_queue.q_sort), ==, 3); playlist_sort(PL_LIBRARY, "tests/Music", COMPARE_ARTIST, true); g_assert_cmpuint(g_slist_length(playlist->pl_queue.q_sort), ==, 1); playlist_sort(PL_LIBRARY, "tests/Music", COMPARE_YEAR, false); g_assert_cmpuint(g_slist_length(playlist->pl_queue.q_sort), ==, 2); playlist_sort(PL_LIBRARY, "tests/Music", COMPARE_TRACK, false); g_assert_cmpuint(g_slist_length(playlist->pl_queue.q_sort), ==, 3); g_rename("tests/Music/Hyrule Symphony/", "tests/Hyrule Symphony/"); playlist_update(PL_LIBRARY, "tests/Music"); while (idle_run_task()) {} g_assert_cmpuint(db_actual_size(track_db_get()), ==, 48); g_assert_cmpuint(track_db_get()->db_size, ==, 35); g_assert_cmpuint(playlist_size(playlist), ==, 35); g_rename("tests/Hyrule Symphony", "tests/Music/Hyrule Symphony/"); playlist_update(PL_LIBRARY, "tests/Music"); while (idle_run_task()) {} g_assert_cmpuint(db_actual_size(track_db_get()), ==, 61); g_assert_cmpuint(track_db_get()->db_size, ==, 48); g_assert_cmpuint(playlist_size(playlist), ==, 48); g_assert_true(playlist_delete(playlist)); g_assert_null(library_get(0)); g_assert_cmpuint(playlist_size(playlist_get(PL_SYSTEM, "Unplayed")), ==, 0); g_assert_cmpuint(playlist_size(playlist_get(PL_SYSTEM, "Collection")), ==, 0); g_assert_cmpuint(track_db_get()->db_size, ==, 0); } int main(int argc, char **argv) { int ret; idle_init_sync(); settings_init(); tags_init(); playlist_init(NULL); while (idle_run_task()) {}; g_test_init(&argc, &argv, NULL); g_test_add_func("/Core/Playlists/Library", test_library); ret = g_test_run(); playlist_deinit(); tags_deinit(); settings_deinit(); idle_deinit(); return ret; }