/* * Copyright 2013 (c) Anna Schumaker. */ #include #include #include #include #include static unsigned int i; void schedule_test(bool (*func)()) { i = 0; Glib::signal_timeout().connect(sigc::ptr_fun(func), 500); } void end_test() { Gtk::Main::quit(); } void click_button(const std::string &name) { print("Clicking button: %s\n", name.c_str()); get_button(name)->clicked(); } void select_treeview_row(const std::string &tv_name, const std::string &path) { Gtk::TreeView *treeview; get_builder()->get_widget(tv_name, treeview); treeview->set_cursor(Gtk::TreePath(path)); } void activate_treeview_row(const std::string &tv_name, const std::string &path) { Gtk::TreeView *treeview; Gtk::TreeViewColumn col("2"); get_builder()->get_widget(tv_name, treeview); treeview->row_activated(Gtk::TreePath(path), col); } void change_page(unsigned int page) { Gtk::Notebook *notebook; get_builder()->get_widget("o_notebook", notebook); notebook->set_current_page(page); } void pause_toggle() { Gtk::CheckButton *check; get_builder()->get_widget("o_pause_enabled", check); check->set_active(!check->get_active()); } void inc_pause() { Gtk::SpinButton *spin; get_builder()->get_widget("o_pause_count", spin); spin->spin(Gtk::SPIN_STEP_FORWARD, 1); } void dec_pause() { Gtk::SpinButton *spin; get_builder()->get_widget("o_pause_count", spin); spin->spin(Gtk::SPIN_STEP_BACKWARD, 1); } void set_pause(unsigned int value) { Gtk::SpinButton *spin; get_builder()->get_widget("o_pause_count", spin); spin->set_value(value); } /* Library tab tests */ bool test_1() { switch (i) { case 0: print("Test 1\n"); change_page(0); break; case 1: case 5: on_collection_toggled("0"); break; case 2: case 6: on_collection_toggled("1"); break; case 3: case 7: on_collection_toggled("2"); break; case 4: case 8: on_collection_toggled("3"); break; case 9: change_page(2); break; case 10: change_page(0); break; case 11: click_button("o_next"); break; case 12: click_button("o_play"); break; case 13: click_button("o_pause"); break; case 14: click_button("o_play"); break; case 15: click_button("o_stop"); break; case 16: click_button("o_next"); break; case 17: click_button("o_next"); break; case 18: click_button("o_prev"); break; case 19: click_button("o_play"); break; case 20: pause_toggle(); break; case 21: pause_toggle(); break; case 22: inc_pause(); break; case 23: inc_pause(); break; case 24: pause_toggle(); break; case 25: dec_pause(); break; case 26: dec_pause(); break; case 27: set_pause(3); break; case 28: change_page(1); break; case 29: change_page(0); break; case 30: case 31: case 32: case 33: case 34: break; default: end_test(); return false; }; i++; return true; } /* Collection manager tests */ bool test_0() { switch (i) { case 0: print("Test 0\n"); click_button("o_collection_import"); break; case 1: case 4: case 6: /* Wait for idle queue to finish */ if (idle::get_progress() == 1) break; return true; case 2: /* Select filepath */ Gtk::FileChooserWidget *chooser; get_builder()->get_widget("o_collection_chooser", chooser); chooser->set_filename("/tmp/library/0"); break; case 3: click_button("o_collection_ok"); break; case 5: click_button("o_collection_update"); break; case 7: select_treeview_row("o_collection_treeview", "0"); activate_treeview_row("o_collection_treeview", "0"); break; case 8: select_treeview_row("o_collection_treeview", "1"); activate_treeview_row("o_collection_treeview", "1"); break; case 9: select_treeview_row("o_collection_treeview", "2"); activate_treeview_row("o_collection_treeview", "2"); break; case 10: case 12: on_collection_toggled("0"); break; case 11: case 13: on_collection_toggled("2"); break; case 14: select_treeview_row("o_collection_treeview", "1"); break; case 15: do_collection_delete(); break; case 16: select_treeview_row("o_collection_treeview", "2"); break; case 17: do_collection_delete(); break; case 18: click_button("o_collection_import"); break; case 19: break; default: schedule_test(test_1); return false; } i++; return true; } int main(int argc, char **argv) { Gtk::Main ocarina(argc, argv); library::init(); library::reset(); Gtk::Window *window = ocarina_init(&argc, &argv); change_page(2); schedule_test(test_0); Gtk::Main::run(*window); cleanup_tabs(); return 0; }