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
|
#include <locale.h>
#include <gtk/gtk.h>
#include "cc-datetime-resources.h"
#include "cc-timezone-map.h"
static void
test_timezone (void)
{
g_autoptr(GHashTable) ht = NULL;
CcTimezoneMap *map;
TzDB *tz_db;
guint i;
ht = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
map = cc_timezone_map_new ();
tz_db = tz_load_db ();
g_assert_nonnull (tz_db);
g_assert_nonnull (tz_db->locations);
for (i = 0; tz_db->locations && i < tz_db->locations->len; i++)
{
g_autofree gchar *clean_tz = NULL;
TzLocation *location = NULL;
location = g_ptr_array_index (tz_db->locations, i);
clean_tz = tz_info_get_clean_name (tz_db, location->zone);
if (!cc_timezone_map_set_timezone (map, location->zone))
{
if (!g_hash_table_contains (ht, clean_tz))
{
if (g_strcmp0 (clean_tz, location->zone) == 0)
g_printerr ("Failed to locate timezone '%s'\n", location->zone);
else
g_printerr ("Failed to locate timezone '%s' (original name: '%s')\n", clean_tz, location->zone);
g_hash_table_insert (ht, g_strdup (clean_tz), GINT_TO_POINTER (TRUE));
}
/* We don't warn for those, we'll just fallback
* in the panel code */
if (!g_str_equal (clean_tz, "posixrules") && !g_str_equal (clean_tz, "Factory"))
g_test_fail ();
}
}
tz_db_free (tz_db);
}
gint
main (gint argc,
gchar **argv)
{
setlocale (LC_ALL, "");
gtk_init (NULL, NULL);
g_test_init (&argc, &argv, NULL);
g_resources_register (cc_datetime_get_resource ());
g_setenv ("G_DEBUG", "fatal_warnings", FALSE);
g_test_add_func ("/datetime/timezone", test_timezone);
return g_test_run ();
}
|