Blame src/tests/ibus-serializable.c

Packit Service 1d8f1c
#include "ibus.h"
Packit Service 1d8f1c
Packit Service 1d8f1c
void g_variant_type_info_assert_no_infos (void);
Packit Service 1d8f1c
Packit Service 1d8f1c
void test_serializable (IBusSerializable *object)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GVariant *variant;
Packit Service 1d8f1c
    gchar *s1, *s2;
Packit Service 1d8f1c
Packit Service 1d8f1c
    variant = ibus_serializable_serialize (object);
Packit Service 1d8f1c
    g_object_unref (object);
Packit Service 1d8f1c
    g_variant_get_data (variant);
Packit Service 1d8f1c
    s1 = g_variant_print (variant, TRUE);
Packit Service 1d8f1c
Packit Service 1d8f1c
    object = ibus_serializable_deserialize (variant);
Packit Service 1d8f1c
    g_variant_unref (variant);
Packit Service 1d8f1c
Packit Service 1d8f1c
    variant = ibus_serializable_serialize (object);
Packit Service 1d8f1c
    g_object_unref (object);
Packit Service 1d8f1c
    g_variant_get_data (variant);
Packit Service 1d8f1c
    s2 = g_variant_print (variant, TRUE);
Packit Service 1d8f1c
    g_variant_unref (variant);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_assert_cmpstr (s1, ==, s2);
Packit Service 1d8f1c
    g_free (s1);
Packit Service 1d8f1c
    g_free (s2);
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_varianttypeinfo (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    g_variant_type_info_assert_no_infos ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_attr_list (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    IBusAttrList *list = ibus_attr_list_new ();
Packit Service 1d8f1c
    ibus_attr_list_append (list, ibus_attribute_new (1, 1, 1, 2));
Packit Service 1d8f1c
    ibus_attr_list_append (list, ibus_attribute_new (2, 1, 1, 2));
Packit Service 1d8f1c
    ibus_attr_list_append (list, ibus_attribute_new (3, 1, 1, 2));
Packit Service 1d8f1c
    ibus_attr_list_append (list, ibus_attribute_new (3, 1, 1, 2));
Packit Service 1d8f1c
    test_serializable ((IBusSerializable *)list);
Packit Service 1d8f1c
    g_variant_type_info_assert_no_infos ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_text (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    test_serializable ((IBusSerializable *)ibus_text_new_from_string ("Hello"));
Packit Service 1d8f1c
    test_serializable ((IBusSerializable *)ibus_text_new_from_string ("Hello"));
Packit Service 1d8f1c
    test_serializable ((IBusSerializable *)ibus_text_new_from_string ("Hello"));
Packit Service 1d8f1c
    test_serializable ((IBusSerializable *)ibus_text_new_from_string ("Hello"));
Packit Service 1d8f1c
    g_variant_type_info_assert_no_infos ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_engine_desc (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    test_serializable ((IBusSerializable *)ibus_engine_desc_new ("Hello",
Packit Service 1d8f1c
                                        "Hello Engine",
Packit Service 1d8f1c
                                        "Hello Engine Desc",
Packit Service 1d8f1c
                                        "zh",
Packit Service 1d8f1c
                                        "GPLv2",
Packit Service 1d8f1c
                                        "Peng Huang <shawn.p.huang@gmail.com>",
Packit Service 1d8f1c
                                        "icon",
Packit Service 1d8f1c
                                        "en"));
Packit Service 1d8f1c
    g_variant_type_info_assert_no_infos ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_lookup_table (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    IBusLookupTable *table;
Packit Service 1d8f1c
Packit Service 1d8f1c
    table = ibus_lookup_table_new (9, 0, TRUE, FALSE);
Packit Service 1d8f1c
    test_serializable ((IBusSerializable *)table);
Packit Service 1d8f1c
Packit Service 1d8f1c
#if  1
Packit Service 1d8f1c
    table = ibus_lookup_table_new (9, 0, TRUE, FALSE);
Packit Service 1d8f1c
    ibus_lookup_table_append_candidate (table, ibus_text_new_from_static_string ("Hello"));
Packit Service 1d8f1c
    ibus_lookup_table_append_candidate (table, ibus_text_new_from_static_string ("Cool"));
Packit Service 1d8f1c
    test_serializable ((IBusSerializable *)table);
Packit Service 1d8f1c
#endif
Packit Service 1d8f1c
Packit Service 1d8f1c
    table = ibus_lookup_table_new (9, 0, TRUE, FALSE);
Packit Service 1d8f1c
    ibus_lookup_table_append_candidate (table, ibus_text_new_from_static_string ("Hello"));
Packit Service 1d8f1c
    ibus_lookup_table_append_candidate (table, ibus_text_new_from_static_string ("Cool"));
Packit Service 1d8f1c
    ibus_lookup_table_append_label (table, ibus_text_new_from_static_string ("Hello"));
Packit Service 1d8f1c
    ibus_lookup_table_append_label (table, ibus_text_new_from_static_string ("Cool"));
Packit Service 1d8f1c
    test_serializable ((IBusSerializable *)table);
Packit Service 1d8f1c
    g_variant_type_info_assert_no_infos ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_property (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    IBusPropList *list = ibus_prop_list_new ();
Packit Service 1d8f1c
    ibus_prop_list_append (list, ibus_property_new ("sub1",
Packit Service 1d8f1c
                                                    PROP_TYPE_NORMAL,
Packit Service 1d8f1c
                                                    ibus_text_new_from_static_string ("label_sub1"),
Packit Service 1d8f1c
                                                    "icon_sub1",
Packit Service 1d8f1c
                                                    ibus_text_new_from_static_string ("tooltip_sub1"),
Packit Service 1d8f1c
                                                    TRUE,
Packit Service 1d8f1c
                                                    TRUE,
Packit Service 1d8f1c
                                                    PROP_STATE_UNCHECKED,
Packit Service 1d8f1c
                                                    NULL));
Packit Service 1d8f1c
    ibus_prop_list_append (list, ibus_property_new ("sub2",
Packit Service 1d8f1c
                                                    PROP_TYPE_NORMAL,
Packit Service 1d8f1c
                                                    ibus_text_new_from_static_string ("label_sub1"),
Packit Service 1d8f1c
                                                    "icon_sub1",
Packit Service 1d8f1c
                                                    ibus_text_new_from_static_string ("tooltip_sub1"),
Packit Service 1d8f1c
                                                    TRUE,
Packit Service 1d8f1c
                                                    TRUE,
Packit Service 1d8f1c
                                                    PROP_STATE_UNCHECKED,
Packit Service 1d8f1c
                                                    NULL));
Packit Service 1d8f1c
    g_object_ref (list);
Packit Service 1d8f1c
    test_serializable ((IBusSerializable *)list);
Packit Service 1d8f1c
    test_serializable ((IBusSerializable *)ibus_property_new ("key",
Packit Service 1d8f1c
                                                          PROP_TYPE_NORMAL,
Packit Service 1d8f1c
                                                          ibus_text_new_from_static_string ("label"),
Packit Service 1d8f1c
                                                          "icon",
Packit Service 1d8f1c
                                                          ibus_text_new_from_static_string ("tooltip"),
Packit Service 1d8f1c
                                                          TRUE,
Packit Service 1d8f1c
                                                          TRUE,
Packit Service 1d8f1c
                                                          PROP_STATE_UNCHECKED,
Packit Service 1d8f1c
                                                          list));
Packit Service 1d8f1c
    g_variant_type_info_assert_no_infos ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_attachment (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    IBusText *text =  ibus_text_new_from_static_string ("main text");
Packit Service 1d8f1c
Packit Service 1d8f1c
    ibus_serializable_set_attachment ((IBusSerializable *)text,
Packit Service 1d8f1c
                                      "key1",
Packit Service 1d8f1c
                                      g_variant_new_int32 (100));
Packit Service 1d8f1c
Packit Service 1d8f1c
    ibus_serializable_set_attachment ((IBusSerializable *)text,
Packit Service 1d8f1c
                                      "key2",
Packit Service 1d8f1c
                                      g_variant_new_string ("value string"));
Packit Service 1d8f1c
Packit Service 1d8f1c
    ibus_serializable_set_attachment ((IBusSerializable *)text,
Packit Service 1d8f1c
                                      "key3",
Packit Service 1d8f1c
                                      g_variant_new ("(iuds)",1, 2, 3.333, "test value"));
Packit Service 1d8f1c
Packit Service 1d8f1c
    GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)text);
Packit Service 1d8f1c
    g_object_unref ((IBusSerializable *)text);
Packit Service 1d8f1c
Packit Service 1d8f1c
    IBusSerializable *object = ibus_serializable_deserialize (variant);
Packit Service 1d8f1c
    g_variant_unref (variant);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_assert_cmpstr (((IBusText *)object)->text, ==, "main text");
Packit Service 1d8f1c
Packit Service 1d8f1c
    GVariant *newvalue1 = ibus_serializable_get_attachment (object, "key1");
Packit Service 1d8f1c
    g_assert (newvalue1 != NULL);
Packit Service 1d8f1c
    g_assert_cmpint (g_variant_get_int32 (newvalue1), ==, 100);
Packit Service 1d8f1c
Packit Service 1d8f1c
    GVariant *newvalue2 = ibus_serializable_get_attachment (object, "key2");
Packit Service 1d8f1c
    g_assert (newvalue2 != NULL);
Packit Service 1d8f1c
    g_assert_cmpstr (g_variant_get_string (newvalue2, NULL), ==, "value string");
Packit Service 1d8f1c
Packit Service 1d8f1c
    {
Packit Service 1d8f1c
        GVariant *newvalue3 = ibus_serializable_get_attachment (object, "key3");
Packit Service 1d8f1c
        g_assert (newvalue3 != NULL);
Packit Service 1d8f1c
        gint32 i;
Packit Service 1d8f1c
        guint32 u;
Packit Service 1d8f1c
        gdouble d;
Packit Service 1d8f1c
        const gchar *s;
Packit Service 1d8f1c
        g_variant_get (newvalue3, "(iud&s)", &i, &u, &d, &s);
Packit Service 1d8f1c
        g_assert_cmpint (i, ==, 1);
Packit Service 1d8f1c
        g_assert_cmpuint (u, ==, 2);
Packit Service 1d8f1c
        g_assert_cmpfloat (d, ==, 3.333);
Packit Service 1d8f1c
        g_assert_cmpstr (s, ==, "test value");
Packit Service 1d8f1c
    }
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_object_unref (object);
Packit Service 1d8f1c
    g_variant_type_info_assert_no_infos ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
gint
Packit Service 1d8f1c
main (gint    argc,
Packit Service 1d8f1c
      gchar **argv)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_init ();
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_test_init (&argc, &argv, NULL);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/varianttypeinfo", test_varianttypeinfo);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/attrlist", test_attr_list);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/text", test_text);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/enginedesc", test_engine_desc);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/lookuptable", test_lookup_table);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/property", test_property);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/attachment", test_attachment);
Packit Service 1d8f1c
Packit Service 1d8f1c
    return g_test_run ();
Packit Service 1d8f1c
}