diff options
author | Philip Withnall <pwithnall@endlessos.org> | 2020-10-15 10:52:31 +0100 |
---|---|---|
committer | Philip Withnall <pwithnall@endlessos.org> | 2020-10-15 14:43:46 +0100 |
commit | 59add5ecc1e599c4c36bd58d814ea4acf3b451ed (patch) | |
tree | 67caebc432b821d6d22d19aed7cacfea8b4e5c4f | |
parent | 36e7b48ad519c18ef3b4e1b4825b68088bd99dd9 (diff) | |
download | glib-wip/antoniof/fallback-timezone-cache-lookup.tar.gz |
tests: Add a basic test for GTimeZone cachingwip/antoniof/fallback-timezone-cache-lookup
This tests the previous few commits.
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
-rw-r--r-- | glib/tests/gdatetime.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/glib/tests/gdatetime.c b/glib/tests/gdatetime.c index 3e75f4ed2..10ec9403b 100644 --- a/glib/tests/gdatetime.c +++ b/glib/tests/gdatetime.c @@ -2733,6 +2733,57 @@ test_time_zone_parse_rfc8536 (void) } } +/* Check GTimeZone instances are cached. */ +static void +test_time_zone_caching (void) +{ + GTimeZone *tz1 = NULL, *tz2 = NULL; + + g_test_summary ("GTimeZone instances are cached"); + + /* Check a specific (arbitrary) timezone. These are only cached while third + * party code holds a ref to at least one instance. */ +#ifdef G_OS_UNIX + tz1 = g_time_zone_new ("Europe/London"); + tz2 = g_time_zone_new ("Europe/London"); + g_time_zone_unref (tz1); + g_time_zone_unref (tz2); +#elif defined G_OS_WIN32 + tz1 = g_time_zone_new ("GMT Standard Time"); + tz2 = g_time_zone_new ("GMT Standard Time"); + g_time_zone_unref (tz1); + g_time_zone_unref (tz2); +#endif + + /* Only compare pointers */ + g_assert_true (tz1 == tz2); + + /* Check the default timezone, local and UTC. These are cached internally in + * GLib, so should persist even after the last third party reference is + * dropped. */ + tz1 = g_time_zone_new (NULL); + g_time_zone_unref (tz1); + tz2 = g_time_zone_new (NULL); + g_time_zone_unref (tz2); + + g_assert_true (tz1 == tz2); + + tz1 = g_time_zone_new_utc (); + g_time_zone_unref (tz1); + tz2 = g_time_zone_new_utc (); + g_time_zone_unref (tz2); + + g_assert_true (tz1 == tz2); + + tz1 = g_time_zone_new_local (); + g_time_zone_unref (tz1); + tz2 = g_time_zone_new_local (); + g_time_zone_unref (tz2); + + g_assert_true (tz1 == tz2); +} + + gint main (gint argc, gchar *argv[]) @@ -2803,6 +2854,7 @@ main (gint argc, g_test_add_func ("/GTimeZone/identifier", test_identifier); g_test_add_func ("/GTimeZone/new-offset", test_new_offset); g_test_add_func ("/GTimeZone/parse-rfc8536", test_time_zone_parse_rfc8536); + g_test_add_func ("/GTimeZone/caching", test_time_zone_caching); return g_test_run (); } |