aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXan Lopez <xan@igalia.com>2012-06-15 15:09:17 +0800
committerXan Lopez <xan@igalia.com>2012-06-15 15:09:17 +0800
commit6594295a337008aed3495adf7dade4c2d54c783e (patch)
tree2f028171f6372cb4a627c096b1dcfd166fcc836a
parent57e1bece15f78b6372e57f51937ab42e9f77fe07 (diff)
downloadgsoc2013-epiphany-6594295a337008aed3495adf7dade4c2d54c783e.tar.gz
gsoc2013-epiphany-6594295a337008aed3495adf7dade4c2d54c783e.tar.zst
gsoc2013-epiphany-6594295a337008aed3495adf7dade4c2d54c783e.zip
ephy-session-test: test recovering a multiple-window session
-rw-r--r--tests/ephy-session-test.c51
1 files changed, 50 insertions, 1 deletions
diff --git a/tests/ephy-session-test.c b/tests/ephy-session-test.c
index 70d2e4bc8..06b8d624c 100644
--- a/tests/ephy-session-test.c
+++ b/tests/ephy-session-test.c
@@ -65,6 +65,51 @@ test_ephy_session_load ()
view = ephy_embed_get_web_view (embed);
g_assert (view);
g_assert_cmpstr (ephy_web_view_get_address (view), ==, "ephy-about:memory");
+
+ /* FIXME: Destroy the window. I think ideally we'd like something
+ * like 'ephy_session_clear ()' to reset everything to its initial
+ * state here. That or allow EphyShell to be created more than
+ * once and do it once per test. */
+ gtk_widget_destroy (GTK_WIDGET (l->data));
+}
+
+const char *session_data_many_windows =
+"<?xml version=\"1.0\"?>"
+"<session>"
+ "<window x=\"100\" y=\"26\" width=\"1067\" height=\"740\" active-tab=\"0\" role=\"epiphany-window-7da420dd\">"
+ "<embed url=\"about:epiphany\" title=\"Epiphany\"/>"
+ "</window>"
+ "<window x=\"73\" y=\"26\" width=\"1067\" height=\"740\" active-tab=\"0\" role=\"epiphany-window-1261c786\">"
+ "<embed url=\"about:epiphany\" title=\"Epiphany\"/>"
+ "</window>"
+"</session>";
+
+static void
+test_ephy_session_load_many_windows ()
+{
+ EphySession *session;
+ gboolean ret;
+ GList *l, *p;
+ EphyEmbed *embed;
+ EphyWebView *view;
+
+ session = EPHY_SESSION (ephy_shell_get_session (ephy_shell));
+ g_assert (session);
+
+ ret = ephy_session_load_from_string (session, session_data_many_windows, -1, 0);
+ g_assert (ret);
+
+ l = ephy_session_get_windows (session);
+ g_assert (l);
+ g_assert_cmpint (g_list_length (l), ==, 2);
+
+ for (p = l; p; p = p->next) {
+ embed = ephy_embed_container_get_active_child (EPHY_EMBED_CONTAINER (p->data));
+ g_assert (embed);
+ view = ephy_embed_get_web_view (embed);
+ g_assert (view);
+ g_assert_cmpstr (ephy_web_view_get_address (view), ==, "ephy-about:epiphany");
+ }
}
int
@@ -85,14 +130,18 @@ main (int argc, char *argv[])
}
_ephy_shell_create_instance (EPHY_EMBED_SHELL_MODE_TEST);
+ g_assert (ephy_shell);
g_test_add_func ("/src/ephy-session/load",
test_ephy_session_load);
+ g_test_add_func ("/src/ephy-session/load-many-windows",
+ test_ephy_session_load_many_windows);
+
ret = g_test_run ();
- g_object_unref (ephy_shell);
ephy_file_helpers_shutdown ();
+ g_object_unref (ephy_shell);
return ret;
}