c88746d2da
I move all of the core tests into the core/ directory to keep them together. Gui unit tests will be put in new directories. Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
126 lines
3.2 KiB
C++
126 lines
3.2 KiB
C++
/*
|
|
* Copyright 2013 (c) Anna Schumaker.
|
|
*/
|
|
#include <core/library.h>
|
|
#include <core/playlist.h>
|
|
#include <tests/test.h>
|
|
|
|
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();
|
|
tagdb :: init();
|
|
library :: init();
|
|
playlist :: init();
|
|
|
|
ent = playlist :: get_tracks("Banned");
|
|
test_equal(ent->values.size(), (size_t)4);
|
|
test_equal(library :: get_queue()->size(), (unsigned)20);
|
|
ent = playlist :: get_tracks("Favorites");
|
|
test_equal(ent->values.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(tagdb :: lookup(5), "Banned");
|
|
ent = playlist :: get_tracks("Banned");
|
|
test_equal(ent->values.size(), (size_t)5);
|
|
test_equal(q->size(), (unsigned)8);
|
|
test_equal(l->size(), (unsigned)19);
|
|
|
|
playlist :: add(tagdb :: lookup(16), "Favorites");
|
|
playlist :: add(tagdb :: lookup(5), "Favorites");
|
|
ent = playlist :: get_tracks("Favorites");
|
|
test_equal(ent->values.size(), (size_t)9);
|
|
test_equal(q->size(), (unsigned)9);
|
|
|
|
playlist :: add(tagdb :: lookup(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(tagdb :: lookup(5), "Banned");
|
|
ent = playlist :: get_tracks("Banned");
|
|
test_equal(ent->values.size(), (size_t)4);
|
|
test_equal(q->size(), (unsigned)9);
|
|
test_equal(l->size(), (unsigned)20);
|
|
|
|
playlist :: del(tagdb :: lookup(5), "Favorites");
|
|
ent = playlist :: get_tracks("Favorites");
|
|
test_equal(ent->values.size(), (size_t)8);
|
|
test_equal(q->size(), (unsigned)8);
|
|
|
|
playlist :: del(tagdb :: lookup(6), "No Playlist");
|
|
test_equal(playlist :: get_tracks("No Playlist"), IDX_NULL);
|
|
}
|
|
|
|
static void test_has()
|
|
{
|
|
test :: begin();
|
|
for (unsigned int i = 0; i < 24; i++) {
|
|
Track *track = tagdb :: lookup(i);
|
|
if (i <= 3)
|
|
check_equal(playlist :: has(track, "Banned"), true);
|
|
else
|
|
check_equal(playlist :: has(track, "Banned"), false);
|
|
}
|
|
test :: success();
|
|
|
|
test :: begin();
|
|
for (unsigned int i = 0; i < 24; i++) {
|
|
Track *track = tagdb :: lookup(i);
|
|
if (i >= 16)
|
|
check_equal(playlist :: has(track, "Favorites"), true);
|
|
else
|
|
check_equal(playlist :: has(track, "Favorites"), false);
|
|
}
|
|
test :: success();
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
test :: rm_data_dir();
|
|
|
|
run_test("Playlist Initialization Test", test_init);
|
|
run_test("Playlist Queue Test", test_queue);
|
|
run_test("Playlist Add Test", test_add);
|
|
run_test("Playlist Delete Test", test_delete);
|
|
run_test("Playlist Has Test", test_has);
|
|
return 0;
|
|
}
|