tests: Build model test with ctest
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
3e2ed7761c
commit
c671c7aefc
|
@ -6,3 +6,4 @@ endfunction()
|
|||
|
||||
gui_unit_test(Builder)
|
||||
gui_unit_test(Settings)
|
||||
gui_unit_test(Model)
|
||||
|
|
|
@ -26,7 +26,7 @@ def GuiTest(name):
|
|||
env.UsePackage("gmodule-export-2.0")
|
||||
gui_objs += [ env.Object("../../gui/builder.c") ]
|
||||
gui_objs += [ env.Object("../../gui/settings.c") ]
|
||||
res += [ GuiTest("model") ]
|
||||
gui_objs += [ env.Object("../../gui/model.c") ]
|
||||
res += [ GuiTest("view") ]
|
||||
res += [ GuiTest("queue") ]
|
||||
res += [ GuiTest("window") ]
|
||||
|
|
|
@ -60,98 +60,108 @@ static void test_init()
|
|||
|
||||
gui_queue_model_init();
|
||||
model = gui_queue_model_get();
|
||||
test_equal((void *)gui_queue_model_get_queue(), NULL);
|
||||
g_assert_null(gui_queue_model_get_queue());
|
||||
gui_queue_model_set_queue(playlist_get_queue(PL_SYSTEM, "Collection"));
|
||||
test_not_equal((void *)model, NULL);
|
||||
test_equal(GTK_IS_TREE_MODEL(model), true);
|
||||
test_equal((void *)gui_queue_model_get_queue(),
|
||||
(void *)playlist_get_queue(PL_SYSTEM, "Collection"));
|
||||
g_assert_nonnull(model);
|
||||
g_assert_true(GTK_IS_TREE_MODEL(model));
|
||||
g_assert(gui_queue_model_get_queue() == playlist_get_queue(PL_SYSTEM, "Collection"));
|
||||
|
||||
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), 11);
|
||||
g_assert_cmpuint(gtk_tree_model_get_flags(treemodel), ==, GTK_TREE_MODEL_LIST_ONLY);
|
||||
g_assert_cmpuint(gtk_tree_model_get_n_columns(treemodel), ==, 11);
|
||||
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_TRACK_NR);
|
||||
test_equal(type, G_TYPE_UINT);
|
||||
g_assert_cmpuint(type, ==, G_TYPE_UINT);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_TITLE);
|
||||
test_equal(type, G_TYPE_STRING);
|
||||
g_assert_cmpuint(type, ==, G_TYPE_STRING);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_LENGTH);
|
||||
test_equal(type, G_TYPE_STRING);
|
||||
g_assert_cmpuint(type, ==, G_TYPE_STRING);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_ARTIST);
|
||||
test_equal(type, G_TYPE_STRING);
|
||||
g_assert_cmpuint(type, ==, G_TYPE_STRING);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_ALBUM);
|
||||
test_equal(type, G_TYPE_STRING);
|
||||
g_assert_cmpuint(type, ==, G_TYPE_STRING);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_YEAR);
|
||||
test_equal(type, G_TYPE_UINT);
|
||||
g_assert_cmpuint(type, ==, G_TYPE_UINT);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_GENRE);
|
||||
test_equal(type, G_TYPE_STRING);
|
||||
g_assert_cmpuint(type, ==, G_TYPE_STRING);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_COUNT);
|
||||
test_equal(type, G_TYPE_UINT);
|
||||
g_assert_cmpuint(type, ==, G_TYPE_UINT);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_LAST_PLAY);
|
||||
test_equal(type, G_TYPE_STRING);
|
||||
g_assert_cmpuint(type, ==, G_TYPE_STRING);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_FILE_PATH);
|
||||
test_equal(type, G_TYPE_STRING);
|
||||
g_assert_cmpuint(type, ==, G_TYPE_STRING);
|
||||
type = gtk_tree_model_get_column_type(treemodel, Q_MODEL_FONT);
|
||||
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);
|
||||
g_assert_cmpuint(type, ==, G_TYPE_STRING);
|
||||
|
||||
gui_queue_model_deinit();
|
||||
test_equal(G_IS_OBJECT(model), false);
|
||||
g_assert_false(G_IS_OBJECT(model));
|
||||
}
|
||||
|
||||
static void test_empty()
|
||||
static void __test_empty_subprocess()
|
||||
{
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
GValue value;
|
||||
GType type;
|
||||
|
||||
gui_queue_model_init();
|
||||
model = GTK_TREE_MODEL(gui_queue_model_get());
|
||||
gui_queue_model_set_queue(playlist_get_queue(PL_SYSTEM, "Collection"));
|
||||
memset(&value, 0, sizeof(GValue));
|
||||
|
||||
test_equal(gtk_tree_model_get_iter_first(model, &iter), false);
|
||||
test_equal((void *)gtk_tree_model_get_path(model, &iter), NULL);
|
||||
test_equal((void *)gui_queue_model_iter_get_track(&iter), NULL);
|
||||
g_assert_false(gtk_tree_model_get_iter_first(model, &iter));
|
||||
g_assert_null(gtk_tree_model_get_path(model, &iter));
|
||||
g_assert_null(gui_queue_model_iter_get_track(&iter));
|
||||
|
||||
/* These will all trigger assertion failures ... sorry */
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_TRACK_NR, &value);
|
||||
test_equal(G_IS_VALUE(&value), false);
|
||||
g_assert_false(G_IS_VALUE(&value));
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_TITLE, &value);
|
||||
test_equal(G_IS_VALUE(&value), false);
|
||||
g_assert_false(G_IS_VALUE(&value));
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_LENGTH, &value);
|
||||
test_equal(G_IS_VALUE(&value), false);
|
||||
g_assert_false(G_IS_VALUE(&value));
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_ARTIST, &value);
|
||||
test_equal(G_IS_VALUE(&value), false);
|
||||
g_assert_false(G_IS_VALUE(&value));
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_ALBUM, &value);
|
||||
test_equal(G_IS_VALUE(&value), false);
|
||||
g_assert_false(G_IS_VALUE(&value));
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_YEAR, &value);
|
||||
test_equal(G_IS_VALUE(&value), false);
|
||||
g_assert_false(G_IS_VALUE(&value));
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_GENRE, &value);
|
||||
test_equal(G_IS_VALUE(&value), false);
|
||||
g_assert_false(G_IS_VALUE(&value));
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_COUNT, &value);
|
||||
test_equal(G_IS_VALUE(&value), false);
|
||||
g_assert_false(G_IS_VALUE(&value));
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_LAST_PLAY, &value);
|
||||
test_equal(G_IS_VALUE(&value), false);
|
||||
g_assert_false(G_IS_VALUE(&value));
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_FILE_PATH, &value);
|
||||
test_equal(G_IS_VALUE(&value), false);
|
||||
g_assert_false(G_IS_VALUE(&value));
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_FONT, &value);
|
||||
test_equal(G_IS_VALUE(&value), false);
|
||||
g_assert_false(G_IS_VALUE(&value));
|
||||
|
||||
test_equal(gtk_tree_model_iter_next(model, &iter), false);
|
||||
test_equal(gtk_tree_model_iter_children(model, &iter, NULL), false);
|
||||
test_equal(gtk_tree_model_iter_has_child(model, &iter), false);
|
||||
test_equal(gtk_tree_model_iter_n_children(model, &iter), 0);
|
||||
test_equal(gtk_tree_model_iter_n_children(model, NULL), 0);
|
||||
test_equal(gtk_tree_model_iter_nth_child(model, &iter, NULL, 3), false);
|
||||
test_equal(gtk_tree_model_iter_parent(model, &iter, &iter), false);
|
||||
type = gtk_tree_model_get_column_type(model, Q_MODEL_N_COLUMNS);
|
||||
g_assert_cmpuint(type, ==, G_TYPE_INVALID);
|
||||
|
||||
g_assert_false(gtk_tree_model_iter_next(model, &iter));
|
||||
g_assert_false(gtk_tree_model_iter_children(model, &iter, NULL));
|
||||
g_assert_false(gtk_tree_model_iter_has_child(model, &iter));
|
||||
g_assert_cmpuint(gtk_tree_model_iter_n_children(model, &iter), ==, 0);
|
||||
g_assert_cmpuint(gtk_tree_model_iter_n_children(model, NULL), ==, 0);
|
||||
g_assert_false(gtk_tree_model_iter_nth_child(model, &iter, NULL, 3));
|
||||
g_assert_false(gtk_tree_model_iter_parent(model, &iter, &iter));
|
||||
|
||||
gui_queue_model_deinit();
|
||||
}
|
||||
|
||||
static void test_empty()
|
||||
{
|
||||
if (g_test_subprocess()) {
|
||||
__test_empty_subprocess();
|
||||
return;
|
||||
}
|
||||
|
||||
g_test_trap_subprocess(NULL, 0, 0);
|
||||
g_test_trap_assert_failed();
|
||||
}
|
||||
|
||||
static void test_model()
|
||||
{
|
||||
struct db_entry *dbe, *next;
|
||||
|
@ -172,7 +182,7 @@ static void test_model()
|
|||
model = GTK_TREE_MODEL(gui_queue_model_get());
|
||||
label = GTK_LABEL(gui_builder_widget("o_runtime"));
|
||||
gui_queue_model_set_queue(playlist_get_queue(PL_SYSTEM, "Collection"));
|
||||
test_equal(gtk_label_get_text(label), "");
|
||||
g_assert_cmpstr(gtk_label_get_text(label), ==, "");
|
||||
memset(&value, 0, sizeof(GValue));
|
||||
|
||||
g_signal_connect(model, "row-inserted", (GCallback)on_row_inserted, NULL);
|
||||
|
@ -183,111 +193,114 @@ static void test_model()
|
|||
playlist_get_queue(PL_SYSTEM, "Collection")->q_private = model;
|
||||
playlist_new(PL_LIBRARY, "tests/Music/Hyrule Symphony");
|
||||
while (idle_run_task() == true) {}
|
||||
test_equal(playlist_size(PL_SYSTEM, "Collection"), 13);
|
||||
test_equal(count_insert, 13);
|
||||
g_assert_cmpuint(playlist_size(PL_SYSTEM, "Collection"), ==, 13);
|
||||
g_assert_cmpuint(count_insert, ==, 13);
|
||||
queue_resort(playlist_get_queue(PL_SYSTEM, "Collection"));
|
||||
test_equal(count_update, 13);
|
||||
g_assert_cmpuint(count_update, ==, 13);
|
||||
playlist_add(PL_SYSTEM, "Favorites", track_get(0));
|
||||
playlist_add(PL_SYSTEM, "Favorites", track_get(1));
|
||||
playlist_add(PL_SYSTEM, "Favorites", track_get(2));
|
||||
test_equal(playlist_size(PL_SYSTEM, "Favorites"), 3);
|
||||
test_equal(gtk_label_get_text(label), "42 minutes, 45 seconds");
|
||||
g_assert_cmpuint(playlist_size(PL_SYSTEM, "Favorites"), ==, 3);
|
||||
g_assert_cmpstr(gtk_label_get_text(label), ==, "42 minutes, 45 seconds");
|
||||
|
||||
/* ... and test again */
|
||||
test_equal(gtk_tree_model_get_iter_first(model, &iter), true);
|
||||
g_assert_true(gtk_tree_model_get_iter_first(model, &iter));
|
||||
track = gui_queue_model_iter_get_track(&iter);
|
||||
test_equal(track->tr_track, 1);
|
||||
g_assert_cmpuint(track->tr_track, ==, 1);
|
||||
audio_load(track);
|
||||
|
||||
path = gtk_tree_model_get_path(model, &iter);
|
||||
test_not_equal((void *)path, NULL);
|
||||
test_equal(gtk_tree_path_get_indices(path)[0], 0);
|
||||
test_equal((void *)gui_queue_model_path_get_track(path), (void *)track);
|
||||
g_assert_nonnull(path);
|
||||
g_assert_cmpuint(gtk_tree_path_get_indices(path)[0], ==, 0);
|
||||
g_assert(gui_queue_model_path_get_track(path) == track);
|
||||
gtk_tree_path_free(path);
|
||||
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_TRACK_NR, &value);
|
||||
test_equal(g_value_get_uint(&value), track->tr_track);
|
||||
g_assert_cmpuint(g_value_get_uint(&value), ==, track->tr_track);
|
||||
g_value_unset(&value);
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_TITLE, &value);
|
||||
test_equal(g_value_get_string(&value), "Title Theme");
|
||||
g_assert_cmpstr(g_value_get_string(&value), ==, "Title Theme");
|
||||
g_value_unset(&value);
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_LENGTH, &value);
|
||||
test_equal(g_value_get_string(&value), "4:03");
|
||||
g_assert_cmpstr(g_value_get_string(&value), ==, "4:03");
|
||||
g_value_unset(&value);
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_ARTIST, &value);
|
||||
test_equal(g_value_get_string(&value), "Koji Kondo");
|
||||
g_assert_cmpstr(g_value_get_string(&value), ==, "Koji Kondo");
|
||||
g_value_unset(&value);
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_ALBUM, &value);
|
||||
test_equal(g_value_get_string(&value), "Hyrule Symphony");
|
||||
g_assert_cmpstr(g_value_get_string(&value), ==, "Hyrule Symphony");
|
||||
g_value_unset(&value);
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_YEAR, &value);
|
||||
test_equal(g_value_get_uint(&value), 1998);
|
||||
g_assert_cmpuint(g_value_get_uint(&value), ==, 1998);
|
||||
g_value_unset(&value);
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_GENRE, &value);
|
||||
test_equal(g_value_get_string(&value), "Game");
|
||||
g_assert_cmpstr(g_value_get_string(&value), ==, "Game");
|
||||
g_value_unset(&value);
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_COUNT, &value);
|
||||
test_equal(g_value_get_uint(&value), 0);
|
||||
g_assert_cmpuint(g_value_get_uint(&value), ==, 0);
|
||||
g_value_unset(&value);
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_LAST_PLAY, &value);
|
||||
test_equal(g_value_get_string(&value), "Never");
|
||||
g_assert_cmpstr(g_value_get_string(&value), ==, "Never");
|
||||
g_value_unset(&value);
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_FILE_PATH, &value);
|
||||
test_equal(g_value_get_string(&value),
|
||||
g_assert_cmpstr(g_value_get_string(&value), ==,
|
||||
"tests/Music/Hyrule Symphony/01 - Title Theme.ogg");
|
||||
g_value_unset(&value);
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_FONT, &value);
|
||||
test_equal(g_value_get_string(&value), "bold");
|
||||
g_assert_cmpstr(g_value_get_string(&value), ==, "bold");
|
||||
g_value_unset(&value);
|
||||
|
||||
test_equal(gtk_tree_model_iter_next(model, &iter), true);
|
||||
g_assert_true(gtk_tree_model_iter_next(model, &iter));
|
||||
track = gui_queue_model_iter_get_track(&iter);
|
||||
test_equal(track->tr_track, 2);
|
||||
g_assert_cmpuint(track->tr_track, ==, 2);
|
||||
gtk_tree_model_get_value(model, &iter, Q_MODEL_FONT, &value);
|
||||
test_equal(g_value_get_string(&value), "");
|
||||
g_assert_cmpstr(g_value_get_string(&value), ==, "");
|
||||
g_value_unset(&value);
|
||||
|
||||
test_equal(gtk_tree_model_iter_children(model, &iter, NULL), true);
|
||||
g_assert_true(gtk_tree_model_iter_children(model, &iter, NULL));
|
||||
track = gui_queue_model_iter_get_track(&iter);
|
||||
test_equal(track->tr_track, 1);
|
||||
g_assert_cmpuint(track->tr_track, ==, 1);
|
||||
|
||||
test_equal(gtk_tree_model_iter_has_child(model, &iter), false);
|
||||
test_equal(gtk_tree_model_iter_n_children(model, &iter), 0);
|
||||
test_equal(gtk_tree_model_iter_n_children(model, NULL), 13);
|
||||
g_assert_false(gtk_tree_model_iter_has_child(model, &iter));
|
||||
g_assert_cmpuint(gtk_tree_model_iter_n_children(model, &iter), ==, 0);
|
||||
g_assert_cmpuint(gtk_tree_model_iter_n_children(model, NULL), ==, 13);
|
||||
|
||||
gui_queue_model_set_queue(playlist_get_queue(PL_SYSTEM, "Favorites"));
|
||||
test_equal(count_delete, 13);
|
||||
test_equal(count_insert, 14);
|
||||
test_equal(gtk_tree_model_iter_n_children(model, NULL), 3);
|
||||
test_equal(gtk_label_get_text(label), "10 minutes, 46 seconds");
|
||||
g_assert_cmpuint(count_delete, ==, 13);
|
||||
g_assert_cmpuint(count_insert, ==, 14);
|
||||
g_assert_cmpuint(gtk_tree_model_iter_n_children(model, NULL), ==, 3);
|
||||
g_assert_cmpstr(gtk_label_get_text(label), ==, "10 minutes, 46 seconds");
|
||||
|
||||
gui_queue_model_set_queue(NULL);
|
||||
test_equal(count_delete, 16);
|
||||
test_equal(count_insert, 14);
|
||||
test_equal(gtk_tree_model_iter_n_children(model, NULL), 0);
|
||||
test_equal(gtk_label_get_text(label), "");
|
||||
g_assert_cmpuint(count_delete, ==, 16);
|
||||
g_assert_cmpuint(count_insert, ==, 14);
|
||||
g_assert_cmpuint(gtk_tree_model_iter_n_children(model, NULL), ==, 0);
|
||||
g_assert_cmpstr(gtk_label_get_text(label), ==, "");
|
||||
|
||||
gui_queue_model_set_queue(playlist_get_queue(PL_SYSTEM, "Collection"));
|
||||
test_equal(gtk_label_get_text(label), "42 minutes, 45 seconds");
|
||||
test_equal(count_delete, 16);
|
||||
test_equal(count_insert, 15);
|
||||
g_assert_cmpuint(count_delete, ==, 16);
|
||||
g_assert_cmpuint(count_insert, ==, 15);
|
||||
g_assert_cmpstr(gtk_label_get_text(label), ==, "42 minutes, 45 seconds");
|
||||
|
||||
test_equal(gtk_tree_model_iter_nth_child(model, &iter, NULL, 3), true);
|
||||
g_assert_true(gtk_tree_model_iter_nth_child(model, &iter, NULL, 3));
|
||||
track = gui_queue_model_iter_get_track(&iter);
|
||||
test_equal(track->tr_track, 4);
|
||||
g_assert_cmpuint(track->tr_track, ==, 4);
|
||||
|
||||
test_equal(gtk_tree_model_iter_parent(model, &iter, &iter), false);
|
||||
g_assert_false(gtk_tree_model_iter_parent(model, &iter, &iter));
|
||||
|
||||
db_for_each(dbe, next, track_db_get())
|
||||
playlist_remove(PL_SYSTEM, "Collection", TRACK(dbe));
|
||||
test_equal(count_delete, 29);
|
||||
g_assert_cmpuint(count_delete, ==, 29);
|
||||
|
||||
core_deinit();
|
||||
gui_queue_model_deinit();
|
||||
}
|
||||
|
||||
DECLARE_UNIT_TESTS(
|
||||
UNIT_TEST("Queue Model Init", test_init),
|
||||
UNIT_TEST("Queue Model (Empty Queue)", test_empty),
|
||||
UNIT_TEST("Queue Model", test_model),
|
||||
);
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
g_test_add_func("/Gui/Queue Model/Init", test_init);
|
||||
g_test_add_func("/Gui/Queue Model/Empty", test_empty);
|
||||
g_test_add_func("/Gui/Queue Model", test_model);
|
||||
return g_test_run();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue