From f3c3ff55af73ce4581208c999537f0957a61d788 Mon Sep 17 00:00:00 2001 From: Felipe Anibal Date: Fri, 12 Jul 2024 11:15:57 -0300 Subject: [PATCH] tests: add event_date_check_tz Add test to check the timezone of events. See https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/171 --- tests/test-event.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/tests/test-event.c b/tests/test-event.c index 7797d49e..4df7c152 100644 --- a/tests/test-event.c +++ b/tests/test-event.c @@ -383,6 +383,61 @@ event_date_edit_tzid (void) /*********************************************************************************************************************/ +static void +event_date_check_tz (void) +{ + struct + { + const gchar *string; + const gchar *tz; + } + timezones[] = { + { + STUB_EVENT_DTEND, "UTC" + }, + { + EVENT_STRING_FOR_DATE (";TZID=America/New_York:20240709T170000", ";TZID=America/New_York:20240709T180000"), + "America/New_York" + }, + { + EVENT_STRING_FOR_DATE (";TZID=Australia/Melbourne:20240709T170000", ";TZID=Australia/Melbourne:20240709T180000"), + "Australia/Melbourne" + }, + { + EVENT_STRING_FOR_DATE (":20240709T170000", ":20240709T180000"), "Europe/London" + }, + { + EVENT_STRING_FOR_DATE (":20240709T180000Z", ":20240709T190000Z"), "UTC" + }, + }; + + g_test_bug ("171"); + + for (gsize i = 0; i < G_N_ELEMENTS (timezones); i++) + { + g_autoptr (GcalEvent) event = NULL; + g_autoptr (GError) error = NULL; + GTimeZone *date_start = NULL; + GTimeZone *date_end = NULL; + + /* Change environment variable to test local timezone, when it's the case. */ + g_setenv ("TZ", "Europe/London", TRUE); + + event = create_event_for_string (timezones[i].string, &error); + + g_setenv ("TZ", "UTC", TRUE); + g_assert_no_error (error); + + date_start = g_date_time_get_timezone (gcal_event_get_date_start (event)); + date_end = g_date_time_get_timezone (gcal_event_get_date_end (event)); + + g_assert_cmpstr (g_time_zone_get_identifier (date_start), ==, timezones[i].tz); + g_assert_cmpstr (g_time_zone_get_identifier (date_end), ==, timezones[i].tz); + } +} + +/*********************************************************************************************************************/ + gint main (gint argc, gchar *argv[]) @@ -403,6 +458,7 @@ main (gint argc, g_test_add_func ("/event/date/multiday", event_date_multiday); g_test_add_func ("/event/date/edit-tzid", event_date_edit_tzid); g_test_add_func ("/event/date/create-tzid", event_date_create_tzid); + g_test_add_func ("/event/date/check-tz", event_date_check_tz); return g_test_run (); }