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:
parent
3a478ddba7
commit
168f08392d
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -7,3 +7,6 @@ Test 0f: SUCCESS
|
|||
Test 1a: SUCCESS
|
||||
Test 1b: Plist size: 40
|
||||
Test 1c: SUCCESS
|
||||
|
||||
Test 2a: SUCCESS
|
||||
Test 2b: SUCCESS
|
||||
|
|
Loading…
Reference in New Issue