/* * Copyright 2016 (c) Anna Schumaker. */ #define TEST_NEED_AUDIO #define TEST_NEED_COLLECTION #define TEST_NEED_PLAYLIST #define TEST_NEED_SIDEBAR #define TEST_NEED_WINDOW #include #include #include #include static void *test_queue_init(struct queue *queue) { return gui_queue_alloc(queue, "Test Queue", GQ_CAN_RANDOM | GQ_CAN_REPEAT); } void __test_queue_clear(struct queue *queue, unsigned int n) {} static const struct queue_ops test_ops = { .qop_init = test_queue_init, .qop_deinit = gui_queue_free, .qop_cleared = __test_queue_clear, }; static void test_queue() { GtkToggleButton *random, *repeat; GtkWidget *random_img, *repeat_img; struct gui_queue *gq; GtkEntry *search; struct queue q; int argc = 0; gtk_init(&argc, NULL); gui_builder_init("share/ocarina/ocarina6.glade"); search = GTK_ENTRY(gui_builder_widget("o_search")); random = GTK_TOGGLE_BUTTON(gui_builder_widget("o_random")); repeat = GTK_TOGGLE_BUTTON(gui_builder_widget("o_repeat")); random_img = gtk_button_get_image(GTK_BUTTON(random)); repeat_img = gtk_button_get_image(GTK_BUTTON(repeat)); /* Test initialization */ queue_init(&q, 0, &test_ops); gq = gui_queue(&q); test_equal(gui_queue_can_random(gq), (bool)true); test_equal(gui_queue_can_repeat(gq), (bool)true); gq->gq_flags = 0; test_equal(gui_queue_can_random(NULL), (bool)false); test_equal(gui_queue_can_repeat(NULL), (bool)false); gtk_entry_set_text(search, "Test text"); /* Show a queue where random and repeat are disabled */ gui_queue_show(gq); test_equal(gtk_widget_get_sensitive(GTK_WIDGET(random)), false); test_equal(gtk_widget_get_sensitive(GTK_WIDGET(repeat)), false); test_equal(gtk_toggle_button_get_active(random), false); test_equal(gtk_toggle_button_get_active(repeat), false); test_equal(gtk_widget_get_sensitive(random_img), false); test_equal(gtk_widget_get_sensitive(repeat_img), false); test_equal(gtk_entry_get_text(search), ""); /* Test clicking random button. */ gtk_toggle_button_set_active(random, true); test_equal(gtk_widget_get_sensitive(random_img), true); test_equal(queue_has_flag(&q, Q_RANDOM), (bool)true); gtk_toggle_button_set_active(random, false); test_equal(gtk_widget_get_sensitive(random_img), false); test_equal(queue_has_flag(&q, Q_RANDOM), (bool)false); /* Test clicking repeat button. */ gtk_toggle_button_set_active(repeat, true); test_equal(gtk_widget_get_sensitive(repeat_img), true); test_equal(queue_has_flag(&q, Q_REPEAT), (bool)true); gtk_toggle_button_set_active(repeat, false); test_equal(gtk_widget_get_sensitive(repeat_img), false); test_equal(queue_has_flag(&q, Q_REPEAT), (bool)false); /* Show a queue where random and repeat are enabled */ gq->gq_flags = GQ_CAN_RANDOM | GQ_CAN_REPEAT; q.q_flags = Q_RANDOM | Q_REPEAT; gui_queue_show(gq); test_equal(gtk_widget_get_sensitive(GTK_WIDGET(random)), true); test_equal(gtk_widget_get_sensitive(GTK_WIDGET(repeat)), true); test_equal(gtk_toggle_button_get_active(random), true); test_equal(gtk_toggle_button_get_active(repeat), true); test_equal(gtk_widget_get_sensitive(random_img), true); test_equal(gtk_widget_get_sensitive(repeat_img), true); /* Attempt to show a NULL pointer */ gui_queue_show(NULL); test_equal(gtk_widget_get_sensitive(GTK_WIDGET(search)), false); test_equal(gtk_widget_get_sensitive(GTK_WIDGET(random)), false); test_equal(gtk_widget_get_sensitive(GTK_WIDGET(repeat)), false); test_equal(gtk_toggle_button_get_active(random), false); test_equal(gtk_toggle_button_get_active(repeat), false); test_equal(gtk_widget_get_sensitive(random_img), false); test_equal(gtk_widget_get_sensitive(repeat_img), false); queue_deinit(&q); test_equal((void *)gui_queue(&q), NULL); } DECLARE_UNIT_TESTS( UNIT_TEST("Queue", test_queue), );