ocarina/tests/core/tags/genre.cpp

97 lines
2.3 KiB
C++

/**
* Copyright 2014 (c) Anna Schumaker.
*/
#include <core/tags/genre.h>
#include "../test.h"
static void test_verify_empty(struct genre *genre)
{
const struct db_ops *genre_ops = test_genre_ops();
test_equal(genre->ge_name, "");
test_equal(genre->ge_lower, "");
test_str_equal(genre_ops->dbe_key(genre), "");
}
static void test_verify_vg(struct genre *genre)
{
const struct db_ops *genre_ops = test_genre_ops();
test_equal(genre->ge_name, "Video Game Music");
test_equal(genre->ge_lower, "video game music");
test_str_equal(genre_ops->dbe_key(genre), "Video Game Music");
}
static void test_genre()
{
const struct db_ops *genre_ops = test_genre_ops();
struct genre *genre;
unsigned int i;
file f;
genre = (struct genre *)genre_ops->dbe_alloc("Video Game Music");
test_verify_vg(genre);
file_init(&f, "genre_tag", 0);
file_open(&f, OPEN_WRITE);
file_writef(&f, "1 \n1 ");
genre_ops->dbe_write(&f, genre);
file_close(&f);
genre_ops->dbe_free(genre);
file_open(&f, OPEN_READ);
file_readf(&f, "%u", &i);
genre = (struct genre *)genre_ops->dbe_read(&f);
test_verify_empty(genre);
genre_ops->dbe_free(genre);
file_readf(&f, "%u", &i);
genre = (struct genre *)genre_ops->dbe_read(&f);
file_close(&f);
test_verify_vg(genre);
genre_ops->dbe_free(genre);
}
static void test_genre_compare()
{
const struct db_ops *genre_ops = test_genre_ops();
struct genre *video, *game;
video = (struct genre *)genre_ops->dbe_alloc("Video Game Music");
game = (struct genre *)genre_ops->dbe_alloc("game music");
test_equal(genre_compare(video, video), 0);
test_equal(genre_compare(video, game), 1);
test_equal(genre_compare(game, video), -1);
genre_ops->dbe_free(video);
genre_ops->dbe_free(game);
}
static void test_genere_db()
{
const struct db_ops *genre_ops = test_genre_ops();
struct database genre_db;
struct genre *genre;
genre_db_init();
genre = genre_find("Video Game Music");
test_verify_vg(genre);
test_equal(genre_find("Video Game Music"), genre);
test_equal(genre_get(0), genre);
test_equal(genre_get(1), (struct genre *)NULL);
db_init(&genre_db, "genre.db", false, genre_ops);
db_load(&genre_db);
test_equal(genre_db.db_size, 1);
db_deinit(&genre_db);
genre_db_deinit();
}
DECLARE_UNIT_TESTS(
UNIT_TEST("Genre Tag", test_genre),
UNIT_TEST("Genre Compare", test_genre_compare),
UNIT_TEST("Genre Database", test_genere_db),
);