[virt-tools-list] [PATCH virt-viewer v3 2/3] tests: Add hotkeys test
Pavel Grunt
pgrunt at redhat.com
Tue May 31 09:01:23 UTC 2016
Check if expected g_warning messages are logged.
Related: rhbz#1339572
Acked-by: Fabiano Fidêncio <fidencio at redhat.com>
---
tests/Makefile.am | 12 ++++-
tests/test-hotkeys.c | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 134 insertions(+), 1 deletion(-)
create mode 100644 tests/test-hotkeys.c
diff --git a/tests/Makefile.am b/tests/Makefile.am
index a1bdf85..bd13188 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -2,6 +2,7 @@ NULL =
AM_CPPFLAGS = \
-DLOCALE_DIR=\""$(datadir)/locale"\" \
+ -DG_LOG_DOMAIN=\"virt-viewer\" \
-I$(top_srcdir)/src/ \
-I$(top_srcdir)/tests/ \
$(GLIB2_CFLAGS) \
@@ -16,7 +17,7 @@ LDADD= \
$(LIBXML2_LIBS) \
$(NULL)
-TESTS = test-version-compare test-monitor-mapping
+TESTS = test-version-compare test-monitor-mapping test-hotkeys
check_PROGRAMS = $(TESTS)
test_version_compare_SOURCES = \
test-version-compare.c \
@@ -26,6 +27,15 @@ test_monitor_mapping_SOURCES = \
test-monitor-mapping.c \
$(NULL)
+test_hotkeys_SOURCES = \
+ test-hotkeys.c \
+ $(NULL)
+
+test_hotkeys_LDADD = \
+ $(top_builddir)/src/libvirt-viewer.la \
+ $(LDADD) \
+ $(NULL)
+
if OS_WIN32
TESTS += redirect-test
redirect_test_SOURCES = redirect-test.c
diff --git a/tests/test-hotkeys.c b/tests/test-hotkeys.c
new file mode 100644
index 0000000..d3658f5
--- /dev/null
+++ b/tests/test-hotkeys.c
@@ -0,0 +1,123 @@
+/* -*- Mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/*
+ * Virt Viewer: A virtual machine console viewer
+ *
+ * Copyright (C) 2016 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <config.h>
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+
+#include "virt-viewer-app.h"
+
+G_BEGIN_DECLS
+
+#define VIRT_VIEWER_TEST_TYPE virt_viewer_test_get_type()
+#define VIRT_VIEWER_TEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIRT_VIEWER_TEST_TYPE, VirtViewerTest))
+#define VIRT_VIEWER_TEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIRT_VIEWER_TEST_TYPE, VirtViewerTestClass))
+#define VIRT_VIEWER_TEST_IS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIRT_VIEWER_TEST_TYPE))
+#define VIRT_VIEWER_TEST_IS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIRT_VIEWER_TEST_TYPE))
+#define VIRT_VIEWER_TEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIRT_VIEWER_TEST_TYPE, VirtViewerTestClass))
+
+typedef struct {
+ VirtViewerApp parent;
+} VirtViewerTest;
+
+typedef struct {
+ VirtViewerAppClass parent_class;
+} VirtViewerTestClass;
+
+GType virt_viewer_test_get_type (void);
+
+G_DEFINE_TYPE (VirtViewerTest, virt_viewer_test, VIRT_VIEWER_TYPE_APP)
+
+VirtViewerTest *virt_viewer_test_new (void);
+
+G_END_DECLS
+
+static void
+virt_viewer_test_class_init (VirtViewerTestClass *klass G_GNUC_UNUSED)
+{
+}
+
+static void
+virt_viewer_test_init(VirtViewerTest *self G_GNUC_UNUSED)
+{
+}
+
+static void
+test_hotkeys_good(void)
+{
+ const gchar *hotkeys[] = {
+ "toggle-fullscreen=shift+f11",
+ "release-cursor=shift+f12,secure-attention=ctrl+shift+b",
+ "smartcard-insert=shift+I,smartcard-remove=shift+R",
+ };
+
+ guint i;
+
+ VirtViewerTest *viewer = g_object_new(VIRT_VIEWER_TEST_TYPE, NULL);
+ VirtViewerApp *app = VIRT_VIEWER_APP(viewer);
+ for (i = 0; i < G_N_ELEMENTS(hotkeys); i++) {
+ virt_viewer_app_set_hotkeys(app, hotkeys[i]);
+ }
+ g_object_unref(viewer);
+}
+
+static void
+test_hotkeys_bad(void)
+{
+ const struct {
+ const gchar *hotkey_str;
+ const GLogLevelFlags log_level;
+ const gchar *message;
+ } hotkeys[] = {
+ {
+ "no_value",
+ G_LOG_LEVEL_WARNING,
+ "*code should not be reached"
+ },{
+ "toggle-fullscreen=A,unknown_command=B",
+ G_LOG_LEVEL_WARNING,
+ "Unknown hotkey command unknown_command"
+ },
+ };
+
+ guint i;
+
+ VirtViewerTest *viewer = g_object_new(VIRT_VIEWER_TEST_TYPE, NULL);
+ VirtViewerApp *app = VIRT_VIEWER_APP(viewer);
+ for (i = 0; i < G_N_ELEMENTS(hotkeys); i++) {
+ g_test_expect_message(G_LOG_DOMAIN, hotkeys[i].log_level, hotkeys[i].message);
+ virt_viewer_app_set_hotkeys(app, hotkeys[i].hotkey_str);
+ g_test_assert_expected_messages();
+ }
+ g_object_unref(viewer);
+}
+
+int main(int argc, char* argv[])
+{
+ gtk_init_check(&argc, &argv);
+ g_test_init(&argc, &argv, NULL);
+
+ g_test_add_func("/virt-viewer/good-hotkeys", test_hotkeys_good);
+ g_test_add_func("/virt-viewer/bad-hotkeys", test_hotkeys_bad);
+
+ return g_test_run();
+}
--
2.8.3
More information about the virt-tools-list
mailing list