ocarina/tests/gui/gui.cpp

269 lines
4.5 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);
}
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;
}