tests: Add a basic test for GTimeZone caching

This tests the previous few commits.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
This commit is contained in:
Philip Withnall 2020-10-15 10:52:31 +01:00
parent 36e7b48ad5
commit 59add5ecc1

View File

@ -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 ();
}