/* * Copyright 2016 (c) Anna Schumaker. */ #include #include #include #include #include #include struct core_init_data init_data = {}; void test_treeview_init() { g_assert_nonnull(gui_treeview()); g_assert_true(GTK_IS_TREE_VIEW(gui_treeview())); g_assert(gtk_tree_view_get_model(gui_treeview()) == GTK_TREE_MODEL(gui_filter_get())); } void test_treeview_sort() { GtkTreeViewColumn *col; unsigned int i, sort; /* Switch to collection playlist and check sort arrows. */ gui_treeview_set_playlist(playlist_get(PL_SYSTEM, "Collection")); g_assert(gui_model_get_playlist() == playlist_get(PL_SYSTEM, "Collection")); for (i = 0; i < GUI_MODEL_N_COLUMNS; i++) { col = gtk_tree_view_get_column(gui_treeview(), i); switch (i) { case GUI_MODEL_FILE_PATH: case GUI_MODEL_FONT: g_assert_null(col); break; case GUI_MODEL_ARTIST: case GUI_MODEL_YEAR: case GUI_MODEL_TRACK_NR: g_assert_true( gtk_tree_view_column_get_sort_indicator(col)); g_assert_cmpuint( gtk_tree_view_column_get_sort_order(col), ==, GTK_SORT_ASCENDING); break; default: g_assert_false( gtk_tree_view_column_get_sort_indicator(col)); } } /* Click some columns and check that indicators change. */ col = gtk_tree_view_get_column(gui_treeview(), GUI_MODEL_YEAR); gtk_tree_view_column_clicked(col); g_assert_cmpstr(gtk_label_get_text(gui_sorting()), ==, "Sorting: {Year}"); col = gtk_tree_view_get_column(gui_treeview(), GUI_MODEL_LENGTH); gtk_tree_view_column_clicked(col); g_assert_cmpstr(gtk_label_get_text(gui_sorting()), ==, "Sorting: {Year, Length}"); col = gtk_tree_view_get_column(gui_treeview(), GUI_MODEL_TRACK_NR); gtk_tree_view_column_clicked(col); g_assert_cmpstr(gtk_label_get_text(gui_sorting()), ==, "Sorting: {Year, Length, #}"); col = gtk_tree_view_get_column(gui_treeview(), GUI_MODEL_LENGTH); gtk_tree_view_column_clicked(col); g_assert_cmpstr(gtk_label_get_text(gui_sorting()), ==, "Sorting: {Year, -Length, #}"); for (i = 0; i < GUI_MODEL_N_COLUMNS; i++) { sort = GTK_SORT_ASCENDING; col = gtk_tree_view_get_column(gui_treeview(), i); switch (i) { case GUI_MODEL_FILE_PATH: case GUI_MODEL_FONT: g_assert_null(col); break; case GUI_MODEL_LENGTH: sort = GTK_SORT_DESCENDING; case GUI_MODEL_YEAR: case GUI_MODEL_TRACK_NR: g_assert_true( gtk_tree_view_column_get_sort_indicator(col)); g_assert_cmpuint( gtk_tree_view_column_get_sort_order(col), ==, sort); break; default: g_assert_false( gtk_tree_view_column_get_sort_indicator(col)); } } /* History playlist should not have any sort arrows. */ gui_treeview_set_playlist(playlist_get(PL_SYSTEM, "History")); g_assert(gui_model_get_playlist() == playlist_get(PL_SYSTEM, "History")); g_assert_cmpstr(gtk_label_get_text(gui_sorting()), ==, ""); for (i = 0; i < GUI_MODEL_N_COLUMNS; i++) { col = gtk_tree_view_get_column(gui_treeview(), i); if (!col) break; g_assert_false(gtk_tree_view_column_get_sort_indicator(col)); } } int main(int argc, char **argv) { int ret; gtk_init(&argc, NULL); core_init(&argc, NULL, &init_data); gui_builder_init("share/ocarina/ocarina.ui"); gui_model_init(); gui_filter_init(); gui_treeview_init(); while (idle_run_task()) {} g_test_init(&argc, &argv, NULL); g_test_add_func("/Gui/Treeview/Init", test_treeview_init); g_test_add_func("/Gui/Treeview/Sort", test_treeview_sort); ret = g_test_run(); core_deinit(); gui_treeview_deinit(); gui_filter_deinit(); gui_model_deinit(); return ret; }