ocarina/tests/playlist.cpp

122 lines
3.1 KiB
C++

/*
* Copyright 2013 (c) Anna Schumaker.
*/
#include <core/library.h>
#include <core/playlist.h>
#include "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);
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 :: cp_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;
}