139 lines
2.7 KiB
C++
139 lines
2.7 KiB
C++
/*
|
|
* Copyright 2014 (c) Anna Schumaker.
|
|
* Test a DatabaseEntry
|
|
*/
|
|
|
|
#include <tags.h>
|
|
#include <print.h>
|
|
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
|
|
|
|
unsigned int test_num = 0;
|
|
|
|
void test_results(bool success, unsigned int line)
|
|
{
|
|
print(" %u: ", test_num);
|
|
if (success)
|
|
print("Success!\n");
|
|
else {
|
|
print("FAILED (%u) =(\n", line);
|
|
exit(1);
|
|
}
|
|
test_num++;
|
|
}
|
|
|
|
template <class T>
|
|
void save_tag(const std::string &file, T &tag)
|
|
{
|
|
File f(file, FILE_TYPE_DATA);
|
|
f.open(OPEN_WRITE);
|
|
tag.write(f);
|
|
f.close();
|
|
}
|
|
|
|
template <class T>
|
|
void load_tag(const std::string &file, T &tag)
|
|
{
|
|
File f(file, FILE_TYPE_DATA);
|
|
f.open(OPEN_READ);
|
|
tag.read(f);
|
|
f.close();
|
|
}
|
|
|
|
void artist_test_tags(Artist &artist)
|
|
{
|
|
test_results(artist.name == "Artist Name", __LINE__);
|
|
test_results(artist.lower == "artist name", __LINE__);
|
|
test_results(artist.primary_key() == "Artist Name", __LINE__);
|
|
}
|
|
|
|
void artist_test()
|
|
{
|
|
Artist artist("Artist Name"), artist2;
|
|
|
|
artist_test_tags(artist);
|
|
save_tag("artist.txt", artist);
|
|
load_tag("artist.txt", artist2);
|
|
artist_test_tags(artist2);
|
|
}
|
|
|
|
void album_test_tags(Album &album)
|
|
{
|
|
test_results(album.name == "Album Name", __LINE__);
|
|
test_results(album.lower == "album name", __LINE__);
|
|
test_results(album.year == 2014, __LINE__);
|
|
test_results(album.primary_key() == "2014.Album Name", __LINE__);
|
|
}
|
|
|
|
void album_test()
|
|
{
|
|
Album album("Album Name", 2014), album2;
|
|
|
|
album_test_tags(album);
|
|
save_tag("album.txt", album);
|
|
load_tag("album.txt", album2);
|
|
album_test_tags(album2);
|
|
}
|
|
|
|
void genre_test_tags(Genre &genre)
|
|
{
|
|
test_results(genre.name == "Genre Name", __LINE__);
|
|
test_results(genre.lower == "genre name", __LINE__);
|
|
test_results(genre.primary_key() == "Genre Name", __LINE__);
|
|
}
|
|
|
|
void genre_test()
|
|
{
|
|
Genre genre("Genre Name"), genre2;
|
|
|
|
genre_test_tags(genre);
|
|
save_tag("genre.txt", genre);
|
|
load_tag("genre.txt", genre2);
|
|
genre_test_tags(genre2);
|
|
}
|
|
|
|
void library_test_tags(Library &library)
|
|
{
|
|
test_results(library.root_path == "/home/user/Music", __LINE__);
|
|
test_results(library.count == 0, __LINE__);
|
|
test_results(library.enabled == true, __LINE__);
|
|
test_results(library.primary_key() == "/home/user/Music", __LINE__);
|
|
}
|
|
|
|
void library_test()
|
|
{
|
|
Library library("/home/user/Music"), library2;
|
|
|
|
library_test_tags(library);
|
|
test_results(library2.enabled == false, __LINE__);
|
|
save_tag("library.txt", library);
|
|
load_tag("library.txt", library2);
|
|
library_test_tags(library2);
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
char c;
|
|
|
|
while ((c = getopt(argc, argv, "aAgl")) != -1) {
|
|
switch (c) {
|
|
case 'a':
|
|
artist_test();
|
|
break;
|
|
case 'A':
|
|
album_test();
|
|
break;
|
|
case 'g':
|
|
genre_test();
|
|
break;
|
|
case 'l':
|
|
library_test();
|
|
break;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|