/*
- * Copyright (C) 2011 Codethink Limited
+ * Copyright © 2011 Codethink Limited
*
* This is part of HarfBuzz, a text shaping library.
*
g_assert_cmpint (hb_unicode_get_script (uf, 'd'), ==, HB_SCRIPT_UNKNOWN);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (uf), ==, 1);
hb_unicode_funcs_destroy (uf);
}
hb_unicode_funcs_t *uf = hb_glib_get_unicode_funcs ();
g_assert_cmpint (hb_unicode_get_script (uf, 'd'), ==, HB_SCRIPT_LATIN);
+}
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (uf), ==, 0);
- hb_unicode_funcs_destroy (uf);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (uf), ==, 0);
+static void
+test_default (void)
+{
+ hb_unicode_funcs_t *uf = hb_unicode_funcs_get_default ();
+
+ g_assert_cmpint (hb_unicode_get_script (uf, 'd'), ==, HB_SCRIPT_LATIN);
}
static gboolean freed0, freed1;
g_assert_cmpint (hb_unicode_get_script (uf, 'a'), ==, HB_SCRIPT_LATIN);
g_assert_cmpint (hb_unicode_get_script (uf, '0'), ==, HB_SCRIPT_UNKNOWN);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (uf), ==, 1);
g_assert (!freed0 && !freed1);
hb_unicode_funcs_destroy (uf);
g_assert (freed0 && !freed1);
hb_unicode_funcs_t *uf, *aa;
uf = hb_unicode_funcs_create (NULL);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (uf), ==, 1);
aa = hb_unicode_funcs_create (uf);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (uf), ==, 2);
hb_unicode_funcs_destroy (uf);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (uf), ==, 1);
hb_unicode_funcs_set_script_func (aa, a_is_for_arabic_get_script,
unique_pointer1, free_up);
g_assert_cmpint (hb_unicode_get_script (aa, 'a'), ==, HB_SCRIPT_ARABIC);
g_assert_cmpint (hb_unicode_get_script (aa, 'b'), ==, HB_SCRIPT_UNKNOWN);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (aa), ==, 1);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (uf), ==, 1);
g_assert (!freed0 && !freed1);
hb_unicode_funcs_destroy (aa);
g_assert (!freed0 && freed1);
hb_unicode_funcs_t *uf, *aa;
uf = hb_glib_get_unicode_funcs ();
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (uf), ==, 0);
-
aa = hb_unicode_funcs_create (uf);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (uf), ==, 0);
-
- hb_unicode_funcs_destroy (uf);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (uf), ==, 0);
hb_unicode_funcs_set_script_func (aa, a_is_for_arabic_get_script,
unique_pointer1, free_up);
g_assert_cmpint (hb_unicode_get_script (aa, 'a'), ==, HB_SCRIPT_ARABIC);
g_assert_cmpint (hb_unicode_get_script (aa, 'b'), ==, HB_SCRIPT_LATIN);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (aa), ==, 1);
g_assert (!freed0 && !freed1);
hb_unicode_funcs_destroy (aa);
g_assert (!freed0 && freed1);
hb_unicode_funcs_t *uf, *aa;
uf = hb_unicode_funcs_create (NULL);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (uf), ==, 1);
hb_unicode_funcs_set_script_func (uf, simple_get_script,
unique_pointer0, free_up);
aa = hb_unicode_funcs_create (uf);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (aa), ==, 1);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (uf), ==, 2);
hb_unicode_funcs_destroy (uf);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (uf), ==, 1);
/* make sure the 'uf' didn't get freed, since 'aa' holds a ref */
g_assert (!freed0);
g_assert_cmpint (hb_unicode_get_script (aa, 'b'), ==, HB_SCRIPT_LATIN);
g_assert_cmpint (hb_unicode_get_script (aa, '0'), ==, HB_SCRIPT_UNKNOWN);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (aa), ==, 1);
- g_assert_cmpint (hb_unicode_funcs_get_reference_count (uf), ==, 1);
g_assert (!freed0 && !freed1);
hb_unicode_funcs_destroy (aa);
g_assert (freed0 && freed1);
g_test_add_func ("/unicode/nil", test_nil);
g_test_add_func ("/unicode/glib", test_glib);
+ g_test_add_func ("/unicode/default", test_default);
g_test_add_func ("/unicode/custom", test_custom);
g_test_add_func ("/unicode/subclassing/nil", test_subclassing_nil);
g_test_add_func ("/unicode/subclassing/glib", test_subclassing_glib);
g_test_add_func ("/unicode/subclassing/deep", test_subclassing_deep);
+ /* XXX test all methods for their defaults and various (glib, icu, default) implementations. */
+ /* XXX test glib & icu two-way script conversion */
+
return g_test_run ();
}