playlist: Implement read() and write()

The file will be passed in by the deck layer, since it stores multiple
files.  I just fake up a file in test_2() that is used for storing the
playlist.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
This commit is contained in:
Anna Schumaker 2013-12-22 18:12:57 -05:00 committed by Anna Schumaker
parent 3a478ddba7
commit 168f08392d
4 changed files with 55 additions and 0 deletions

View File

@ -4,6 +4,7 @@
#ifndef OCARINA_PLAYLIST_H
#define OCARINA_PLAYLIST_H
#include <file.h>
#include <vector>
enum playlist_flags {
@ -20,6 +21,8 @@ private:
public:
Playlist(playlist_flags);
~Playlist();
void write(File &);
void read(File &);
void set_flag(playlist_flags);
void unset_flag(playlist_flags);

View File

@ -13,6 +13,22 @@ Playlist :: ~Playlist()
{
}
void Playlist :: write(File &f)
{
f << flags << " " << tracks.size();
for (unsigned int i = 0; i < tracks.size(); i++)
f << " " << tracks[i];
}
void Playlist :: read(File &f)
{
unsigned int n;
f >> flags >> n;
tracks.resize(n);
for (unsigned int i = 0; i < n; i++)
f >> tracks[i];
}
void Playlist :: set_flag(playlist_flags f)
{
flags |= f;

View File

@ -71,11 +71,44 @@ void test_1()
test_add_tracks("1a", plist, 10, 49);
print("Test 1b: Plist size: %u\n", plist.size());
test_rm_tracks("1c", plist, 10);
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;
}
print("SUCCESS\n");
}
int main(int argc, char **argv)
{
test_0();
test_1();
test_2();
return 0;
}

View File

@ -7,3 +7,6 @@ Test 0f: SUCCESS
Test 1a: SUCCESS
Test 1b: Plist size: 40
Test 1c: SUCCESS
Test 2a: SUCCESS
Test 2b: SUCCESS