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
|
#ifndef OCARINA_PLAYLIST_H
|
||||||
#define OCARINA_PLAYLIST_H
|
#define OCARINA_PLAYLIST_H
|
||||||
|
|
||||||
|
#include <file.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
enum playlist_flags {
|
enum playlist_flags {
|
||||||
|
@ -20,6 +21,8 @@ private:
|
||||||
public:
|
public:
|
||||||
Playlist(playlist_flags);
|
Playlist(playlist_flags);
|
||||||
~Playlist();
|
~Playlist();
|
||||||
|
void write(File &);
|
||||||
|
void read(File &);
|
||||||
|
|
||||||
void set_flag(playlist_flags);
|
void set_flag(playlist_flags);
|
||||||
void unset_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)
|
void Playlist :: set_flag(playlist_flags f)
|
||||||
{
|
{
|
||||||
flags |= f;
|
flags |= f;
|
||||||
|
|
|
@ -71,11 +71,44 @@ void test_1()
|
||||||
test_add_tracks("1a", plist, 10, 49);
|
test_add_tracks("1a", plist, 10, 49);
|
||||||
print("Test 1b: Plist size: %u\n", plist.size());
|
print("Test 1b: Plist size: %u\n", plist.size());
|
||||||
test_rm_tracks("1c", plist, 10);
|
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)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
test_0();
|
test_0();
|
||||||
test_1();
|
test_1();
|
||||||
|
test_2();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,3 +7,6 @@ Test 0f: SUCCESS
|
||||||
Test 1a: SUCCESS
|
Test 1a: SUCCESS
|
||||||
Test 1b: Plist size: 40
|
Test 1b: Plist size: 40
|
||||||
Test 1c: SUCCESS
|
Test 1c: SUCCESS
|
||||||
|
|
||||||
|
Test 2a: SUCCESS
|
||||||
|
Test 2b: SUCCESS
|
||||||
|
|
Loading…
Reference in New Issue