132 lines
3.2 KiB
C++
132 lines
3.2 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++;
|
|
}
|
|
|
|
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__);
|
|
|
|
|
|
if (init_called == true)
|
|
tagdb :: commit();
|
|
|
|
return 0;
|
|
}
|