#include "config.h" #include #define GST_USE_UNSTABLE_API 1 #include #include "gst/totem-time-helpers.h" #include "backend/bacon-video-widget.h" #include "backend/bacon-time-label.h" #include "totem-menu.h" static BvwLangInfo * bvw_lang_info_new (const char *title, const char *language, const char *codec) { BvwLangInfo *info; info = g_new0 (BvwLangInfo, 1); info->title = g_strdup (title); info->language = g_strdup (language); info->codec = g_strdup (codec); return info; } static const char * nth_label (GList *list, guint index) { MenuItem *item = g_list_nth_data (list, index); if (!item) return NULL; return item->label; } static void test_menus_lang_info (void) { GList *l, *ret; /* No language, no codec */ l = NULL; l = g_list_append (l, bvw_lang_info_new (NULL, "und", NULL)); l = g_list_append (l, bvw_lang_info_new (NULL, "und", NULL)); ret = bvw_lang_info_to_menu_labels (l, BVW_TRACK_TYPE_AUDIO); g_list_free_full (l, (GDestroyNotify) bacon_video_widget_lang_info_free); g_assert_cmpstr (nth_label (ret, 0), ==, "Audio Track #1"); g_assert_cmpstr (nth_label (ret, 1), ==, "Audio Track #2"); g_list_free_full (ret, g_free); /* Same language, same codecs */ l = NULL; l = g_list_append (l, bvw_lang_info_new (NULL, "eng", "Dolby Pro Racing")); l = g_list_append (l, bvw_lang_info_new (NULL, "eng", "Dolby Pro Racing")); l = g_list_append (l, bvw_lang_info_new (NULL, "fre", "Dolby Amateur 5.1")); ret = bvw_lang_info_to_menu_labels (l, BVW_TRACK_TYPE_AUDIO); g_list_free_full (l, (GDestroyNotify) bacon_video_widget_lang_info_free); g_assert_cmpstr (nth_label (ret, 0), ==, "English #1"); g_assert_cmpstr (nth_label (ret, 1), ==, "English #2"); g_assert_cmpstr (nth_label (ret, 2), ==, "French"); g_list_free_full (ret, g_free); /* Same language, different codecs */ l = NULL; l = g_list_append (l, bvw_lang_info_new (NULL, "eng", "Dolby Pro Racing")); l = g_list_append (l, bvw_lang_info_new (NULL, "eng", "Dolby Amateur 5.1")); l = g_list_append (l, bvw_lang_info_new (NULL, "fre", "Dolby Amateur 5.1")); ret = bvw_lang_info_to_menu_labels (l, BVW_TRACK_TYPE_AUDIO); g_list_free_full (l, (GDestroyNotify) bacon_video_widget_lang_info_free); g_assert_cmpstr (nth_label (ret, 0), ==, "English — Dolby Pro Racing"); g_assert_cmpstr (nth_label (ret, 1), ==, "English — Dolby Amateur 5.1"); g_assert_cmpstr (nth_label (ret, 2), ==, "French"); g_list_free_full (ret, g_free); /* Different languages */ l = NULL; l = g_list_append (l, bvw_lang_info_new (NULL, "eng", "Dolby Amateur 5.1")); l = g_list_append (l, bvw_lang_info_new (NULL, "spa", "Dolby Amateur 5.1")); l = g_list_append (l, bvw_lang_info_new (NULL, "fre", "Dolby Amateur 5.1")); ret = bvw_lang_info_to_menu_labels (l, BVW_TRACK_TYPE_AUDIO); g_list_free_full (l, (GDestroyNotify) bacon_video_widget_lang_info_free); g_assert_cmpstr (nth_label (ret, 0), ==, "English"); g_assert_cmpstr (nth_label (ret, 1), ==, "Spanish; Castilian"); g_assert_cmpstr (nth_label (ret, 2), ==, "French"); g_list_free_full (ret, g_free); } static void set_labels (GtkWidget *label, GtkWidget *label_remaining, gint64 _time, gint64 length, const char *expected, const char *expected_remaining) { const char *str; bacon_time_label_set_time (BACON_TIME_LABEL (label), _time, length); bacon_time_label_set_time (BACON_TIME_LABEL (label_remaining), _time, length); str = gtk_label_get_text (GTK_LABEL (label)); g_assert_cmpstr (str, ==, expected); str = gtk_label_get_text (GTK_LABEL (label_remaining)); g_assert_cmpstr (str, ==, expected_remaining); } static void test_time_label (void) { GtkWidget *label, *label_remaining; char *str; label = bacon_time_label_new (); label_remaining = bacon_time_label_new (); bacon_time_label_set_remaining (BACON_TIME_LABEL (label_remaining), TRUE); set_labels (label, label_remaining, 0, 1000, "0:00", "-0:01"); set_labels (label, label_remaining, 500, 1000, "0:00", "-0:01"); set_labels (label, label_remaining, 700, 1400, "0:00", "-0:01"); set_labels (label, label_remaining, 1000, 1400, "0:01", "-0:01"); set_labels (label, label_remaining, 0, 45 * 60 * 1000, "0:00", "-45:00"); set_labels (label, label_remaining, 50 * 60 * 1000, 45 * 60 * 1000, "50:00", "--:--"); bacon_time_label_set_show_msecs (BACON_TIME_LABEL (label), TRUE); bacon_time_label_set_show_msecs (BACON_TIME_LABEL (label_remaining), TRUE); set_labels (label, label_remaining, 0, 1000, "0:00.000", "-0:01.000"); set_labels (label, label_remaining, 500, 1000, "0:00.500", "-0:00.500"); set_labels (label, label_remaining, 700, 1400, "0:00.700", "-0:00.700"); set_labels (label, label_remaining, 1000, 1400, "0:01.000", "-0:00.400"); set_labels (label, label_remaining, 0, 45 * 60 * 1000, "0:00.000", "-45:00.000"); set_labels (label, label_remaining, 50 * 60 * 1000, 45 * 60 * 1000, "50:00.000", "--:--"); str = totem_time_to_string (0, TOTEM_TIME_FLAG_NONE); g_assert_cmpstr (str, ==, "0:00"); g_free (str); str = totem_time_to_string (500, TOTEM_TIME_FLAG_NONE); g_assert_cmpstr (str, ==, "0:01"); g_free (str); str = totem_time_to_string (500, TOTEM_TIME_FLAG_REMAINING); g_assert_cmpstr (str, ==, "-0:01"); g_free (str); str = totem_time_to_string (1250, TOTEM_TIME_FLAG_NONE); g_assert_cmpstr (str, ==, "0:01"); g_free (str); str = totem_time_to_string (1250, TOTEM_TIME_FLAG_REMAINING); g_assert_cmpstr (str, ==, "-0:02"); g_free (str); str = totem_time_to_string (1250, TOTEM_TIME_FLAG_MSECS); g_assert_cmpstr (str, ==, "0:01.250"); g_free (str); } int main (int argc, char **argv) { setlocale (LC_ALL, "en_GB.UTF-8"); g_test_init (&argc, &argv, NULL); gtk_init (&argc, &argv); g_test_bug_base ("http://bugzilla.gnome.org/show_bug.cgi?id="); g_test_add_func ("/menus/lang_info", test_menus_lang_info); g_test_add_func ("/osd/time_label", test_time_label); return g_test_run (); }