ocarina/tests/core/tags/library.cpp

107 lines
2.4 KiB
C++
Raw Normal View History

/**
* Copyright 2014 (c) Anna Schumaker.
*/
#include <core/tags/library.h>
#include "../test.h"
static void test_verify_empty(Library *library)
{
test_equal(library->primary_key(), "");
test_equal(library->enabled(), false);
test_equal(library->size(), 0);
}
static void test_verify_zelda(Library *library)
{
test_equal(library->primary_key(), "/home/Zelda/Music");
test_equal(library->enabled(), true);
test_equal(library->size(), 0);
}
static void test_verify_link(Library *library)
{
test_equal(library->primary_key(), "/home/Link/Music");
test_equal(library->enabled(), false);
test_equal(library->size(), 0);
}
static void test_library()
{
Library *link = new Library("/home/Link/Music");
Library *zelda = new Library("/home/Zelda/Music");
Library *library = new Library();
file f;
link->set_enabled(false);
test_verify_link(link);
test_verify_zelda(zelda);
test_verify_empty(library);
for (unsigned int i = 0; i < 42; i++)
zelda->inc_size();
test_equal(zelda->size(), 42);
for (unsigned int i = 0; i < 21; i++)
zelda->dec_size();
test_equal(zelda->size(), 21);
file_init(&f, "library_tag", 0);
file_open(&f, OPEN_WRITE);
link->write(f);
file_writef(&f, "\n");
zelda->write(f);
file_close(&f);
file_open(&f, OPEN_READ);
library->read(f);
test_verify_link(library);
library->read(f);
file_close(&f);
test_verify_zelda(library);
delete library;
delete zelda;
delete link;
}
static void test_library_db()
{
database<Library> library_db;
Library *library, *library2;
test_equal(tags :: library_size(), 0);
tags :: init_library_db();
library = tags :: get_library("/home/Zelda/Music");
test_verify_zelda(library);
test_equal(tags :: library_size(), 1);
test_equal(tags :: get_library("/home/Zelda/Music"), library);
test_equal(tags :: get_library(0), library);
test_equal(tags :: get_library(1), (Library *)NULL);
db_init(&library_db, "library.db", false);
db_load(&library_db);
test_equal(library_db.db_size, 1);
test_equal(db_actual_size(&library_db), 1);
library2 = db_at(&library_db, 0);
test_not_equal(library2, NULL);
test_verify_zelda(library2);
tags :: remove_library(library);
test_equal(tags :: get_library(0), (Library *)NULL);
test_equal(tags :: library_size(), 1);
db_deinit(&library_db);
db_load(&library_db);
test_equal(library_db.db_size, 0);
}
DECLARE_UNIT_TESTS(
UNIT_TEST("Library Tag", test_library),
UNIT_TEST("Library Database", test_library_db),
);