/** * gpk_dbus_set_interaction_from_text: **/ static void gpk_dbus_set_interaction_from_text (PkBitfield *interact, gint *timeout, const gchar *interaction) { guint i; guint len; gchar **interactions; interactions = g_strsplit (interaction, ",", -1); len = g_strv_length (interactions); /* do special keys first */ for (i=0; i<len; i++) { if (g_strcmp0 (interactions[i], "always") == 0) *interact = GPK_CLIENT_INTERACT_ALWAYS; else if (g_strcmp0 (interactions[i], "never") == 0) *interact = GPK_CLIENT_INTERACT_NEVER; } /* add or remove from defaults */ for (i=0; i<len; i++) { /* show */ if (g_strcmp0 (interactions[i], "show-confirm-search") == 0) pk_bitfield_add (*interact, GPK_CLIENT_INTERACT_CONFIRM_SEARCH); else if (g_strcmp0 (interactions[i], "show-confirm-deps") == 0) pk_bitfield_add (*interact, GPK_CLIENT_INTERACT_CONFIRM_DEPS); else if (g_strcmp0 (interactions[i], "show-confirm-install") == 0) pk_bitfield_add (*interact, GPK_CLIENT_INTERACT_CONFIRM_INSTALL); else if (g_strcmp0 (interactions[i], "show-progress") == 0) pk_bitfield_add (*interact, GPK_CLIENT_INTERACT_PROGRESS); else if (g_strcmp0 (interactions[i], "show-finished") == 0) pk_bitfield_add (*interact, GPK_CLIENT_INTERACT_FINISHED); else if (g_strcmp0 (interactions[i], "show-warning") == 0) pk_bitfield_add (*interact, GPK_CLIENT_INTERACT_WARNING); /* hide */ else if (g_strcmp0 (interactions[i], "hide-confirm-search") == 0) pk_bitfield_remove (*interact, GPK_CLIENT_INTERACT_CONFIRM_SEARCH); else if (g_strcmp0 (interactions[i], "hide-confirm-deps") == 0) pk_bitfield_remove (*interact, GPK_CLIENT_INTERACT_CONFIRM_DEPS); else if (g_strcmp0 (interactions[i], "hide-confirm-install") == 0) pk_bitfield_remove (*interact, GPK_CLIENT_INTERACT_CONFIRM_INSTALL); else if (g_strcmp0 (interactions[i], "hide-progress") == 0) pk_bitfield_remove (*interact, GPK_CLIENT_INTERACT_PROGRESS); else if (g_strcmp0 (interactions[i], "hide-finished") == 0) pk_bitfield_remove (*interact, GPK_CLIENT_INTERACT_FINISHED); else if (g_strcmp0 (interactions[i], "hide-warning") == 0) pk_bitfield_remove (*interact, GPK_CLIENT_INTERACT_WARNING); /* wait */ else if (g_str_has_prefix (interactions[i], "timeout=")) *timeout = atoi (&interactions[i][8]); } g_strfreev (interactions); }
void pk_bitfield_test (gpointer user_data) { EggTest *test = (EggTest *) user_data; gchar *text; PkBitfield filter; gint value; PkBitfield values; if (!egg_test_start (test, "PkBitfield")) return; /************************************************************/ egg_test_title (test, "check we can convert filter bitfield to text (none)"); text = pk_filter_bitfield_to_text (pk_bitfield_value (PK_FILTER_ENUM_NONE)); if (g_strcmp0 (text, "none") == 0) egg_test_success (test, NULL); else egg_test_failed (test, "text was %s", text); g_free (text); /************************************************************/ egg_test_title (test, "check we can invert a bit 1 -> 0"); values = pk_bitfield_value (PK_FILTER_ENUM_NOT_DEVELOPMENT) | pk_bitfield_value (PK_FILTER_ENUM_NOT_NEWEST); pk_bitfield_invert (values, PK_FILTER_ENUM_NOT_DEVELOPMENT); if (values == pk_bitfield_value (PK_FILTER_ENUM_NOT_NEWEST)) egg_test_success (test, NULL); else egg_test_failed (test, "values were %" PK_BITFIELD_FORMAT, values); /************************************************************/ egg_test_title (test, "check we can invert a bit 0 -> 1"); values = 0; pk_bitfield_invert (values, PK_FILTER_ENUM_NOT_DEVELOPMENT); if (values == pk_bitfield_value (PK_FILTER_ENUM_NOT_DEVELOPMENT)) egg_test_success (test, NULL); else egg_test_failed (test, "values were %" PK_BITFIELD_FORMAT, values); /************************************************************/ egg_test_title (test, "check we can convert filter bitfield to text (single)"); text = pk_filter_bitfield_to_text (pk_bitfield_value (PK_FILTER_ENUM_NOT_DEVELOPMENT)); if (g_strcmp0 (text, "~devel") == 0) egg_test_success (test, NULL); else egg_test_failed (test, "text was %s", text); g_free (text); /************************************************************/ egg_test_title (test, "check we can convert filter bitfield to text (plural)"); text = pk_filter_bitfield_to_text (pk_bitfield_value (PK_FILTER_ENUM_NOT_DEVELOPMENT) | pk_bitfield_value (PK_FILTER_ENUM_GUI) | pk_bitfield_value (PK_FILTER_ENUM_NEWEST)); if (g_strcmp0 (text, "~devel;gui;newest") == 0) egg_test_success (test, NULL); else egg_test_failed (test, "text was %s", text); g_free (text); /************************************************************/ egg_test_title (test, "check we can convert filter text to bitfield (none)"); filter = pk_filter_bitfield_from_text ("none"); if (filter == pk_bitfield_value (PK_FILTER_ENUM_NONE)) egg_test_success (test, NULL); else egg_test_failed (test, "filter was %" PK_BITFIELD_FORMAT, filter); /************************************************************/ egg_test_title (test, "check we can convert filter text to bitfield (single)"); filter = pk_filter_bitfield_from_text ("~devel"); if (filter == pk_bitfield_value (PK_FILTER_ENUM_NOT_DEVELOPMENT)) egg_test_success (test, NULL); else egg_test_failed (test, "filter was %" PK_BITFIELD_FORMAT, filter); /************************************************************/ egg_test_title (test, "check we can convert filter text to bitfield (plural)"); filter = pk_filter_bitfield_from_text ("~devel;gui;newest"); if (filter == (pk_bitfield_value (PK_FILTER_ENUM_NOT_DEVELOPMENT) | pk_bitfield_value (PK_FILTER_ENUM_GUI) | pk_bitfield_value (PK_FILTER_ENUM_NEWEST))) egg_test_success (test, NULL); else egg_test_failed (test, "filter was %" PK_BITFIELD_FORMAT, filter); /************************************************************/ egg_test_title (test, "check we can add / remove bitfield"); filter = pk_bitfield_value (PK_FILTER_ENUM_NOT_DEVELOPMENT) | pk_bitfield_value (PK_FILTER_ENUM_GUI) | pk_bitfield_value (PK_FILTER_ENUM_NEWEST); pk_bitfield_add (filter, PK_FILTER_ENUM_NOT_FREE); pk_bitfield_remove (filter, PK_FILTER_ENUM_NOT_DEVELOPMENT); text = pk_filter_bitfield_to_text (filter); if (g_strcmp0 (text, "gui;~free;newest") == 0) egg_test_success (test, NULL); else egg_test_failed (test, "text was %s", text); g_free (text); /************************************************************/ egg_test_title (test, "check we can test enum presence"); filter = pk_bitfield_value (PK_FILTER_ENUM_NOT_DEVELOPMENT) | pk_bitfield_value (PK_FILTER_ENUM_GUI) | pk_bitfield_value (PK_FILTER_ENUM_NEWEST); if (pk_bitfield_contain (filter, PK_FILTER_ENUM_NOT_DEVELOPMENT)) egg_test_success (test, NULL); else egg_test_failed (test, "wrong boolean"); /************************************************************/ egg_test_title (test, "check we can test enum false-presence"); if (!pk_bitfield_contain (filter, PK_FILTER_ENUM_FREE)) egg_test_success (test, NULL); else egg_test_failed (test, "wrong boolean"); /************************************************************/ egg_test_title (test, "check we can add / remove bitfield to nothing"); filter = pk_bitfield_value (PK_FILTER_ENUM_NOT_DEVELOPMENT); pk_bitfield_remove (filter, PK_FILTER_ENUM_NOT_DEVELOPMENT); text = pk_filter_bitfield_to_text (filter); if (g_strcmp0 (text, "none") == 0) egg_test_success (test, NULL); else egg_test_failed (test, "text was %s", text); g_free (text); /************************************************************/ egg_test_title (test, "role bitfield from enums (unknown)"); values = pk_bitfield_from_enums (PK_ROLE_ENUM_UNKNOWN, -1); if (values == pk_bitfield_value (PK_ROLE_ENUM_UNKNOWN)) egg_test_success (test, NULL); else egg_test_failed (test, "returned bitfield %" PK_BITFIELD_FORMAT, values); /************************************************************/ egg_test_title (test, "role bitfield from enums (random)"); values = pk_bitfield_from_enums (PK_ROLE_ENUM_SEARCH_GROUP, PK_ROLE_ENUM_SEARCH_DETAILS, -1); if (values == (pk_bitfield_value (PK_ROLE_ENUM_SEARCH_DETAILS) | pk_bitfield_value (PK_ROLE_ENUM_SEARCH_GROUP))) egg_test_success (test, NULL); else egg_test_failed (test, "returned bitfield %" PK_BITFIELD_FORMAT, values); /************************************************************/ egg_test_title (test, "group bitfield from enums (unknown)"); values = pk_bitfield_from_enums (PK_GROUP_ENUM_UNKNOWN, -1); if (values == pk_bitfield_value (PK_GROUP_ENUM_UNKNOWN)) egg_test_success (test, NULL); else egg_test_failed (test, "returned bitfield %" PK_BITFIELD_FORMAT, values); /************************************************************/ egg_test_title (test, "group bitfield from enums (random)"); values = pk_bitfield_from_enums (PK_GROUP_ENUM_ACCESSIBILITY, -1); if (values == (pk_bitfield_value (PK_GROUP_ENUM_ACCESSIBILITY))) egg_test_success (test, NULL); else egg_test_failed (test, "returned bitfield %" PK_BITFIELD_FORMAT, values); /************************************************************/ egg_test_title (test, "group bitfield to text (unknown)"); values = pk_bitfield_from_enums (PK_GROUP_ENUM_UNKNOWN, -1); text = pk_group_bitfield_to_text (values); if (g_strcmp0 (text, "unknown") == 0) egg_test_success (test, NULL); else egg_test_failed (test, "returned bitfield text %s (%" PK_BITFIELD_FORMAT ")", text, values); g_free (text); /************************************************************/ egg_test_title (test, "group bitfield to text (first and last)"); values = pk_bitfield_from_enums (PK_GROUP_ENUM_ACCESSIBILITY, PK_GROUP_ENUM_UNKNOWN, -1); text = pk_group_bitfield_to_text (values); if (g_strcmp0 (text, "unknown;accessibility") == 0) egg_test_success (test, NULL); else egg_test_failed (test, "returned bitfield text %s (%" PK_BITFIELD_FORMAT ")", text, values); g_free (text); /************************************************************/ egg_test_title (test, "group bitfield to text (random)"); values = pk_bitfield_from_enums (PK_GROUP_ENUM_UNKNOWN, PK_GROUP_ENUM_REPOS, -1); text = pk_group_bitfield_to_text (values); if (g_strcmp0 (text, "unknown;repos") == 0) egg_test_success (test, NULL); else egg_test_failed (test, "returned bitfield text %s (%" PK_BITFIELD_FORMAT ")", text, values); g_free (text); /************************************************************/ egg_test_title (test, "priority check missing"); values = pk_bitfield_value (PK_ROLE_ENUM_SEARCH_DETAILS) | pk_bitfield_value (PK_ROLE_ENUM_SEARCH_GROUP); value = pk_bitfield_contain_priority (values, PK_ROLE_ENUM_SEARCH_FILE, -1); if (value == -1) egg_test_success (test, NULL); else egg_test_failed (test, "returned priority %i when should be missing", value); /************************************************************/ egg_test_title (test, "priority check first"); value = pk_bitfield_contain_priority (values, PK_ROLE_ENUM_SEARCH_GROUP, -1); if (value == PK_ROLE_ENUM_SEARCH_GROUP) egg_test_success (test, NULL); else egg_test_failed (test, "returned wrong value; %i", value); /************************************************************/ egg_test_title (test, "priority check second, correct"); value = pk_bitfield_contain_priority (values, PK_ROLE_ENUM_SEARCH_FILE, PK_ROLE_ENUM_SEARCH_GROUP, -1); if (value == PK_ROLE_ENUM_SEARCH_GROUP) egg_test_success (test, NULL); else egg_test_failed (test, "returned wrong value; %i", value); egg_test_end (test); }