2013-12-22 22:21:19 -05:00
|
|
|
/*
|
|
|
|
* Copyright 2013 (c) Anna Schumaker.
|
|
|
|
*/
|
2014-06-05 10:19:22 -04:00
|
|
|
#include <core/deck.h>
|
2015-11-10 10:19:45 -05:00
|
|
|
extern "C" {
|
2015-12-07 09:35:58 -05:00
|
|
|
#include <core/collection.h>
|
2015-09-29 16:25:16 -04:00
|
|
|
#include <core/filter.h>
|
2015-11-12 10:42:21 -05:00
|
|
|
#include <core/tags/tags.h>
|
2015-11-10 10:19:45 -05:00
|
|
|
}
|
2015-08-31 08:17:07 -04:00
|
|
|
#include "test.h"
|
2014-05-26 19:10:24 -04:00
|
|
|
|
2015-11-16 09:12:15 -05:00
|
|
|
static queue *Q_NULL = NULL;
|
2015-10-24 19:34:45 -04:00
|
|
|
static struct track *TRACK_NULL = NULL;
|
2014-05-26 19:10:24 -04:00
|
|
|
|
2014-05-26 22:20:07 -04:00
|
|
|
static void test_init()
|
2014-05-26 19:10:24 -04:00
|
|
|
{
|
2014-05-26 22:20:07 -04:00
|
|
|
unsigned int val;
|
2015-09-10 10:33:24 -04:00
|
|
|
file f;
|
2014-05-31 09:09:44 -04:00
|
|
|
std::list<TempQueue>::iterator it;
|
2014-05-26 19:10:24 -04:00
|
|
|
|
2014-06-01 09:38:12 -04:00
|
|
|
test_equal(deck :: next(), TRACK_NULL);
|
|
|
|
|
2015-08-31 08:17:07 -04:00
|
|
|
test_cp_data_dir();
|
2015-09-29 16:25:16 -04:00
|
|
|
filter_init();
|
2015-11-12 10:24:27 -05:00
|
|
|
tags_init();
|
2015-12-05 08:55:24 -05:00
|
|
|
collection_init(NULL);
|
2015-11-29 19:45:39 -05:00
|
|
|
deck :: init(NULL, NULL);
|
2014-06-01 09:38:12 -04:00
|
|
|
|
2015-12-05 12:12:01 -05:00
|
|
|
test_equal(queue_has_flag(collection_get_queue(), Q_RANDOM), true);
|
2014-05-26 22:20:07 -04:00
|
|
|
test_equal(deck :: get_queues().size(), (size_t)2);
|
|
|
|
|
|
|
|
it = deck :: get_queues().begin();
|
2015-11-19 13:48:59 -05:00
|
|
|
test_equal(queue_size(&(*it)), (unsigned)4);
|
2014-05-26 22:20:07 -04:00
|
|
|
for (unsigned int i = 0; i < 4; i++)
|
2015-11-19 13:50:08 -05:00
|
|
|
test_equal(queue_at(&(*it), i)->tr_dbe.dbe_index, i);
|
2014-05-26 22:20:07 -04:00
|
|
|
|
|
|
|
it++;
|
2015-11-19 13:48:59 -05:00
|
|
|
test_equal(queue_size(&(*it)), (unsigned)5);
|
2014-05-26 22:20:07 -04:00
|
|
|
for (unsigned int i = 0; i < 5; i++)
|
2015-11-19 13:50:08 -05:00
|
|
|
test_equal(queue_at(&(*it), i)->tr_dbe.dbe_index, i + 4);
|
2014-05-26 22:20:07 -04:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Test that we saved the deck in the new format
|
|
|
|
*/
|
2015-09-10 10:33:24 -04:00
|
|
|
file_init(&f, "deck", 0);
|
2015-09-10 09:46:33 -04:00
|
|
|
file_open(&f, OPEN_READ);
|
2015-09-10 08:10:38 -04:00
|
|
|
test_equal(file_version(&f), (unsigned)1);
|
2015-10-08 11:16:38 -04:00
|
|
|
file_readf(&f, "%u", &val);
|
2014-05-26 22:20:07 -04:00
|
|
|
test_equal(val, (unsigned)2);
|
|
|
|
|
|
|
|
for (unsigned int i = 0; i < 2; i++) {
|
2015-10-08 11:16:38 -04:00
|
|
|
file_readf(&f, "%u", &val); /* queues[i].flags */
|
2014-05-26 22:20:07 -04:00
|
|
|
test_equal(val, (unsigned)1);
|
|
|
|
|
2015-10-08 11:16:38 -04:00
|
|
|
file_readf(&f, "%u", &val); /* queues[i].size */
|
2014-05-26 22:20:07 -04:00
|
|
|
test_equal(val, 4 + i);
|
|
|
|
|
|
|
|
for (unsigned int j = 0; j < 4 + i; j++) {
|
2015-10-08 11:16:38 -04:00
|
|
|
file_readf(&f, "%u", &val);
|
2014-05-26 22:20:07 -04:00
|
|
|
test_equal(val, (4 * i) + j);
|
|
|
|
}
|
|
|
|
}
|
2013-12-22 22:21:19 -05:00
|
|
|
|
2015-09-10 09:12:48 -04:00
|
|
|
file_close(&f);
|
2013-12-22 22:21:19 -05:00
|
|
|
}
|
2014-05-26 22:20:07 -04:00
|
|
|
|
|
|
|
static void test_create_mv_destroy()
|
2013-12-22 22:21:19 -05:00
|
|
|
{
|
2015-11-16 09:12:15 -05:00
|
|
|
queue *q1, *q2;
|
2014-05-26 22:20:07 -04:00
|
|
|
|
2015-11-24 09:08:20 -05:00
|
|
|
q1 = deck :: create(true, NULL);
|
2014-05-26 22:20:07 -04:00
|
|
|
test_not_equal(q1, Q_NULL);
|
2015-11-20 08:18:54 -05:00
|
|
|
test_equal(queue_has_flag(q1, Q_ENABLED), true);
|
|
|
|
test_equal(queue_has_flag(q1, Q_RANDOM), true);
|
2014-05-26 22:20:07 -04:00
|
|
|
test_equal(deck :: index(q1), (unsigned)2);
|
2014-06-05 11:04:55 -04:00
|
|
|
test_equal(deck :: get(2), q1);
|
2014-05-26 22:20:07 -04:00
|
|
|
|
2015-11-24 09:08:20 -05:00
|
|
|
q2 = deck :: create(false, NULL);
|
2014-05-26 22:20:07 -04:00
|
|
|
test_not_equal(q2, Q_NULL);
|
2015-11-20 08:18:54 -05:00
|
|
|
test_equal(queue_has_flag(q2, Q_ENABLED), true);
|
|
|
|
test_equal(queue_has_flag(q2, Q_RANDOM), false);
|
2014-05-26 22:20:07 -04:00
|
|
|
test_equal(deck :: index(q2), (unsigned)3);
|
2014-06-05 11:04:55 -04:00
|
|
|
test_equal(deck :: get(3), q2);
|
2014-05-26 22:20:07 -04:00
|
|
|
|
|
|
|
deck :: move(q1, 3);
|
|
|
|
test_equal(deck :: index(q1), (unsigned)3);
|
|
|
|
deck :: move(q1, 3);
|
|
|
|
test_equal(deck :: index(q1), (unsigned)3);
|
|
|
|
deck :: move(q1, 2);
|
|
|
|
test_equal(deck :: index(q1), (unsigned)2);
|
|
|
|
|
|
|
|
deck :: destroy(q1);
|
|
|
|
test_equal(deck :: index(q1), (unsigned)3);
|
|
|
|
test_equal(deck :: index(q2), (unsigned)2);
|
|
|
|
|
|
|
|
deck :: destroy(q2);
|
|
|
|
test_equal(deck :: index(q2), (unsigned)2);
|
2014-06-05 11:04:55 -04:00
|
|
|
|
|
|
|
test_equal(deck :: get(3), Q_NULL);
|
2013-12-22 22:21:19 -05:00
|
|
|
}
|
|
|
|
|
2014-05-26 22:20:07 -04:00
|
|
|
static void test_next_prev()
|
2013-12-23 10:22:37 -05:00
|
|
|
{
|
2014-05-31 09:09:44 -04:00
|
|
|
std::list<TempQueue>::iterator it = deck :: get_queues().begin();
|
2015-11-16 09:12:15 -05:00
|
|
|
queue *q = deck :: get_queue();
|
2015-11-23 08:36:29 -05:00
|
|
|
queue *q0 = deck :: get(0);
|
|
|
|
queue *q1 = deck :: get(1);
|
2014-05-26 22:20:07 -04:00
|
|
|
|
2015-12-03 13:41:39 -05:00
|
|
|
queue_unset_flag(q0, Q_RANDOM);
|
2014-05-26 22:20:07 -04:00
|
|
|
for (unsigned int i = 0; i < 4; i++)
|
2015-11-25 08:24:04 -05:00
|
|
|
queue_add(q0, track_get(i));
|
2014-05-26 22:20:07 -04:00
|
|
|
|
|
|
|
test_not_equal(q, Q_NULL);
|
2015-11-19 13:48:59 -05:00
|
|
|
test_equal(queue_size(q), (unsigned)0);
|
2014-05-26 22:20:07 -04:00
|
|
|
test_equal(deck :: prev(), TRACK_NULL);
|
|
|
|
|
|
|
|
for (unsigned int i = 0; i < 2; i++) {
|
2015-11-12 08:41:46 -05:00
|
|
|
test_equal(deck :: next()->tr_dbe.dbe_index, (unsigned)0);
|
|
|
|
test_equal(deck :: next()->tr_dbe.dbe_index, (unsigned)1);
|
|
|
|
test_equal(deck :: next()->tr_dbe.dbe_index, (unsigned)2);
|
|
|
|
test_equal(deck :: next()->tr_dbe.dbe_index, (unsigned)3);
|
2015-11-19 13:48:59 -05:00
|
|
|
test_equal(queue_size(q), (unsigned)4);
|
2013-12-23 10:22:37 -05:00
|
|
|
}
|
|
|
|
|
2014-05-26 22:20:07 -04:00
|
|
|
for (unsigned int i = 0; i < 2; i++) {
|
|
|
|
if (i == 1)
|
2015-11-12 08:41:46 -05:00
|
|
|
test_equal(deck :: prev()->tr_dbe.dbe_index, (unsigned)3);
|
|
|
|
test_equal(deck :: prev()->tr_dbe.dbe_index, (unsigned)2);
|
|
|
|
test_equal(deck :: prev()->tr_dbe.dbe_index, (unsigned)1);
|
|
|
|
test_equal(deck :: prev()->tr_dbe.dbe_index, (unsigned)0);
|
2014-05-26 22:20:07 -04:00
|
|
|
}
|
2013-12-23 10:37:22 -05:00
|
|
|
|
2014-05-26 22:20:07 -04:00
|
|
|
test_equal(deck :: get_queues().size(), (size_t)1);
|
|
|
|
test_equal(deck :: index(q1), (unsigned)0);
|
2013-12-23 10:37:22 -05:00
|
|
|
|
2015-12-03 13:41:39 -05:00
|
|
|
queue_unset_flag(q1, Q_ENABLED);
|
2015-12-05 12:12:01 -05:00
|
|
|
queue_unset_flag(collection_get_queue(), Q_RANDOM);
|
2013-12-23 10:37:22 -05:00
|
|
|
|
2015-11-19 13:48:59 -05:00
|
|
|
test_equal(queue_size(q1), (unsigned)5);
|
2014-05-26 22:20:07 -04:00
|
|
|
deck :: next();
|
2015-11-19 13:48:59 -05:00
|
|
|
test_equal(queue_size(q1), (unsigned)5);
|
2013-12-23 10:37:22 -05:00
|
|
|
|
2015-12-03 13:41:39 -05:00
|
|
|
queue_set_flag(q1, Q_ENABLED);
|
2014-05-26 22:20:07 -04:00
|
|
|
for (unsigned int i = 0; i < 5; i++)
|
|
|
|
deck :: next();
|
|
|
|
test_equal(deck :: get_queues().size(), (size_t)0);
|
2013-12-23 10:22:37 -05:00
|
|
|
}
|
|
|
|
|
2015-08-31 08:17:07 -04:00
|
|
|
DECLARE_UNIT_TESTS(
|
|
|
|
UNIT_TEST("Deck Init", test_init),
|
|
|
|
UNIT_TEST("Deck Create, Move, and Destroy", test_create_mv_destroy),
|
|
|
|
UNIT_TEST("Deck Next and Prev", test_next_prev),
|
|
|
|
);
|