ocarina/tests/core/tags/genre.cpp

90 lines
1.8 KiB
C++
Raw Normal View History

/**
* Copyright 2014 (c) Anna Schumaker.
*/
#include <core/tags/genre.h>
#include "../test.h"
static void test_verify_empty(Genre *genre)
{
test_equal(genre->name(), "");
test_equal(genre->lowercase(), "");
test_equal(genre->primary_key(), "");
}
static void test_verify_vg(Genre *genre)
{
test_equal(genre->name(), "Video Game Music");
test_equal(genre->lowercase(), "video game music");
test_equal(genre->primary_key(), "Video Game Music");
}
static void test_genre()
{
Genre *genre = new Genre("Video Game Music");
unsigned int i;
file f;
test_verify_vg(genre);
file_init(&f, "genre_tag", 0);
file_open(&f, OPEN_WRITE);
file_writef(&f, "1 \n1 ");
genre->write(f);
file_close(&f);
delete genre;
genre = new Genre();
test_verify_empty(genre);
file_open(&f, OPEN_READ);
file_readf(&f, "%u", &i);
genre->read(f);
test_verify_empty(genre);
file_readf(&f, "%u", &i);
genre->read(f);
file_close(&f);
test_verify_vg(genre);
delete genre;
}
static void test_genre_compare()
{
Genre *video = new Genre("Video Game Music");
Genre *game = new Genre("game music");
test_equal(video->compare(video), 0);
test_equal(video->compare(game), 1);
test_equal(game->compare(video), -1);
delete game;
delete video;
}
static void test_genere_db()
{
database<Genre> genre_db;
Genre *genre;
tags :: init_genre_db();
genre = tags :: get_genre("Video Game Music");
test_verify_vg(genre);
test_equal(tags :: get_genre("Video Game Music"), genre);
test_equal(tags :: get_genre(0), genre);
test_equal(tags :: get_genre(1), (Genre *)NULL);
db_init(&genre_db, "genre.db", false);
db_load(&genre_db);
test_equal(genre_db.db_size, 1);
db_deinit(&genre_db);
}
DECLARE_UNIT_TESTS(
UNIT_TEST("Genre Tag", test_genre),
UNIT_TEST("Genre Compare", test_genre_compare),
UNIT_TEST("Genre Database", test_genere_db),
);