ocarina/tests/src/tags.cpp

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;
}