GCC Code Coverage Report


Directory: src/
File: user/msg-user.c
Date: 2025-02-08 02:01:04
Exec Total Coverage
Lines: 53 53 100.0%
Functions: 16 16 100.0%
Branches: 22 28 78.6%

Line Branch Exec Source
1 /* Copyright 2024 Jan-Michael Brummer <jan-michael.brummer1@volkswagen.de>
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU Lesser General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17 #include "user/msg-user.h"
18 #include "msg-error.h"
19 #include "msg-json-utils.h"
20
21 /**
22 * MsgUser:
23 *
24 * Handling of user specific functions.
25 */
26
27 struct _MsgUser {
28 GObject parent_instance;
29
30 char *id;
31
32 GList *business_phones;
33 char *display_name;
34 char *given_name;
35 char *mail;
36 char *mobile_phone;
37 char *office_location;
38 char *surname;
39 char *company_name;
40 char *department;
41 };
42
43
5/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 9 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 7 times.
13 G_DEFINE_TYPE (MsgUser, msg_user, G_TYPE_OBJECT);
44
45 static void
46 4 msg_user_dispose (GObject *object)
47 {
48 4 MsgUser *self = MSG_USER (object);
49
50
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
4 g_clear_pointer (&self->mail, g_free);
51
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
4 g_clear_pointer (&self->display_name, g_free);
52
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
4 g_clear_pointer (&self->given_name, g_free);
53
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 3 times.
4 g_clear_pointer (&self->mobile_phone, g_free);
54
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
4 g_clear_pointer (&self->office_location, g_free);
55
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
4 g_clear_pointer (&self->surname, g_free);
56
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 3 times.
4 g_clear_pointer (&self->company_name, g_free);
57
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
4 g_clear_pointer (&self->department, g_free);
58
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
4 g_clear_list (&self->business_phones, g_free);
59
60 4 G_OBJECT_CLASS (msg_user_parent_class)->dispose (object);
61 4 }
62
63 static void
64 4 msg_user_init (__attribute__ ((unused)) MsgUser *self)
65 {
66 4 }
67
68 static void
69 2 msg_user_class_init (MsgUserClass *class)
70 {
71 2 GObjectClass *object_class = G_OBJECT_CLASS (class);
72
73 2 object_class->dispose = msg_user_dispose;
74 2 }
75
76 /**
77 * msg_user_new:
78 *
79 * Creates a new `MsgUser`.
80 *
81 * Returns: the newly created `MsgUser`
82 */
83 MsgUser *
84 4 msg_user_new (void)
85 {
86 4 return g_object_new (MSG_TYPE_USER, NULL);
87 }
88
89 /**
90 * msg_user_new_from_json:
91 * @json_object: The json object to parse
92 * @error: a #GError
93 *
94 * Creates a new `MsgUser` from json response object.
95 *
96 * Returns: the newly created `MsgUser`
97 */
98 MsgUser *
99 3 msg_user_new_from_json (JsonObject *json_object,
100 __attribute__ ((unused)) GError **error)
101 {
102 MsgUser *self;
103
104 3 self = msg_user_new ();
105
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 2 times.
3 if (json_object_has_member (json_object, "emailAddresses")) {
106 1 JsonArray *email_addresses = json_object_get_array_member (json_object, "emailAddresses");
107 1 JsonObject *email_address = json_array_get_object_element (email_addresses, 0);
108
109 1 self->mail = g_utf8_strdown (msg_json_object_get_string (email_address, "address"), -1);
110 } else {
111 4 self->mail = g_strdup (msg_json_object_get_string (json_object, "mail"));
112 }
113 3 self->display_name = g_strdup (msg_json_object_get_string (json_object, "displayName"));
114 3 self->mobile_phone = g_strdup (msg_json_object_get_string (json_object, "mobilePhone"));
115 3 self->office_location = g_strdup (msg_json_object_get_string (json_object, "officeLocation"));
116 3 self->surname = g_strdup (msg_json_object_get_string (json_object, "surname"));
117 3 self->given_name = g_strdup (msg_json_object_get_string (json_object, "givenName"));
118 3 self->company_name = g_strdup (msg_json_object_get_string (json_object, "companyName"));
119 3 self->department = g_strdup (msg_json_object_get_string (json_object, "department"));
120
121 3 return self;
122 }
123
124 /**
125 * msg_user_get_mail:
126 * @self: a user
127 *
128 * Returns: (transfer none): mail of user or %NULL if not existing
129 */
130 const char *
131 3 msg_user_get_mail (MsgUser *self)
132 {
133 3 return self->mail;
134 }
135
136 /**
137 * msg_user_get_display_name:
138 * @self: a user
139 *
140 * Returns: (transfer none): display name of user or %NULL if not existing
141 */
142 const char *
143 1 msg_user_get_display_name (MsgUser *self)
144 {
145 1 return self->display_name;
146 }
147
148 /**
149 * msg_user_get_mobile_phone:
150 * @self: a user
151 *
152 * Returns: (transfer none): mobile phone of user or %NULL if not existing
153 */
154 const char *
155 1 msg_user_get_mobile_phone (MsgUser *self)
156 {
157 1 return self->mobile_phone;
158 }
159
160 /**
161 * msg_user_get_office_location:
162 * @self: a user
163 *
164 * Returns: (transfer none): office location of user or %NULL if not existing
165 */
166 const char *
167 1 msg_user_get_office_location (MsgUser *self)
168 {
169 1 return self->office_location;
170 }
171
172 /**
173 * msg_user_get_surname:
174 * @self: a user
175 *
176 * Returns: (transfer none): surname of user or %NULL if not existing
177 */
178 const char *
179 1 msg_user_get_surname (MsgUser *self)
180 {
181 1 return self->surname;
182 }
183
184 /**
185 * msg_user_get_given_name:
186 * @self: a user
187 *
188 * Returns: (transfer none): given name of user or %NULL if not existing
189 */
190 const char *
191 1 msg_user_get_given_name (MsgUser *self)
192 {
193 1 return self->given_name;
194 }
195
196 /**
197 * msg_user_get_company_name:
198 * @self: a user
199 *
200 * Returns: (transfer none): company name of user or %NULL if not existing
201 */
202 const char *
203 1 msg_user_get_company_name (MsgUser *self)
204 {
205 1 return self->company_name;
206 }
207
208 /**
209 * msg_user_get_department:
210 * @self: a user
211 *
212 * Returns: (transfer none): department of user or %NULL if not existing
213 */
214 const char *
215 1 msg_user_get_department (MsgUser *self)
216 {
217 1 return self->department;
218 }
219