ocarina/tests/deck/deck.cpp

145 lines
2.8 KiB
C++
Raw Normal View History

/*
* Copyright 2013 (c) Anna Schumaker.
*/
#include <deck.h>
#include <idle.h>
#include <library.h>
#include <print.h>
void test_add_playlist(unsigned int size)
{
Playqueue *pqueue = deck :: create(false);
for (unsigned i = 0; i < size; i++)
pqueue->add(i);
}
/* Test creating a deck of playlists */
void test_0()
{
for (unsigned int i = 0; i < 10; i++)
test_add_playlist(10 + i);
print("Test 0:\n");
deck :: print_info();
print("\n");
}
/* Test removing playlists from the deck */
void test_1()
{
print("Test 1:\n");
deck :: remove(3);
deck :: remove(7);
deck :: remove(1);
deck :: remove(5);
deck :: print_info();
print("\n");
}
/* Get a specific playlist from the deck */
void test_2()
{
Playqueue *pqueue;
print("Test 2: ");
pqueue = deck :: get(3);
print("Playqueue { size = %u, flags = %u }", pqueue->size(), pqueue->get_flags());
print("\n\n");
}
/* Move a playlist to a new position in the deck */
void test_3()
{
print("Test 3:\n");
deck :: move(4, 0);
deck :: print_info();
print("\n");
deck :: move(5, 1);
deck :: print_info();
print("\n");
deck :: move(2, 5);
deck :: print_info();
print("\n");
deck :: move(3, 4);
deck :: print_info();
print("\n");
deck :: move(4, 3);
deck :: print_info();
print("\n");
deck :: move(4, 4);
deck :: print_info();
print("\n");
}
/* Test the next() function for playlists */
void test_4()
{
print("Test 4:\n");
deck :: get(0)->unset_flag(PQ_ENABLED);
deck :: get(1)->unset_flag(PQ_ENABLED);
deck :: get(4)->unset_flag(PQ_ENABLED);
for (unsigned int i = 0; i < 40; i++) {
print("Playing id: %u\n", deck :: next());
if (i == 11 || i == 25)
deck :: print_info();
}
deck :: print_info();
print("\n");
}
/* Test load / save functions */
void test_5()
{
print("Test 5:\n");
deck :: get(1)->set_flag(PQ_ENABLED);
deck :: get(2)->set_flag(PQ_ENABLED);
deck :: get(2)->set_flag(PQ_RANDOM);
print("Saving playqueue deck\n");
deck :: write();
print("Clearing deck\n");
deck :: reset();
deck :: print_info();
print("Reading back playqueue deck\n");
deck :: init();
deck :: print_info();
}
int main(int argc, char **argv)
{
library :: init();
deck :: init();
library :: reset();
library :: add_path("/tmp/library/0");
while (idle :: run_task());
print("Library size: %u\n", deck :: get_library_pq()->size());
test_0();
test_1();
test_2();
test_3();
test_4();
test_5();
print("Disabling library path\n");
library :: set_enabled(0, false);
print("Library size: %u\n", deck :: get_library_pq()->size());
print("Enabling library path\n");
library :: set_enabled(0, true);
print("Library size: %u\n", deck :: get_library_pq()->size());
print("Deleting library path\n");
library :: del_path(0);
while (idle :: run_task());
print("Library size: %u\n", deck :: get_library_pq()->size());
return 0;
}