[gimp] app/tests: Add regression test for Recently Closed Docks
- From: Martin Nordholts <martinn src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp] app/tests: Add regression test for Recently Closed Docks
- Date: Sat, 13 Feb 2010 19:08:54 +0000 (UTC)
commit 33d66f5c7e97b5ae6622aa53930a1cffbedc79d5
Author: Martin Nordholts <martinn src gnome org>
Date: Sat Feb 13 20:05:41 2010 +0100
app/tests: Add regression test for Recently Closed Docks
Add a simple regression test for Windows â?? Recently Closed Docks.
app/tests/test-ui.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 90 insertions(+), 0 deletions(-)
---
diff --git a/app/tests/test-ui.c b/app/tests/test-ui.c
index c16192c..c30d017 100644
--- a/app/tests/test-ui.c
+++ b/app/tests/test-ui.c
@@ -29,6 +29,7 @@
#include "widgets/gimpdialogfactory.h"
#include "widgets/gimpdocked.h"
+#include "widgets/gimpdockwindow.h"
#include "widgets/gimphelp-ids.h"
#include "widgets/gimpsessioninfo.h"
#include "widgets/gimptooloptionseditor.h"
@@ -54,11 +55,14 @@ static void gimp_ui_tool_options_editor_updates (GimpTestFixture
gconstpointer data);
static void gimp_ui_create_new_image_via_dialog (GimpTestFixture *fixture,
gconstpointer data);
+static void gimp_ui_restore_recently_closed_dock (GimpTestFixture *fixture,
+ gconstpointer data);
static void gimp_ui_switch_to_single_window_mode (GimpTestFixture *fixture,
gconstpointer data);
static void gimp_ui_switch_back_to_multi_window_mode (GimpTestFixture *fixture,
gconstpointer data);
static GimpUIManager * gimp_ui_get_ui_manager (Gimp *gimp);
+static void gimp_ui_synthesize_delete_event (GtkWidget *widget);
int main(int argc, char **argv)
@@ -91,6 +95,12 @@ int main(int argc, char **argv)
NULL,
gimp_ui_create_new_image_via_dialog,
NULL);
+ g_test_add ("/gimp-ui/restore-recently-closed-dock",
+ GimpTestFixture,
+ gimp,
+ NULL,
+ gimp_ui_restore_recently_closed_dock,
+ NULL);
g_test_add ("/gimp-ui/switch-to-single-window-mode",
GimpTestFixture,
gimp,
@@ -215,6 +225,64 @@ gimp_ui_create_new_image_via_dialog (GimpTestFixture *fixture,
}
static void
+gimp_ui_restore_recently_closed_dock (GimpTestFixture *fixture,
+ gconstpointer data)
+{
+ Gimp *gimp = GIMP (data);
+ GList *iter = NULL;
+ GtkWidget *dock_window = NULL;
+ gint n_session_infos_before_close = -1;
+ gint n_session_infos_after_close = -1;
+ gint n_session_infos_after_restore = -1;
+ GList *session_infos = NULL;
+
+ /* Find a non-toolbox dock window */
+ for (iter = gimp_dialog_factory_get_session_infos (global_dock_factory);
+ iter;
+ iter = g_list_next (iter))
+ {
+ GtkWidget *widget = gimp_session_info_get_widget (iter->data);
+
+ if (GIMP_IS_DOCK_WINDOW (widget) &&
+ ! gimp_dock_window_has_toolbox (GIMP_DOCK_WINDOW (widget)))
+ {
+ dock_window = widget;
+ break;
+ }
+ }
+ g_assert (dock_window != NULL);
+
+ /* Count number of docks */
+ session_infos = gimp_dialog_factory_get_session_infos (global_dock_factory);
+ n_session_infos_before_close = g_list_length (session_infos);
+
+ /* Close one of the dock windows */
+ gimp_ui_synthesize_delete_event (GTK_WIDGET (dock_window));
+ gimp_test_run_mainloop_until_idle ();
+
+ /* Make sure the number of session infos went down */
+ session_infos = gimp_dialog_factory_get_session_infos (global_dock_factory);
+ n_session_infos_after_close = g_list_length (session_infos);
+ g_assert_cmpint (n_session_infos_before_close,
+ >,
+ n_session_infos_after_close);
+
+ /* Restore the (only avaiable) closed dock and make sure the session
+ * infos in the global dock factory are increased again
+ */
+ gimp_ui_manager_activate_action (gimp_ui_get_ui_manager (gimp),
+ "windows",
+ /* FIXME: This is severly hardcoded */
+ "windows-recent-0003");
+ gimp_test_run_mainloop_until_idle ();
+ session_infos = gimp_dialog_factory_get_session_infos (global_dock_factory);
+ n_session_infos_after_restore = g_list_length (session_infos);
+ g_assert_cmpint (n_session_infos_after_close,
+ <,
+ n_session_infos_after_restore);
+}
+
+static void
gimp_ui_switch_to_single_window_mode (GimpTestFixture *fixture,
gconstpointer data)
{
@@ -268,3 +336,25 @@ gimp_ui_get_ui_manager (Gimp *gimp)
return ui_manager;
}
+
+/**
+ * gimp_ui_synthesize_delete_event:
+ * @widget:
+ *
+ * Synthesize a delete event to @widget.
+ **/
+static void
+gimp_ui_synthesize_delete_event (GtkWidget *widget)
+{
+ GdkWindow *window = NULL;
+ GdkEvent *event = NULL;
+
+ window = gtk_widget_get_window (widget);
+ g_assert (window);
+
+ event = gdk_event_new (GDK_DELETE);
+ event->any.window = g_object_ref (window);
+ event->any.send_event = TRUE;
+ gtk_main_do_event (event);
+ gdk_event_free (event);
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]