From 869e83b7bd4c63bbfcfcce391237c6caecc8d0bf Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Sun, 4 Sep 2016 08:47:10 -0400 Subject: [PATCH] gui/audio: Add accessor functions for audio tags And begin working on new, cleaner unit test code. Signed-off-by: Anna Schumaker --- gui/audio.c | 23 +++++++++++------- include/gui/audio.h | 19 +++++++++++++++ share/ocarina/ocarina.ui | 6 ++--- tests/gui/audio.c | 51 ++++++++++++++++++++++++++++++++-------- 4 files changed, 77 insertions(+), 22 deletions(-) diff --git a/gui/audio.c b/gui/audio.c index 48453b44..d7165306 100644 --- a/gui/audio.c +++ b/gui/audio.c @@ -13,27 +13,32 @@ static guint audio_timeout = 0; -static inline void __audio_set_label(const gchar *label, const gchar *size, - const gchar *text) +static inline void __gui_audio_set_label_markup(GtkLabel *label, + const gchar *size, + const gchar *text) { - gchar *markup = g_markup_printf_escaped("%s", - size, text); - gtk_label_set_markup(GTK_LABEL(gui_builder_widget(label)), markup); + const gchar *fmt = "%s"; + gchar *markup = g_markup_printf_escaped(fmt, size, text); + gtk_label_set_markup(label, markup); g_free(markup); } static inline void __audio_set_time_label(const gchar *label, unsigned int time) { gchar *str = string_sec2str(time); - __audio_set_label(label, "large", str); + __gui_audio_set_label_markup(GTK_LABEL(gui_builder_widget(label)), + "large",str); g_free(str); } static void __audio_load(struct track *track) { - __audio_set_label("o_title", "xx-large", track->tr_title); - __audio_set_label("o_artist", "x-large", track->tr_album->al_artist->ar_name); - __audio_set_label("o_album", "x-large", track->tr_album->al_name); + __gui_audio_set_label_markup(gui_title_tag(), "xx-large", + track->tr_title); + __gui_audio_set_label_markup(gui_album_tag(), "x-large", + track->tr_album->al_name); + __gui_audio_set_label_markup(gui_artist_tag(), "x-large", + track->tr_album->al_artist->ar_name); __audio_set_time_label("o_duration", track->tr_length); gui_pl_system_track_loaded(track); diff --git a/include/gui/audio.h b/include/gui/audio.h index c42eb04e..ac834da1 100644 --- a/include/gui/audio.h +++ b/include/gui/audio.h @@ -3,6 +3,7 @@ */ #ifndef OCARINA_GUI_AUDIO_H #define OCARINA_GUI_AUDIO_H +#include /* Audio callback functions. */ extern struct audio_ops audio_ops; @@ -13,6 +14,24 @@ void gui_audio_init(); /* Called to stop the GUI audio timeout function. */ void gui_audio_deinit(); +/* Called to get the label displaying the album tag. */ +static inline GtkLabel *gui_album_tag(void) +{ + return GTK_LABEL(gui_builder_widget("album_tag")); +} + +/* Called to get the label displaying the artist tag. */ +static inline GtkLabel *gui_artist_tag(void) +{ + return GTK_LABEL(gui_builder_widget("artist_tag")); +} + +/* Called to get the label displaying the title tag. */ +static inline GtkLabel *gui_title_tag(void) +{ + return GTK_LABEL(gui_builder_widget("title_tag")); +} + #ifdef CONFIG_TESTING void test_gui_audio_timeout(); #endif /* CONFIG_TESTING */ diff --git a/share/ocarina/ocarina.ui b/share/ocarina/ocarina.ui index 7e88b91d..27793b36 100644 --- a/share/ocarina/ocarina.ui +++ b/share/ocarina/ocarina.ui @@ -321,7 +321,7 @@ 5 True - + True False start @@ -336,7 +336,7 @@ - + True False start @@ -350,7 +350,7 @@ - + True False start diff --git a/tests/gui/audio.c b/tests/gui/audio.c index 11ca7f91..c2e3f612 100644 --- a/tests/gui/audio.c +++ b/tests/gui/audio.c @@ -8,7 +8,11 @@ #include #include #include +#include #include +#include +#include +#include #include #include @@ -53,12 +57,34 @@ static void test_audio_seek(gint64 pos) state = audio_cur_state(); } +static void test_audio_init() +{ + g_assert_cmpstr(gtk_label_get_text(gui_album_tag()), ==, " "); + g_assert_cmpstr(gtk_label_get_text(gui_artist_tag()), ==, " "); + g_assert_cmpstr(gtk_label_get_text(gui_title_tag()), ==, " "); +} + +static void test_audio_load() +{ + struct track *track = track_get(0); + + audio_load(track); + g_assert_cmpstr(gtk_label_get_text(gui_album_tag()), ==, + track->tr_album->al_name); + g_assert_cmpstr(gtk_label_get_text(gui_artist_tag()), ==, + track->tr_album->al_artist->ar_name); + g_assert_cmpstr(gtk_label_get_text(gui_title_tag()), ==, + track->tr_title); +} + static void test_audio() { struct db_entry *dbe, *next; struct track *track; gchar *duration; + audio_load(track_get(1)); + audio_pause(); g_assert_true(gtk_widget_is_visible(gui_builder_widget("o_play"))); g_assert_false(gtk_widget_is_visible(gui_builder_widget("o_pause"))); g_assert_cmpstr_free(test_get_pause_text(), ==, "(disabled)"); @@ -79,9 +105,6 @@ static void test_audio() g_assert_cmpuint(audio_cur_track()->tr_track, ==, track->tr_track); duration = string_sec2str(track->tr_length); - g_assert_cmpstr(test_get_label_text("o_title"), ==, track->tr_title); - g_assert_cmpstr(test_get_label_text("o_album"), ==, track->tr_album->al_name); - g_assert_cmpstr(test_get_label_text("o_artist"), ==, track->tr_album->al_artist->ar_name); g_assert_cmpstr(test_get_label_text("o_position"), ==, "0:00"); g_assert_cmpstr(test_get_label_text("o_duration"), ==, duration); g_assert_true(test_get_toggle_state("favorite_button")); @@ -133,21 +156,29 @@ int main(int argc, char **argv) int ret; gtk_init(&argc, NULL); + core_init(&argc, &argv, &init_data); gui_builder_init("share/ocarina/ocarina.ui"); gui_model_init(); - core_init(&argc, NULL, &init_data); + gui_filter_init(); + gui_treeview_init(); + gui_sidebar_init(); + gui_playlist_init(); gui_audio_init(); - playlist_new(PL_LIBRARY, "tests/Music/Hyrule Symphony"); + gui_pl_library_add("tests/Music/Hyrule Symphony"); while (idle_run_task()) {}; g_test_init(&argc, &argv, NULL); - g_test_add_func("/Gui/Audio", test_audio); + g_test_add_func("/Gui/Audio/Init", test_audio_init); + g_test_add_func("/Gui/Audio/Load", test_audio_load); + g_test_add_func("/Gui/Audio/Test", test_audio); ret = g_test_run(); - gui_audio_deinit(); - gui_window_deinit(); - gui_model_deinit(); - gui_builder_deinit(); core_deinit(); + gui_audio_deinit(); + gui_filter_deinit(); + gui_treeview_deinit(); + gui_model_deinit(); + gui_window_deinit(); + gui_builder_deinit(); return ret; }