1 /*
2 * Copyright (C) 2019 Purism SPC
3 *
4 * SPDX-License-Identifier: LGPL-2.1+
5 */
6
7 #define HANDY_USE_UNSTABLE_API
8 #include <handy.h>
9 #include <hdy-keypad-button-private.h>
10
11 gint notified;
12
13
14 static void
notify_cb(GtkWidget * widget,gpointer data)15 notify_cb (GtkWidget *widget,
16 gpointer data)
17 {
18 notified++;
19 }
20
21
22 static void
test_hdy_keypad_show_symbols(void)23 test_hdy_keypad_show_symbols (void)
24 {
25 HdyKeypad *keypad = HDY_KEYPAD (hdy_keypad_new (TRUE, FALSE));
26 GList *l;
27 GList *list;
28
29 list = gtk_container_get_children (GTK_CONTAINER (keypad));
30
31 for (l = list; l != NULL; l = l->next) {
32 if (HDY_IS_KEYPAD_BUTTON(l->data)) {
33 gboolean value;
34 g_object_get (l->data, "show-symbols", &value, NULL);
35 g_assert_false (value);
36 }
37 }
38 g_list_free (list);
39 }
40
41
42 static void
test_hdy_keypad_set_actions(void)43 test_hdy_keypad_set_actions (void)
44 {
45 HdyKeypad *keypad = HDY_KEYPAD (hdy_keypad_new (FALSE, TRUE));
46 GtkWidget *button_right = gtk_button_new ();
47 GtkWidget *button_left = gtk_button_new ();
48
49 // Right extra button
50 g_assert (gtk_grid_get_child_at (GTK_GRID (keypad), 2, 3) != NULL);
51 // Left extra button
52 g_assert (gtk_grid_get_child_at (GTK_GRID (keypad), 0, 3) != NULL);
53
54 hdy_keypad_set_right_action (keypad, button_right);
55 hdy_keypad_set_left_action (keypad, button_left);
56 g_assert (button_right == gtk_grid_get_child_at (GTK_GRID (keypad), 2, 3));
57 g_assert (button_left == gtk_grid_get_child_at (GTK_GRID (keypad), 0, 3));
58
59 hdy_keypad_set_right_action (keypad, NULL);
60 g_assert (gtk_grid_get_child_at (GTK_GRID (keypad), 2, 3) == NULL);
61
62 hdy_keypad_set_left_action (keypad, NULL);
63 g_assert (gtk_grid_get_child_at (GTK_GRID (keypad), 0, 3) == NULL);
64 }
65
66
67 static void
test_hdy_keypad_button_clicked(void)68 test_hdy_keypad_button_clicked (void)
69 {
70 HdyKeypad *keypad = HDY_KEYPAD (hdy_keypad_new (FALSE, TRUE));
71 GtkWidget *entry = gtk_entry_new ();
72 GList *l;
73 GList *list;
74
75 notified = 0;
76
77 hdy_keypad_set_entry (keypad, GTK_ENTRY (entry));
78
79 g_signal_connect (hdy_keypad_get_entry (keypad), "insert-text", G_CALLBACK (notify_cb), NULL);
80
81 list = gtk_container_get_children (GTK_CONTAINER (keypad));
82
83 for (l = list; l != NULL; l = l->next) {
84 if (HDY_IS_KEYPAD_BUTTON(l->data)) {
85 GtkButton *btn = GTK_BUTTON (l->data);
86 gtk_button_clicked (btn);
87 }
88 }
89
90 g_assert_cmpint (notified, ==, 10);
91
92 g_list_free (list);
93 }
94
95
96 gint
main(gint argc,gchar * argv[])97 main (gint argc,
98 gchar *argv[])
99 {
100 gtk_test_init (&argc, &argv, NULL);
101 hdy_init (&argc, &argv);
102
103 g_test_add_func ("/Handy/Keypad/show_symbols", test_hdy_keypad_show_symbols);
104 g_test_add_func ("/Handy/Keypad/set_actions", test_hdy_keypad_set_actions);
105 g_test_add_func ("/Handy/Keypad/button_click", test_hdy_keypad_button_clicked);
106
107 return g_test_run ();
108 }
109