ocarina/tests/gui/model.c

81 lines
2.7 KiB
C

/*
* Copyright 2016 (c) Anna Schumaker.
*/
#include <core/collection.h>
#include <core/idle.h>
#include <core/core.h>
#include <gui/model.h>
#include <tests/test.h>
struct core_init_data init_data;
static void test_model()
{
GtkTreeModel *treemodel;
GuiQueueModel *model;
GtkTreePath *path;
GtkTreeIter iter;
int argc = 0;
GType type;
core_init(&argc, NULL, &init_data);
model = gui_queue_model_new(collection_get_queue());
test_not_equal((void *)model, NULL);
test_equal(GTK_IS_TREE_MODEL(model), true);
test_equal((void *)model->gqm_queue, (void *)collection_get_queue());
treemodel = GTK_TREE_MODEL(model);
test_equal(gtk_tree_model_get_flags(treemodel), GTK_TREE_MODEL_LIST_ONLY);
test_equal(gtk_tree_model_get_n_columns(treemodel), 10);
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_TRACK_NR);
test_equal(type, G_TYPE_UINT);
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_TITLE);
test_equal(type, G_TYPE_STRING);
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_LENGTH);
test_equal(type, G_TYPE_STRING);
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_ARTIST);
test_equal(type, G_TYPE_STRING);
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_ALBUM);
test_equal(type, G_TYPE_STRING);
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_YEAR);
test_equal(type, G_TYPE_UINT);
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_GENRE);
test_equal(type, G_TYPE_STRING);
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_COUNT);
test_equal(type, G_TYPE_UINT);
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_LAST_PLAY);
test_equal(type, G_TYPE_STRING);
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_FILE_PATH);
test_equal(type, G_TYPE_STRING);
/* This should trigger an assertion failure */
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_N_COLUMNS);
test_equal(type, G_TYPE_INVALID);
/* Tests before adding tracks to the collection */
test_equal(gtk_tree_model_get_iter_first(treemodel, &iter), false);
test_equal((void *)gtk_tree_model_get_path(treemodel, &iter), NULL);
/* Okay, now scan a directory and test again */
collection_add("tests/Music/Hyrule Symphony");
while (idle_run_task() == true) {}
test_equal(queue_size(collection_get_queue()), 13);
test_equal(gtk_tree_model_get_iter_first(treemodel, &iter), true);
test_equal(((struct track *)iter.user_data2)->tr_track, 1);
path = gtk_tree_model_get_path(treemodel, &iter);
test_not_equal((void *)path, NULL);
test_equal(gtk_tree_path_get_indices(path)[0], 0);
gtk_tree_path_free(path);
g_object_unref(model);
test_equal(G_IS_OBJECT(model), false);
}
DECLARE_UNIT_TESTS(
UNIT_TEST("Queue Model", test_model),
);