tags: Update the unit test

While I'm at it, I also fix a refcounting issue with the Library pointer
each track has.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2014-05-06 22:44:40 -04:00
parent 34b0c56a70
commit 4dafe7270f
8 changed files with 314 additions and 499 deletions

View File

@ -98,6 +98,7 @@ public:
Track();
Track(const std::string &, Library *);
~Track();
const std::string primary_key() const;
void read(File &);
void write(File &);

View File

@ -159,6 +159,12 @@ Track :: Track(const std::string &f, Library *l)
play_count(0), last_year(0), last_month(0), last_day(0),
filepath(f.substr(l->root_path.size() + 1))
{
library->count++;
}
Track :: ~Track()
{
library->count--;
}
const std::string Track :: primary_key() const
@ -183,6 +189,7 @@ void Track :: read(File &f)
genre = genre_db.at(genre_id);
title_lower = filter :: add(title, id);
library->count++;
set_length_str();
}
@ -248,6 +255,8 @@ void Track :: tag()
filter :: add(artist->name, id);
filter :: add(album->name, id);
library->count++;
}
const std::string Track :: path() const

1
tests/.gitignore vendored
View File

@ -4,3 +4,4 @@ database
index
filter
idle
tags

View File

@ -15,6 +15,7 @@ tests = [
("index.cpp", True, []),
("filter.cpp", True, []),
("idle.cpp", False, [ "idle.cpp" ]),
("tags.cpp", True, []),
]
@ -39,7 +40,7 @@ def make_program(src, name, extra_files):
def make_test(src, name):
test = Command("%s.out" % name, [],
"./tests/%s | tee ./tests/%s.out" % (name, name))
"set -o pipefail; ./tests/%s | tee ./tests/%s.out" % (name, name))
Alias("tests/%s" % name, test)
AlwaysBuild(test)
return test

View File

@ -1,131 +0,0 @@
/*
* 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++;
}
void test_library_size(unsigned int expected, unsigned int line)
{
test_results(tagdb :: get_library_db().size() == expected, line);
}
void test_track_size(unsigned int expected, unsigned int line)
{
test_results(tagdb :: get_track_db().size() == expected, line);
}
int main(int argc, char **argv)
{
char c;
bool init_called = false;
unsigned int id;
while ((c = getopt(argc, argv, "i")) != -1) {
switch (c) {
case 'i':
init_called = true;
tagdb :: init();
test_library_size(1, __LINE__);
test_track_size(0, __LINE__);
default:
break;
}
}
/**
* Initial library checks
*/
Library *library, *library_null;
if (init_called == true) {
library = *(tagdb :: get_library_db().begin());
goto test_tracks;
}
library = tagdb :: add_library("Music");
test_results(library->root_path == "Music", __LINE__);
test_library_size(1, __LINE__);
library_null = tagdb :: add_library("Music");
test_results(library_null == NULL, __LINE__);
test_library_size(1, __LINE__);
id = library->id;
tagdb :: remove_library(id);
test_library_size(0, __LINE__);
tagdb :: remove_library(id);
test_library_size(0, __LINE__);
library = tagdb :: add_library("Music");
test_tracks:
/**
* Test adding / removing tracks
*/
Track *track = tagdb :: add_track("Music/1.ogg", library);
test_track_size(1, __LINE__);
test_results(track->track == 1, __LINE__);
Track *track_null = tagdb :: add_track("Music/1.ogg", library);
test_track_size(1, __LINE__);
test_results(track->path() == "Music/1.ogg", __LINE__);
test_results(track_null == NULL, __LINE__);
id = track->id;
tagdb :: remove_track(id);
test_track_size(0, __LINE__);
tagdb :: remove_track(id);
test_track_size(0, __LINE__);
/**
* Test adding and removing multiple tracks
*/
Track *track1 = tagdb :: add_track("Music/1.ogg", library);
Track *track2 = tagdb :: add_track("Music/10.ogg", library);
Track *track3 = tagdb :: add_track("Music/15.ogg", library);
Track *track4 = tagdb :: add_track("Music/60.ogg", library);
Track *track5 = tagdb :: add_track("Music/90.ogg", library);
Track *track6 = tagdb :: add_track("Music/600.ogg", library);
Track *track7 = tagdb :: add_track("Music/666.ogg", library);
test_track_size(7, __LINE__);
test_results(tagdb :: lookup(0) == NULL, __LINE__);
test_results(tagdb :: lookup(1) == track1, __LINE__);
test_results(tagdb :: lookup(2) == track2, __LINE__);
test_results(tagdb :: lookup(3) == track3, __LINE__);
test_results(tagdb :: lookup(4) == track4, __LINE__);
test_results(tagdb :: lookup(5) == track5, __LINE__);
test_results(tagdb :: lookup(6) == track6, __LINE__);
test_results(tagdb :: lookup(7) == track7, __LINE__);
test_results(tagdb :: lookup(8) == NULL, __LINE__);
tagdb :: remove_library(library->id);
test_track_size(0, __LINE__);
library = tagdb :: add_library("Music");
if (init_called == true)
tagdb :: commit();
return 0;
}

View File

@ -1,307 +0,0 @@
/*
* Copyright 2014 (c) Anna Schumaker.
* Test a DatabaseEntry
*/
#include <filter.h>
#include <print.h>
#include <tags.h>
#include <set>
#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);
f.open(OPEN_WRITE);
tag.write(f);
f.close();
}
template <class T>
void load_tag(const std::string &file, T &tag)
{
File f(file);
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);
}
void track_test_tags(Track &track, Library *library)
{
test_results(track.filepath == "1.ogg", __LINE__);
test_results(track.path() == "Music/1.ogg", __LINE__);
test_results(track.primary_key() == "Music/1.ogg", __LINE__);
test_results(track.library == library, __LINE__);
test_results(track.play_count == 0, __LINE__);
test_results(track.last_year == 0, __LINE__);
test_results(track.last_month == 0, __LINE__);
test_results(track.last_day == 0, __LINE__);
}
void track_test_search(const std::string &term, unsigned int expected,
unsigned int line)
{
std::set<unsigned int> s;
filter :: search(term, s);
test_results(s.size() == 1 && s.find(expected) != s.end(), line);
}
void track_test_basics(Library *library)
{
Track track("Music/1.ogg", library), track2;
track_test_tags(track, library);
test_results(track.artist == NULL, __LINE__);
test_results(track.album == NULL, __LINE__);
test_results(track.genre == NULL, __LINE__);
track.tag();
track_test_tags(track, library);
test_results(track.artist->name == "Artist", __LINE__);
test_results(track.album->name == "Album", __LINE__);
test_results(track.album->year == 2014, __LINE__);
test_results(track.genre->name == "Silence", __LINE__);
test_results(track.track == 1, __LINE__);
test_results(track.length == 1, __LINE__);
test_results(track.title == "One", __LINE__);
test_results(track.title_lower == "one", __LINE__);
track_test_search("One", track.id, __LINE__);
track_test_search("Artist", track.id, __LINE__);
track_test_search("Album", track.id, __LINE__);
save_tag("track.txt", track);
load_tag("track.txt", track2);
track_test_tags(track2, library);
test_results(track.artist == track2.artist, __LINE__);
test_results(track.album == track2.album, __LINE__);
test_results(track.genre == track2.genre, __LINE__);
test_results(track.track == track2.track, __LINE__);
test_results(track.length == track2.length, __LINE__);
test_results(track.length_str == track2.length_str, __LINE__);
test_results(track.title == track2.title, __LINE__);
test_results(track.title_lower == track2.title_lower, __LINE__);
}
void track_test_lenstrs(const std::string &file, const std::string &expected,
Library *library, unsigned int line)
{
Track track(file, library);
track.tag();
test_results(track.length_str == expected, line);
}
void track_test_lenstrs(Library *library)
{
track_test_lenstrs("Music/1.ogg", "0:01", library, __LINE__);
track_test_lenstrs("Music/10.ogg", "0:10", library, __LINE__);
track_test_lenstrs("Music/15.ogg", "0:15", library, __LINE__);
track_test_lenstrs("Music/60.ogg", "1:00", library, __LINE__);
track_test_lenstrs("Music/90.ogg", "1:30", library, __LINE__);
track_test_lenstrs("Music/600.ogg", "10:00", library, __LINE__);
track_test_lenstrs("Music/666.ogg", "11:06", library, __LINE__);
}
void test_track_sorting()
{
Track track1, track2;
Artist artist1("a"), artist2("b");
Album album1("a", 2000), album2("b", 2014);
Genre genre1("a"), genre2("b");
track1.artist = &artist1;
track1.album = &album1;
track1.genre = &genre1;
track1.length = 10;
track1.play_count = 0;
track1.last_year = 2013;
track1.title_lower = "a";
track1.track = 1;
track2.artist = &artist2;
track2.album = &album2;
track2.genre = &genre2;
track2.length = 20;
track2.play_count = 1;
track2.last_year = 2014;
track2.title_lower = "b";
track2.track = 2;
test_results(track1.less_than(&track1, SORT_ARTIST) == 0, __LINE__);
test_results(track1.less_than(&track2, SORT_ARTIST) < 0, __LINE__);
test_results(track2.less_than(&track1, SORT_ARTIST) > 0, __LINE__);
test_results(track1.less_than(&track1, SORT_ALBUM) == 0, __LINE__);
test_results(track1.less_than(&track2, SORT_ALBUM) < 0, __LINE__);
test_results(track2.less_than(&track1, SORT_ALBUM) > 0, __LINE__);
test_results(track1.less_than(&track1, SORT_GENRE) == 0, __LINE__);
test_results(track1.less_than(&track2, SORT_GENRE) < 0, __LINE__);
test_results(track2.less_than(&track1, SORT_GENRE) > 0, __LINE__);
test_results(track1.less_than(&track1, SORT_LENGTH) == 0, __LINE__);
test_results(track1.less_than(&track2, SORT_LENGTH) < 0, __LINE__);
test_results(track2.less_than(&track1, SORT_LENGTH) > 0, __LINE__);
test_results(track1.less_than(&track1, SORT_PLAYED) == 0, __LINE__);
test_results(track1.less_than(&track2, SORT_PLAYED) < 0, __LINE__);
test_results(track2.less_than(&track1, SORT_PLAYED) > 0, __LINE__);
track1.last_year = 2014;
track1.last_month = 3;
track2.last_month = 4;
test_results(track1.less_than(&track1, SORT_PLAYED) == 0, __LINE__);
test_results(track1.less_than(&track2, SORT_PLAYED) < 0, __LINE__);
test_results(track2.less_than(&track1, SORT_PLAYED) > 0, __LINE__);
track1.last_month = 4;
track1.last_day = 10;
track2.last_day = 11;
test_results(track1.less_than(&track1, SORT_PLAYED) == 0, __LINE__);
test_results(track1.less_than(&track2, SORT_PLAYED) < 0, __LINE__);
test_results(track2.less_than(&track1, SORT_PLAYED) > 0, __LINE__);
test_results(track1.less_than(&track1, SORT_TITLE) == 0, __LINE__);
test_results(track1.less_than(&track2, SORT_TITLE) < 0, __LINE__);
test_results(track2.less_than(&track1, SORT_TITLE) > 0, __LINE__);
test_results(track1.less_than(&track1, SORT_TRACK) == 0, __LINE__);
test_results(track1.less_than(&track2, SORT_TRACK) < 0, __LINE__);
test_results(track2.less_than(&track1, SORT_TRACK) > 0, __LINE__);
test_results(track1.less_than(&track1, SORT_YEAR) == 0, __LINE__);
test_results(track1.less_than(&track2, SORT_YEAR) < 0, __LINE__);
test_results(track2.less_than(&track1, SORT_YEAR) > 0, __LINE__);
}
void track_test()
{
Library *library = tagdb :: add_library("Music");
track_test_basics(library);
track_test_lenstrs(library);
test_track_sorting();
}
int main(int argc, char **argv)
{
char c;
while ((c = getopt(argc, argv, "aAglt")) != -1) {
switch (c) {
case 'a':
artist_test();
break;
case 'A':
album_test();
break;
case 'g':
genre_test();
break;
case 'l':
library_test();
break;
case 't':
track_test();
break;
}
}
return 0;
}

View File

@ -1,60 +0,0 @@
#!/bin/bash
# Copyright 2014 (c) Anna Schumaker
. $(dirname $0)/_functions
function test_tag
{
new_test "Test $1 Tag"
./src/tags.run "$2"
}
function test_db_exists
{
if [ ! -f $DATA_DIR/$1.db ]; then
echo "ERROR: $DATA_DIR/$1.db doesn't exist!"
exit 1
fi
}
function test_db_not_exists
{
if [ -f $DATA_DIR/$1.db ]; then
echo "ERROR: $DATA_DIR/$1.db shouldn't exist!"
exit 1
fi
}
test_tag "Artist" "-a"
echo
test_tag "Album" "-A"
echo
test_tag "Genre" "-g"
echo
test_tag "Library" "-l"
echo
test_tag "Track" "-t"
rm -rf $DATA_DIR/*.db
echo
new_test "Test TagDB"
./src/tagdb.run
test_db_exists artist
test_db_exists album
test_db_exists genre
test_db_exists library
test_db_not_exists track
echo
new_test "Test TagDB (call init)"
./src/tagdb.run -i
test_db_exists artist
test_db_exists album
test_db_exists genre
test_db_exists library
test_db_exists track

301
tests/tags.cpp Normal file
View File

@ -0,0 +1,301 @@
/*
* Copyright 2014 (c) Anna Schumaker.
* Test a DatabaseEntry
*/
#include <tags.h>
#include "test.h"
static Library *LIB_NULL = NULL;
static Track *TRACK_NULL = NULL;
struct TagArgs {
struct Library *library;
std::string full_path;
std::string artist;
std::string artist_lower;
std::string album;
std::string album_lower;
unsigned int year;
std::string genre;
std::string genre_lower;
unsigned int track;
unsigned int length;
unsigned int play_count;
unsigned int last_year;
unsigned int last_month;
unsigned int last_day;
std::string title;
std::string title_lower;
std::string filepath;
std::string length_str;
};
static void test_library()
{
Library *lib = tagdb :: add_library("tests/Music/");
test_not_equal(lib, LIB_NULL);
test_equal(lib->root_path, (std::string)"tests/Music/");
test_equal(lib->count, (unsigned)0);
test_equal(lib->enabled, true);
test_equal(tagdb :: add_library("tests/Music/"), LIB_NULL);
test_equal(lib, tagdb :: lookup_library(0));
tagdb :: remove_library(0);
test_equal(tagdb :: get_library_db().size(), (unsigned)0);
}
static void test_track(struct TagArgs *args)
{
Track *track = tagdb :: add_track(args->full_path, args->library);
test_not_equal(track, TRACK_NULL);
test_equal(track->path(), args->full_path);
/*
* Check tags
*/
test_equal(track->artist->name, args->artist);
test_equal(track->artist->lower, args->artist_lower);
test_equal(track->album->name, args->album);
test_equal(track->album->lower, args->album_lower);
test_equal(track->album->year, args->year);
test_equal(track->genre->name, args->genre);
test_equal(track->genre->lower, args->genre_lower);
test_equal(track->track, args->track);
test_equal(track->length, args->length);
test_equal(track->play_count, args->play_count);
test_equal(track->last_year, args->last_year);
test_equal(track->last_month, args->last_month);
test_equal(track->last_day, args->last_day);
test_equal(track->title, args->title);
test_equal(track->title_lower, args->title_lower);
test_equal(track->filepath, args->filepath);
test_equal(track->length_str, args->length_str);
test_equal(tagdb :: lookup(args->track - 1), track);
test_equal(args->library->count, (unsigned)1);
tagdb :: remove_track(args->track - 1);
test_equal(tagdb :: lookup(args->track - 1), TRACK_NULL);
test_equal(tagdb :: get_track_db().size(), (unsigned)0);
test_equal(args->library->count, (unsigned)0);
}
static void test_all_tracks()
{
struct TagArgs expected;
expected.library = tagdb :: add_library("tests/Music");
expected.full_path = "tests/Music/1.ogg";
expected.artist = "Artist";
expected.artist_lower = "artist";
expected.album = "Album";
expected.album_lower = "album";
expected.year = 2014;
expected.genre = "Silence";
expected.genre_lower = "silence";
expected.track = 1;
expected.length = 1;
expected.play_count = 0;
expected.last_year = 0;
expected.last_month = 0;
expected.last_day = 0;
expected.title = "One";
expected.title_lower = "one";
expected.filepath = "1.ogg";
expected.length_str = "0:01";
run_test("Tags Track Test (1.ogg)", test_track, &expected);
expected.full_path = "tests/Music/10.ogg";
expected.track = 2;
expected.length = 10;
expected.title = "Ten";
expected.title_lower = "ten";
expected.filepath = "10.ogg";
expected.length_str = "0:10";
run_test("Tags Track Test (10.ogg)", test_track, &expected);
expected.full_path = "tests/Music/15.ogg";
expected.track = 3;
expected.length = 15;
expected.title = "Fifteen";
expected.title_lower = "fifteen";
expected.filepath = "15.ogg";
expected.length_str = "0:15";
run_test("Tags Track Test (15.ogg)", test_track, &expected);
expected.full_path = "tests/Music/60.ogg";
expected.track = 4;
expected.length = 60;
expected.title = "Sixty";
expected.title_lower = "sixty";
expected.filepath = "60.ogg";
expected.length_str = "1:00";
run_test("Tags Track Test (60.ogg)", test_track, &expected);
expected.full_path = "tests/Music/90.ogg";
expected.album = "Album Two";
expected.album_lower = "album two";
expected.track = 5;
expected.length = 90;
expected.title = "Ninety";
expected.title_lower = "ninety";
expected.filepath = "90.ogg";
expected.length_str = "1:30";
run_test("Tags Track Test (90.ogg)", test_track, &expected);
expected.full_path = "tests/Music/600.ogg";
expected.track = 6;
expected.length = 600;
expected.title = "Six Hundred";
expected.title_lower = "six hundred";
expected.filepath = "600.ogg";
expected.length_str = "10:00";
run_test("Tags Track Test (600.ogg)", test_track, &expected);
expected.full_path = "tests/Music/666.ogg";
expected.track = 7;
expected.length = 666;
expected.title = "Six-Six-Six";
expected.title_lower = "six six six";
expected.filepath = "666.ogg";
expected.length_str = "11:06";
run_test("Tags Track Test (666.ogg)", test_track, &expected);
}
static void test_comparison()
{
Library *lib = tagdb :: lookup_library(1);
Track *track1 = tagdb :: add_track("tests/Music/1.ogg", lib);
Track *track10 = tagdb :: add_track("tests/Music/10.ogg", lib);
Track *track15 = tagdb :: add_track("tests/Music/15.ogg", lib);
Track *track60 = tagdb :: add_track("tests/Music/60.ogg", lib);
Track *track90 = tagdb :: add_track("tests/Music/90.ogg", lib);
Track *track600 = tagdb :: add_track("tests/Music/600.ogg", lib);
Track *track666 = tagdb :: add_track("tests/Music/666.ogg", lib);
Artist art2("");
track10->artist = &art2;
test_equal(track1->less_than(track10, SORT_ARTIST), -1);
test_equal(track10->less_than(track1, SORT_ARTIST), 1);
Artist art3("Artist Three");
track10->artist = &art3;
test_equal(track1->less_than(track1, SORT_ARTIST), 0);
test_equal(track1->less_than(track10, SORT_ARTIST) < 0, true);
test_equal(track10->less_than(track1, SORT_ARTIST) > 0, true);
test_equal(track1->less_than(track1, SORT_ALBUM), 0);
test_equal(track1->less_than(track90, SORT_ALBUM) < 0, true);
test_equal(track90->less_than(track1, SORT_ALBUM) > 0, true);
track15->play_count++;
test_equal(track1->less_than(track1, SORT_COUNT), 0);
test_equal(track1->less_than(track15, SORT_COUNT) < 0, true);
test_equal(track15->less_than(track1, SORT_COUNT) > 0, true);
Genre gen2("X-Treme Silence!!!");
track60->genre = &gen2;
test_equal(track1->less_than(track1, SORT_GENRE), 0);
test_equal(track1->less_than(track60, SORT_GENRE) < 0, true);
test_equal(track60->less_than(track1, SORT_GENRE) > 0, true);
test_equal(track1->less_than(track1, SORT_LENGTH), 0);
test_equal(track1->less_than(track600, SORT_LENGTH) < 0, true);
test_equal(track600->less_than(track1, SORT_LENGTH) > 0, true);
track15->last_year = 2014;
test_equal(track1->less_than(track1, SORT_PLAYED), 0);
test_equal(track1->less_than(track15, SORT_PLAYED) < 0, true);
test_equal(track15->less_than(track1, SORT_PLAYED) > 0, true);
track1->last_year = 2014;
track15->last_month = 5;
test_equal(track1->less_than(track15, SORT_PLAYED) < 0, true);
test_equal(track15->less_than(track1, SORT_PLAYED) > 0, true);
track1->last_month = 5;
track15->last_day = 6;
test_equal(track1->less_than(track15, SORT_PLAYED) < 0, true);
test_equal(track15->less_than(track1, SORT_PLAYED) > 0, true);
test_equal(track1->less_than(track1, SORT_TITLE), 0);
test_equal(track1->less_than(track666, SORT_TITLE) < 0, true);
test_equal(track666->less_than(track1, SORT_TITLE) > 0, true);
test_equal(track1->less_than(track1, SORT_TRACK), 0);
test_equal(track1->less_than(track60, SORT_TRACK) < 0, true);
test_equal(track60->less_than(track1, SORT_TRACK) > 0, true);
track666->album->year = 2048;
test_equal(track1->less_than(track1, SORT_YEAR), 0);
test_equal(track1->less_than(track666, SORT_YEAR) < 0, true);
test_equal(track666->less_than(track1, SORT_YEAR) > 0, true);
}
static void test_lib_removal()
{
test_equal(tagdb :: get_track_db().size(), (unsigned)7);
test_equal(tagdb :: lookup_library(1)->count, (unsigned)7);
tagdb :: remove_library(1);
test_equal(tagdb :: get_track_db().size(), (unsigned)0);
}
static void test_save_load()
{
Database<Artist> artist("artist.db", false);
Database<Album> album("album.db", false);
Database<Genre> genre("genre.db", false);
artist.load();
album.load();
genre.load();
test_equal(artist.size(), (unsigned)1);
test_equal(album.size(), (unsigned)2);
test_equal(genre.size(), (unsigned)1);
Database<Library> library("library.db", false);
library.load();
test_equal(library.size(), (unsigned)0);
Library *lib = tagdb :: add_library("tests/Music");
library.load();
test_equal(library.size(), (unsigned)1);
Database<Library> library2("library.db", false);
lib->enabled = false;
tagdb :: commit_library();
library2.load();
test_equal(library2.at(2)->enabled, false);
tagdb :: add_track("tests/Music/1.ogg", lib);
tagdb :: add_track("tests/Music/15.ogg", lib);
tagdb :: add_track("tests/Music/60.ogg", lib);
Database<Track> track("track.db", false);
track.load();
test_equal(track.size(), (unsigned)0);
tagdb :: commit();
track.load();
test_equal(track.size(), (unsigned)3);
}
int main(int argc, char **argv)
{
run_test("Tags Library Test", test_library);
test_all_tracks();
run_test("Tags Comparison Test", test_comparison);
run_test("Tags Library Removal Test", test_lib_removal);
run_test("Tags Save and Load Test", test_save_load);
return 0;
}