130 lines
3.3 KiB
C++
130 lines
3.3 KiB
C++
/*
|
|
* Copyright 2013 (c) Anna Schumaker.
|
|
*/
|
|
extern "C" {
|
|
#include <core/filter.h>
|
|
#include <core/tags/tags.h>
|
|
}
|
|
#include <core/library.h>
|
|
#include <core/playlist.h>
|
|
#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_cp_data_dir();
|
|
filter_init();
|
|
tags_init();
|
|
collection_init(NULL);
|
|
playlist :: init(NULL);
|
|
|
|
test_not_equal(q, Q_NULL);
|
|
test_equal(queue_has_flag(q, Q_ENABLED), true);
|
|
test_equal(queue_has_flag(q, Q_REPEAT), true);
|
|
test_equal(queue_has_flag(q, Q_NO_SORT), true);
|
|
|
|
ent = playlist :: get_tracks("Banned");
|
|
test_equal(set_size(&ent->ie_set), (size_t)4);
|
|
test_equal(queue_size(collection :: get_queue()), (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(queue_size(q), (unsigned)4);
|
|
|
|
playlist :: select("Favorites");
|
|
test_equal(queue_size(q), (unsigned)8);
|
|
|
|
playlist :: select("Unplayed");
|
|
test_equal(queue_size(q), (unsigned)3);
|
|
|
|
playlist :: select("Most Played");
|
|
test_equal(queue_size(q), (unsigned)10);
|
|
|
|
playlist :: select("Least Played");
|
|
test_equal(queue_size(q), (unsigned)12);
|
|
}
|
|
|
|
static void test_add()
|
|
{
|
|
index_entry *ent;
|
|
queue *q = playlist :: get_queue();
|
|
queue *l = collection :: get_queue();
|
|
|
|
playlist :: select("Favorites");
|
|
|
|
playlist :: add(track_get(5), "Banned");
|
|
ent = playlist :: get_tracks("Banned");
|
|
test_equal(set_size(&ent->ie_set), (size_t)5);
|
|
test_equal(queue_size(q), (unsigned)8);
|
|
test_equal(queue_size(l), (unsigned)19);
|
|
|
|
playlist :: add(track_get(16), "Favorites");
|
|
playlist :: add(track_get(5), "Favorites");
|
|
ent = playlist :: get_tracks("Favorites");
|
|
test_equal(set_size(&ent->ie_set), (size_t)9);
|
|
test_equal(queue_size(q), (unsigned)9);
|
|
|
|
playlist :: add(track_get(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(track_get(5), "Banned");
|
|
ent = playlist :: get_tracks("Banned");
|
|
test_equal(set_size(&ent->ie_set), (size_t)4);
|
|
test_equal(queue_size(q), (unsigned)9);
|
|
test_equal(queue_size(l), (unsigned)20);
|
|
|
|
playlist :: del(track_get(5), "Favorites");
|
|
ent = playlist :: get_tracks("Favorites");
|
|
test_equal(set_size(&ent->ie_set), (size_t)8);
|
|
test_equal(queue_size(q), (unsigned)8);
|
|
|
|
playlist :: del(track_get(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 = track_get(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 = track_get(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),
|
|
);
|