gui/audio: Add unit test

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2015-12-25 13:11:41 -05:00
parent d8754e9a45
commit fd28d6830c
3 changed files with 98 additions and 0 deletions

View File

@ -1,2 +1,3 @@
builder
settings
audio

View File

@ -26,6 +26,7 @@ def GuiTest(name):
env.UsePackage("gmodule-export-2.0")
res += [ GuiTest("builder") ]
res += [ GuiTest("settings") ]
res += [ GuiTest("audio") ]
ignore.close()
Return("res")

96
tests/gui/audio.c Normal file
View File

@ -0,0 +1,96 @@
/*
* Copyright 2015 (c) Anna Schumaker.
*/
#include <core/audio.h>
#include <core/collection.h>
#include <core/core.h>
#include <core/idle.h>
#include <core/playlist.h>
#include <core/string.h>
#include <gui/audio.h>
#include <gui/builder.h>
#include <tests/test.h>
struct core_init_data init_data = {
.audio_ops = &audio_ops,
};
static inline const gchar *test_get_label_text(const gchar *name)
{
return gtk_label_get_text(GTK_LABEL(gui_builder_widget(name)));
}
static inline bool test_get_toggle_state(const gchar *name)
{
return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gui_builder_widget(name)));
}
static inline int test_spin_button_value(const gchar *name)
{
return gtk_spin_button_get_value(GTK_SPIN_BUTTON(gui_builder_widget(name)));
}
static void test_audio()
{
gchar *album, *artist, *duration;
struct track *track;
int argc = 0;
gtk_init(&argc, NULL);
gui_builder_init("share/ocarina/ocarina6.glade");
test_equal(gtk_widget_is_visible(gui_builder_widget("o_play")), true);
test_equal(gtk_widget_is_visible(gui_builder_widget("o_pause")), false);
test_equal(test_get_toggle_state("o_pause_enabled"), (bool)false);
test_equal(test_spin_button_value("o_pause_count"), 0);
test_equal(test_get_toggle_state("o_favorite"), (bool)false);
test_equal(test_get_toggle_state("o_hide"), (bool)false);
core_init(&argc, NULL, &init_data);
collection_add("tests/Music/Hyrule Symphony");
while (idle_run_task()) {};
track = track_get(0);
playlist_add(PL_FAVORITED, track);
playlist_add(PL_HIDDEN, track);
audio_load(track);
album = g_strdup_printf("From: %s", track->tr_album->al_name);
artist = g_strdup_printf("By: %s", track->tr_artist->ar_name);
duration = string_sec2str(track->tr_length);
test_equal(test_get_label_text("o_title"), track->tr_title);
test_equal(test_get_label_text("o_album"), album);
test_equal(test_get_label_text("o_artist"), artist);
test_equal(test_get_label_text("o_duration"), duration);
test_equal(test_get_toggle_state("o_favorite"), (bool)true);
test_equal(test_get_toggle_state("o_hide"), (bool)true);
g_free(album);
g_free(artist);
g_free(duration);
audio_play();
test_equal(gtk_widget_is_visible(gui_builder_widget("o_play")), false);
test_equal(gtk_widget_is_visible(gui_builder_widget("o_pause")), true);
audio_pause();
test_equal(gtk_widget_is_visible(gui_builder_widget("o_play")), true);
test_equal(gtk_widget_is_visible(gui_builder_widget("o_pause")), false);
audio_pause_after(1);
test_equal(test_get_toggle_state("o_pause_enabled"), (bool)true);
test_equal(test_spin_button_value("o_pause_count"), 1);
audio_eos();
test_equal(test_get_toggle_state("o_pause_enabled"), (bool)true);
test_equal(test_spin_button_value("o_pause_count"), 0);
audio_eos();
test_equal(test_get_toggle_state("o_pause_enabled"), (bool)false);
test_equal(test_spin_button_value("o_pause_count"), 0);
gui_builder_deinit();
}
DECLARE_UNIT_TESTS(
UNIT_TEST("Audio GUI", test_audio),
);