ocarina/tests/gui/gui.cpp

173 lines
3.0 KiB
C++

/*
* Copyright 2013 (c) Anna Schumaker.
*/
#include <deck.h>
#include <idle.h>
#include <ocarina.h>
#include <print.h>
#include <stdlib.h>
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;
}