playlist: Implement playlist modification functions
I can now add and remove tracks, in addition to asking for the playlist size. Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
This commit is contained in:
parent
2d13b74c12
commit
3a478ddba7
|
@ -25,16 +25,16 @@ Playlist: (lib/playlist.cpp)
|
|||
unsigned int flags;
|
||||
public:
|
||||
Playlist(flags);
|
||||
unsigned int add(track_id);
|
||||
void del(playlist_id);
|
||||
unsigned int size();
|
||||
void write(File &);
|
||||
void read(File &);
|
||||
|
||||
void set_flag(playlist_flags);
|
||||
void unset_flag(playlist_flags);
|
||||
const unsigned int get_flags();
|
||||
|
||||
void write(File &);
|
||||
void read(File &);
|
||||
unsigned int add(track_id);
|
||||
void del(playlist_id);
|
||||
unsigned int size();
|
||||
|
||||
void sort();
|
||||
unsigned int next();
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
#ifndef OCARINA_PLAYLIST_H
|
||||
#define OCARINA_PLAYLIST_H
|
||||
|
||||
#include <vector>
|
||||
|
||||
enum playlist_flags {
|
||||
PL_ENABLED = (1 << 0),
|
||||
PL_RANDOM = (1 << 1),
|
||||
|
@ -12,6 +14,7 @@ enum playlist_flags {
|
|||
|
||||
class Playlist {
|
||||
private:
|
||||
std :: vector <unsigned int> tracks;
|
||||
unsigned int flags;
|
||||
|
||||
public:
|
||||
|
@ -21,6 +24,10 @@ public:
|
|||
void set_flag(playlist_flags);
|
||||
void unset_flag(playlist_flags);
|
||||
const unsigned int get_flags();
|
||||
|
||||
unsigned int add(unsigned int);
|
||||
void del(unsigned int);
|
||||
unsigned int size();
|
||||
};
|
||||
|
||||
#endif /* OCARINA_PLAYLIST_H */
|
||||
|
|
|
@ -27,3 +27,19 @@ const unsigned int Playlist :: get_flags()
|
|||
{
|
||||
return flags;
|
||||
}
|
||||
|
||||
unsigned int Playlist :: add(unsigned int track_id)
|
||||
{
|
||||
tracks.push_back(track_id);
|
||||
return tracks.size() - 1;
|
||||
}
|
||||
|
||||
void Playlist :: del(unsigned int plist_id)
|
||||
{
|
||||
tracks.erase(tracks.begin() + plist_id);
|
||||
}
|
||||
|
||||
unsigned int Playlist :: size()
|
||||
{
|
||||
return tracks.size();
|
||||
}
|
||||
|
|
|
@ -8,13 +8,45 @@
|
|||
|
||||
void test_flags(const std :: string &test, Playlist &plist, unsigned int expected)
|
||||
{
|
||||
print("%s: ", test.c_str());
|
||||
print("Test %s: ", test.c_str());
|
||||
if (plist.get_flags() == expected)
|
||||
print("SUCCESS\n");
|
||||
else
|
||||
print("FAILED\n");
|
||||
}
|
||||
|
||||
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");
|
||||
}
|
||||
|
||||
/* Test flag setting / unsetting / getting */
|
||||
void test_0()
|
||||
{
|
||||
|
@ -32,8 +64,18 @@ void test_0()
|
|||
print("\n");
|
||||
}
|
||||
|
||||
/* 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);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
test_0();
|
||||
test_1();
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
0a: SUCCESS
|
||||
0b: SUCCESS
|
||||
0c: SUCCESS
|
||||
0d: SUCCESS
|
||||
0f: SUCCESS
|
||||
Test 0a: SUCCESS
|
||||
Test 0b: SUCCESS
|
||||
Test 0c: SUCCESS
|
||||
Test 0d: SUCCESS
|
||||
Test 0f: SUCCESS
|
||||
|
||||
Test 1a: SUCCESS
|
||||
Test 1b: Plist size: 40
|
||||
Test 1c: SUCCESS
|
||||
|
|
Loading…
Reference in New Issue