ocarina/tests/src/tagdb.cpp

102 lines
2.6 KiB
C++

/*
* Copyright 2014 (c) Anna Schumaker.
* Test a DatabaseEntry
*/
#include <tags.h>
#include <print.h>
#include <stdlib.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)
{
/**
* Initial library checks
*/
Library *library = tagdb :: add_library("Music");
test_results(library->root_path == "Music", __LINE__);
test_library_size(1, __LINE__);
Library *library_null = tagdb :: add_library("Music");
test_results(library_null == NULL, __LINE__);
test_library_size(1, __LINE__);
unsigned int id = library->id;
tagdb :: remove_library(id);
test_library_size(0, __LINE__);
tagdb :: remove_library(id);
test_library_size(0, __LINE__);
/**
* Test adding / removing tracks
*/
library = tagdb :: add_library("Music");
Track *track = tagdb :: add_track("Music/1.ogg", library);
test_track_size(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
*/
tagdb :: add_track("Music/1.ogg", library);
tagdb :: add_track("Music/10.ogg", library);
tagdb :: add_track("Music/15.ogg", library);
tagdb :: add_track("Music/60.ogg", library);
tagdb :: add_track("Music/90.ogg", library);
tagdb :: add_track("Music/600.ogg", library);
tagdb :: add_track("Music/666.ogg", library);
test_track_size(7, __LINE__);
test_results(tagdb :: lookup(0) == NULL, __LINE__);
test_results(tagdb :: lookup(1)->id == 1, __LINE__);
test_results(tagdb :: lookup(2)->id == 2, __LINE__);
test_results(tagdb :: lookup(3)->id == 3, __LINE__);
test_results(tagdb :: lookup(4)->id == 4, __LINE__);
test_results(tagdb :: lookup(5)->id == 5, __LINE__);
test_results(tagdb :: lookup(6)->id == 6, __LINE__);
test_results(tagdb :: lookup(7)->id == 7, __LINE__);
test_results(tagdb :: lookup(8) == NULL, __LINE__);
tagdb :: remove_library(library->id);
test_track_size(0, __LINE__);
return 0;
}