From 1f5ce9e0d1e1e8c0cfb1ccddd2fd4f4034464863 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Wed, 9 Dec 2015 09:20:18 -0500 Subject: [PATCH] core/playlist: Add playlist_deinit() function Signed-off-by: Anna Schumaker --- core/core.cpp | 1 + core/playlist.cpp | 6 ++++++ include/core/playlist.h | 3 +++ tests/core/playlist.cpp | 24 ++++++++++++++++++++++++ 4 files changed, 34 insertions(+) diff --git a/core/core.cpp b/core/core.cpp index d9e02bdd..47f53cf2 100644 --- a/core/core.cpp +++ b/core/core.cpp @@ -24,6 +24,7 @@ void core :: init(struct core_init_data *init) void core :: deinit() { + playlist_deinit(); collection_deinit(); tags_deinit(); filter_deinit(); diff --git a/core/playlist.cpp b/core/playlist.cpp index c16099ed..a08bfe50 100644 --- a/core/playlist.cpp +++ b/core/playlist.cpp @@ -102,6 +102,12 @@ void playlist_init(struct queue_ops *ops) track_get(it.it_val)); } +void playlist_deinit() +{ + queue_deinit(&playlist_q); + db_deinit(&playlist_db); +} + bool playlist :: has(struct track *track, const std::string &name) { if (playlist_db.db_size == 0) diff --git a/include/core/playlist.h b/include/core/playlist.h index 7697aef7..0db6df15 100644 --- a/include/core/playlist.h +++ b/include/core/playlist.h @@ -83,4 +83,7 @@ namespace playlist /* Called to initialize the playlist manager. */ void playlist_init(struct queue_ops *); +/* Called to deinitialize the playlist manager. */ +void playlist_deinit(); + #endif /* OCARINA_CORE_PLAYLIST_H */ diff --git a/tests/core/playlist.cpp b/tests/core/playlist.cpp index 41c8d2a7..8f796c0d 100644 --- a/tests/core/playlist.cpp +++ b/tests/core/playlist.cpp @@ -34,12 +34,22 @@ static void test_init() test_equal(GPOINTER_TO_INT(list->data), COMPARE_YEAR); list = g_slist_next(list); test_equal(GPOINTER_TO_INT(list->data), COMPARE_TRACK); + + playlist_deinit(); + collection_deinit(); + tags_deinit(); + filter_deinit(); } static void test_queue() { queue *q = playlist :: get_queue(); + test_cp_data_dir(); + filter_init(); + tags_init(); + collection_init(NULL); + playlist_init(NULL); playlist :: select("Banned"); test_equal(queue_size(q), (unsigned)4); @@ -120,10 +130,24 @@ static void test_has() } test_loop_passed(); } +static void test_deinit() +{ + struct queue *q = playlist :: get_queue(); + + playlist_deinit(); + collection_deinit(); + tags_deinit(); + filter_deinit(); + + test_equal(queue_size(q), 0); + test_equal(q->q_sort, NULL); +} + DECLARE_UNIT_TESTS( UNIT_TEST("Playlist Initialization", test_init), UNIT_TEST("Playlist Queue", test_queue), UNIT_TEST("Playlist Add", test_add), UNIT_TEST("Playlist Delete", test_delete), UNIT_TEST("Playlist Has", test_has), + UNIT_TEST("Playlist Deinit", test_deinit), );