2013-12-22 17:24:09 -05:00
|
|
|
/*
|
|
|
|
* Copyright 2013 (c) Anna Schumaker.
|
|
|
|
*/
|
|
|
|
#include <playlist.h>
|
|
|
|
#include <print.h>
|
|
|
|
|
2013-12-22 20:53:06 -05:00
|
|
|
#include <stdlib.h>
|
2013-12-22 17:24:09 -05:00
|
|
|
#include <string>
|
|
|
|
|
|
|
|
void test_flags(const std :: string &test, Playlist &plist, unsigned int expected)
|
|
|
|
{
|
2013-12-22 17:53:58 -05:00
|
|
|
print("Test %s: ", test.c_str());
|
2013-12-22 17:24:09 -05:00
|
|
|
if (plist.get_flags() == expected)
|
|
|
|
print("SUCCESS\n");
|
|
|
|
else
|
|
|
|
print("FAILED\n");
|
|
|
|
}
|
|
|
|
|
2013-12-22 17:53:58 -05:00
|
|
|
void test_add_tracks(const std :: string & test, Playlist &plist,
|
|
|
|
unsigned int start, unsigned int end)
|
|
|
|
{
|
|
|
|
bool passed = true;
|
|
|
|
print("Test %s: ", test.c_str());
|
|
|
|
for (unsigned int i = start; i <= end; i++) {
|
|
|
|
if (plist.add(i) != (i - start))
|
|
|
|
passed = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (passed == true)
|
|
|
|
print("SUCCESS\n");
|
|
|
|
else
|
|
|
|
print("FAILED\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
void test_rm_tracks(const std :: string & test, Playlist & plist, unsigned int n)
|
|
|
|
{
|
|
|
|
unsigned int size = plist.size();
|
|
|
|
unsigned int expected = size - n;
|
|
|
|
|
|
|
|
print("Test %s: ", test.c_str());
|
|
|
|
|
|
|
|
for (unsigned int i = 0; i < n; i++)
|
|
|
|
plist.del(i);
|
|
|
|
|
|
|
|
if (plist.size() == expected)
|
|
|
|
print("SUCCESS\n");
|
|
|
|
else
|
|
|
|
print("FAILED\n");
|
|
|
|
}
|
|
|
|
|
2013-12-22 17:24:09 -05:00
|
|
|
/* Test flag setting / unsetting / getting */
|
|
|
|
void test_0()
|
|
|
|
{
|
|
|
|
Playlist plist(PL_ENABLED);
|
|
|
|
|
|
|
|
test_flags("0a", plist, PL_ENABLED);
|
|
|
|
plist.set_flag(PL_RANDOM);
|
|
|
|
test_flags("0b", plist, PL_ENABLED | PL_RANDOM);
|
|
|
|
plist.set_flag(PL_ENABLED);
|
|
|
|
test_flags("0c", plist, PL_ENABLED | PL_RANDOM);
|
|
|
|
plist.unset_flag(PL_ENABLED);
|
|
|
|
test_flags("0d", plist, PL_RANDOM);
|
|
|
|
plist.unset_flag(PL_RANDOM);
|
|
|
|
test_flags("0f", plist, 0);
|
|
|
|
print("\n");
|
|
|
|
}
|
|
|
|
|
2013-12-22 17:53:58 -05:00
|
|
|
/* Test adding / deleting / size queries */
|
|
|
|
void test_1()
|
|
|
|
{
|
|
|
|
Playlist plist(PL_ENABLED);
|
|
|
|
test_add_tracks("1a", plist, 10, 49);
|
|
|
|
print("Test 1b: Plist size: %u\n", plist.size());
|
|
|
|
test_rm_tracks("1c", plist, 10);
|
2013-12-22 18:12:57 -05:00
|
|
|
print("\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Test read / write */
|
|
|
|
void test_2()
|
|
|
|
{
|
|
|
|
Playlist plist(PL_ENABLED);
|
|
|
|
Playlist plist2(PL_ENABLED);
|
|
|
|
|
|
|
|
File f("plist.lst", FILE_TYPE_DATA);
|
|
|
|
|
|
|
|
plist.set_flag(PL_RANDOM);
|
|
|
|
test_add_tracks("2a", plist, 0, 99);
|
|
|
|
|
|
|
|
f.open(OPEN_WRITE);
|
|
|
|
plist.write(f);
|
|
|
|
f.close();
|
|
|
|
|
|
|
|
f.open(OPEN_READ);
|
|
|
|
plist2.read(f);
|
|
|
|
f.close();
|
|
|
|
|
|
|
|
print("Test 2b: ");
|
|
|
|
if (plist.get_flags() != plist2.get_flags()) {
|
|
|
|
print("FAILED: flag mismatch\n");
|
|
|
|
return;
|
|
|
|
} else if (plist.size() != plist2.size()) {
|
|
|
|
print("FAILED: size mismatch\n");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2013-12-22 20:53:06 -05:00
|
|
|
print("SUCCESS\n\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Sequential next() without removing tracks */
|
|
|
|
void test_3()
|
|
|
|
{
|
|
|
|
Playlist plist(PL_ENABLED);
|
|
|
|
plist.set_flag(PL_LOCKED);
|
|
|
|
test_add_tracks("3", plist, 0, 15);
|
|
|
|
for (unsigned int i = 0; i < 20; i++)
|
|
|
|
print("Selecting id: %u\n", plist.next());
|
|
|
|
print("\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Sequential next() with removal */
|
|
|
|
void test_4()
|
|
|
|
{
|
|
|
|
Playlist plist(PL_ENABLED);
|
|
|
|
test_add_tracks("4", plist, 0, 15);
|
|
|
|
while (plist.size() > 0)
|
|
|
|
print("Selecting id: %u\n", plist.next());
|
|
|
|
print("\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Random next() without removing tracks */
|
|
|
|
void test_5()
|
|
|
|
{
|
|
|
|
Playlist plist(PL_ENABLED);
|
|
|
|
plist.set_flag(PL_RANDOM);
|
|
|
|
plist.set_flag(PL_LOCKED);
|
|
|
|
test_add_tracks("5", plist, 0, 15);
|
|
|
|
for (unsigned int i = 0; i < 30; i++)
|
|
|
|
print("Selecting id: %u\n", plist.next());
|
|
|
|
print("\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Random next() with removal */
|
|
|
|
void test_6()
|
|
|
|
{
|
|
|
|
Playlist plist(PL_ENABLED);
|
|
|
|
plist.set_flag(PL_RANDOM);
|
|
|
|
test_add_tracks("6", plist, 0, 15);
|
|
|
|
while (plist.size() > 0)
|
|
|
|
print("Selecting id: %u\n", plist.next());
|
2013-12-22 17:53:58 -05:00
|
|
|
}
|
|
|
|
|
2013-12-22 17:24:09 -05:00
|
|
|
int main(int argc, char **argv)
|
|
|
|
{
|
2013-12-22 20:53:06 -05:00
|
|
|
srand(42);
|
|
|
|
|
2013-12-22 17:24:09 -05:00
|
|
|
test_0();
|
2013-12-22 17:53:58 -05:00
|
|
|
test_1();
|
2013-12-22 18:12:57 -05:00
|
|
|
test_2();
|
2013-12-22 20:53:06 -05:00
|
|
|
test_3();
|
|
|
|
test_4();
|
|
|
|
test_5();
|
|
|
|
test_6();
|
2013-12-22 17:24:09 -05:00
|
|
|
return 0;
|
|
|
|
}
|