ocarina/tests/core/playlist.c
Anna Schumaker cfeca9ae4b core/playlist: Add playlist_type enum
I'm going to use this to distinguish between various playlist types that
are about to be added.  Let's update the playlist functions first, and
then add more types in a future patch.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-08-13 08:31:30 -04:00

121 lines
4.7 KiB
C

/*
* Copyright 2013 (c) Anna Schumaker.
*/
#include <core/filter.h>
#include <core/idle.h>
#include <core/playlist.h>
#include <core/tags/tags.h>
#include <tests/test.h>
static void test_init()
{
struct queue *q = playlist_get_queue(PL_SYSTEM, "Most Played");
struct library *library;
GSList *list;
idle_init_sync();
filter_init();
tags_init();
playlist_init(NULL);
while (idle_run_task()) {};
test_not_equal((void *)playlist_get_queue(PL_SYSTEM, "Favorites"), NULL);
test_not_equal((void *)playlist_get_queue(PL_SYSTEM, "Hidden"), NULL);
test_not_equal((void *)playlist_get_queue(PL_SYSTEM, "Unplayed"), NULL);
test_not_equal((void *)playlist_get_queue(PL_SYSTEM, "Most Played"), NULL);
test_not_equal((void *)playlist_get_queue(PL_SYSTEM, "Least Played"), NULL);
test_not_equal((void *)q, NULL);
test_equal(queue_has_flag(q, Q_ENABLED), (bool)true);
test_equal(queue_has_flag(q, Q_REPEAT), (bool)true);
test_equal(queue_has_flag(q, Q_NO_SORT), (bool)false);
test_equal(queue_size(q), 0);
list = q->q_sort;
test_equal(g_slist_length(q->q_sort), 3);
test_equal(GPOINTER_TO_INT(list->data), COMPARE_ARTIST);
list = g_slist_next(list);
test_equal(GPOINTER_TO_INT(list->data), COMPARE_YEAR);
list = g_slist_next(list);
test_equal(GPOINTER_TO_INT(list->data), COMPARE_TRACK);
/* Add tracks to the collection. */
library = library_find("tests/Music");
track_add(library, "tests/Music/Hyrule Symphony/01 - Title Theme.ogg");
track_add(library, "tests/Music/Hyrule Symphony/02 - Kokiri Forest.ogg");
track_add(library, "tests/Music/Hyrule Symphony/03 - Hyrule Field.ogg");
track_add(library, "tests/Music/Hyrule Symphony/04 - Hyrule Castle.ogg");
track_add(library, "tests/Music/Hyrule Symphony/05 - Lon Lon Ranch.ogg");
track_add(library, "tests/Music/Hyrule Symphony/06 - Kakariko Village.ogg");
track_add(library, "tests/Music/Hyrule Symphony/07 - Death Mountain.ogg");
track_add(library, "tests/Music/Hyrule Symphony/08 - Zora's Domain.ogg");
track_add(library, "tests/Music/Hyrule Symphony/09 - Gerudo Valley.ogg");
track_add(library, "tests/Music/Hyrule Symphony/10 - Ganondorf.ogg");
track_add(library, "tests/Music/Hyrule Symphony/11 - Princess Zelda.ogg");
track_add(library, "tests/Music/Hyrule Symphony/12 - Ocarina Medley.ogg");
track_add(library,
"tests/Music/Hyrule Symphony/13 - The Legend of Zelda Medley.ogg");
}
static void test_add()
{
struct track *track = track_get(0);
test_equal(playlist_add(PL_SYSTEM, "Favorites", NULL), (bool)false);
test_equal(playlist_has(PL_SYSTEM, "Favorites", NULL), (bool)false);
test_equal(playlist_has(PL_SYSTEM, "Favorites", track), (bool)false);
test_equal(playlist_add(PL_SYSTEM, "Favorites", track), (bool)true);
test_equal(playlist_has(PL_SYSTEM, "Favorites", track), (bool)true);
test_equal(playlist_size(PL_SYSTEM, "Favorites"), 1);
test_equal(playlist_add(PL_SYSTEM, "Favorites", track), (bool)false);
test_equal(playlist_size(PL_SYSTEM, "Favorites"), 1);
test_equal(playlist_add(PL_SYSTEM, "Favorites", track_get(1)), (bool)true);
test_equal(playlist_size(PL_SYSTEM, "Favorites"), 2);
track = track_get(2);
test_equal(playlist_has(PL_SYSTEM, "Hidden", track), (bool)false);
test_equal(playlist_add(PL_SYSTEM, "Hidden", track), (bool)true);
test_equal(playlist_has(PL_SYSTEM, "Hidden", track), (bool)true);
test_equal(playlist_size(PL_SYSTEM, "Hidden"), 1);
}
static void test_remove()
{
struct track *track = track_get(0);
/* The important thing here is that we don't crash */
test_equal(playlist_remove(PL_SYSTEM, "Favorites", NULL), (bool)false);
test_equal(playlist_size(PL_SYSTEM, "Favorites"), 2);
test_equal(playlist_has(PL_SYSTEM, "Favorites", track), (bool)true);
test_equal(playlist_remove(PL_SYSTEM, "Favorites", track), (bool)true);
test_equal(playlist_has(PL_SYSTEM, "Favorites", track), (bool)false);
test_equal(playlist_size(PL_SYSTEM, "Favorites"), 1);
test_equal(playlist_remove(PL_SYSTEM, "Favorites", track), (bool)false);
test_equal(playlist_size(PL_SYSTEM, "Favorites"), 1);
test_equal(playlist_remove(PL_SYSTEM, "Favorites", track_get(1)), (bool)true);
test_equal(playlist_size(PL_SYSTEM, "Favorites"), 0);
track = track_get(2);
test_equal(playlist_size(PL_SYSTEM, "Hidden"), 1);
test_equal(playlist_has(PL_SYSTEM, "Hidden", track), (bool)true);
test_equal(playlist_remove(PL_SYSTEM, "Hidden", track), (bool)true);
test_equal(playlist_has(PL_SYSTEM, "Hidden", track), (bool)false);
test_equal(playlist_size(PL_SYSTEM, "Hidden"), 0);
}
static void test_deinit()
{
playlist_deinit();
tags_deinit();
filter_deinit();
}
DECLARE_UNIT_TESTS(
UNIT_TEST("Playlist Initialization", test_init),
UNIT_TEST("Playlist Add Track", test_add),
UNIT_TEST("Playlist Remove Track", test_remove),
UNIT_TEST("Playlist Deinit", test_deinit),
);