diff options
author | Alejandro Piñeiro <apinheiro@igalia.com> | 2013-10-04 18:17:40 +0200 |
---|---|---|
committer | Alejandro Piñeiro <apinheiro@igalia.com> | 2013-11-06 18:11:16 +0100 |
commit | d9321c2cedd37a24b2e3ad8c309f4e5ae5bce58b (patch) | |
tree | 2ad014dbc15e3c2a301bb928650af1c0d08f3230 | |
parent | 3fec449edc8ea6ccfcc8759937bfa167e6246420 (diff) | |
download | atk-d9321c2cedd37a24b2e3ad8c309f4e5ae5bce58b.tar.gz |
tests: add a testdocument
Right now only test the newly added page-changed.
-rw-r--r-- | tests/Makefile.am | 4 | ||||
-rw-r--r-- | tests/testdocument.c | 132 |
2 files changed, 135 insertions, 1 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 3a3d191..935fca3 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -12,12 +12,14 @@ AM_CPPFLAGS = -I$(top_srcdir) \ DEPS = \ $(libatk) -noinst_PROGRAMS = testrole \ +noinst_PROGRAMS = testdocument \ + testrole \ testrelation \ teststateset LDADD = $(libatk) $(DEP_LIBS) +testdocument_SOURCES = testdocument.c testrole_SOURCES = testrole.c testrelation_SOURCES = testrelation.c teststateset_SOURCES = teststateset.c diff --git a/tests/testdocument.c b/tests/testdocument.c new file mode 100644 index 0000000..bab4cb0 --- /dev/null +++ b/tests/testdocument.c @@ -0,0 +1,132 @@ +/* ATK - Accessibility Toolkit + * Copyright 2001 Sun Microsystems Inc. + * Copyright 2013 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include <atk/atk.h> + +#define EXPECTED_NUMBER 5 + +GMainLoop *global_loop = NULL; +gint global_number_emissions = 0; + +#define TEST_TYPE_DOCUMENT (test_document_get_type ()) +#define TEST_DOCUMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_DOCUMENT, TestDocument)) +#define TEST_DOCUMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_TYPE_DOCUMENT, TestDocumentClass)) +#define TEST_IS_DOCUMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_DOCUMENT)) +#define TEST_IS_DOCUMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TEST_TYPE_DOCUMENT)) +#define TEST_DOCUMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TEST_TYPE_DOCUMENT, TestDocumentClass)) + +typedef struct _TestDocument TestDocument; +typedef struct _TestDocumentClass TestDocumentClass; + +struct _TestDocument +{ + AtkObject parent; +}; + +struct _TestDocumentClass +{ + AtkObjectClass parent_class; +}; + +GType test_document_get_type (void) G_GNUC_CONST; +static void test_document_interface_init (AtkDocumentIface *iface); + +G_DEFINE_TYPE_WITH_CODE (TestDocument, + test_document, + ATK_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (ATK_TYPE_DOCUMENT, + test_document_interface_init)); + +static void +test_document_class_init (TestDocumentClass *klass) +{ +} + +static void +test_document_init (TestDocument *document) +{ +} + +static void +test_document_interface_init (AtkDocumentIface *iface) +{ +} + +static void +document_page_changed_cb (AtkDocument *document, + gint page_number, + gpointer data) +{ + g_print ("Page-changed callback, page_number = %i\n", page_number); + global_number_emissions++; +} + +static gboolean +document_emit_page_changed (gpointer data) +{ + TestDocument* test_document = TEST_DOCUMENT (data); + static gint next_page = 1; + + g_print ("Moving to next page. Emitting page-change, page_number = %i\n", + next_page); + g_signal_emit_by_name (test_document, "page-changed", next_page++, NULL); + + if (next_page > EXPECTED_NUMBER) { + g_main_loop_quit (global_loop); + return G_SOURCE_REMOVE; + } else + return G_SOURCE_CONTINUE; +} + +static gboolean +init_test_document (void) +{ + GObject *my_document; + + my_document = g_object_new (TEST_TYPE_DOCUMENT, NULL); + + g_signal_connect (my_document, "page-changed", + G_CALLBACK (document_page_changed_cb), + NULL); + + g_idle_add (document_emit_page_changed, my_document); + + return TRUE; +} + + +int +main (gint argc, + char* argv[]) +{ + global_loop = g_main_loop_new (NULL, FALSE); + + g_print("Starting Document test suite\n"); + + init_test_document (); + g_main_loop_run (global_loop); + + if (global_number_emissions == EXPECTED_NUMBER) + g_print ("Document tests succeeded\n"); + else + g_print ("Document tests failed\n"); + + return 0; +} |