/* * 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); } /* 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: 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(); schedule_test(test_0); Gtk::Main::run(*window); cleanup_tabs(); return 0; }