1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
#include <glib.h>
#include <gio/gio.h>
#include <gtest/gtest.h>
extern "C" {
#include "app-section.h"
#include "gactionmuxer.h"
}
static gboolean
strv_contains (gchar **str_array,
const gchar *str)
{
gchar **it;
for (it = str_array; *it; it++) {
if (!g_strcmp0 (*it, str))
return TRUE;
}
return FALSE;
}
TEST(GActionMuxerTest, General) {
const GActionEntry entries1[] = { { "one" }, { "two" }, { "three" } };
const GActionEntry entries2[] = { { "gb" }, { "es" }, { "fr" } };
const GActionEntry entries3[] = { { "foo" }, { "bar" } };
GSimpleActionGroup *group1;
GSimpleActionGroup *group2;
GSimpleActionGroup *group3;
GActionMuxer *muxer;
gchar **actions;
g_type_init ();
group1 = g_simple_action_group_new ();
g_simple_action_group_add_entries (group1,
entries1,
G_N_ELEMENTS (entries1),
NULL);
group2 = g_simple_action_group_new ();
g_simple_action_group_add_entries (group2,
entries2,
G_N_ELEMENTS (entries2),
NULL);
group3 = g_simple_action_group_new ();
g_simple_action_group_add_entries (group3,
entries3,
G_N_ELEMENTS (entries3),
NULL);
muxer = g_action_muxer_new ();
g_action_muxer_insert (muxer, "first", G_ACTION_GROUP (group1));
g_action_muxer_insert (muxer, "second", G_ACTION_GROUP (group2));
g_action_muxer_insert (muxer, NULL, G_ACTION_GROUP (group3));
actions = g_action_group_list_actions (G_ACTION_GROUP (muxer));
EXPECT_EQ (8, g_strv_length (actions));
EXPECT_TRUE (strv_contains (actions, "first.one"));
EXPECT_TRUE (strv_contains (actions, "first.two"));
EXPECT_TRUE (strv_contains (actions, "first.three"));
EXPECT_TRUE (strv_contains (actions, "second.gb"));
EXPECT_TRUE (strv_contains (actions, "second.es"));
EXPECT_TRUE (strv_contains (actions, "second.fr"));
EXPECT_TRUE (strv_contains (actions, "foo"));
EXPECT_TRUE (strv_contains (actions, "bar"));
g_strfreev (actions);
g_object_unref (muxer);
g_object_unref (group1);
g_object_unref (group2);
g_object_unref (group3);
}
|