From 9dfec9934c8e67e2b9c5d73e9efac83a9471c4e5 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Mon, 1 Dec 2014 08:24:56 -0500 Subject: [PATCH] Track: Add a function for removing specific tracks from the track_db Signed-off-by: Anna Schumaker --- core/tags/track.cpp | 5 +++++ include/core/tags/track.h | 7 +++++++ tests/core/tags/track.cpp | 31 ++++++++++++++++++++++++------- 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/core/tags/track.cpp b/core/tags/track.cpp index 30269ae5..f669b7dc 100644 --- a/core/tags/track.cpp +++ b/core/tags/track.cpp @@ -170,6 +170,11 @@ Track *tags :: get_track(const unsigned int index) return track_db.at(index); } +void tags :: remove_track(Track *track) +{ + track_db.remove(track->index()); +} + void tags :: commit_track_db() { track_db.save(); diff --git a/include/core/tags/track.h b/include/core/tags/track.h index 54ff8e25..10c9c6b3 100644 --- a/include/core/tags/track.h +++ b/include/core/tags/track.h @@ -151,6 +151,13 @@ namespace tags */ Track *get_track(const unsigned int); + /** + * Called to remove a Track tag from the database. + * + * @param track The Track tag to be removed. + */ + void remove_track(Track *); + /** Called to write the track_db to disk. */ void commit_track_db(); } diff --git a/tests/core/tags/track.cpp b/tests/core/tags/track.cpp index 51c9c9d9..21561467 100644 --- a/tests/core/tags/track.cpp +++ b/tests/core/tags/track.cpp @@ -81,9 +81,16 @@ static void test_track_tag_destructor() test_equal(library->size(), (unsigned)0); } -static void test_track_tag_lookup() +static void test_track_tag_load_db(unsigned int size) { Database track_db("track.db", false); + track_db.load(); + test_equal(track_db.size(), size); +} + +static void test_track_tag_lookup() +{ + unsigned int index; Track *a, *b; a = tags :: add_track(album, artist, genre, library, @@ -97,15 +104,25 @@ static void test_track_tag_lookup() "Legend of Zelda Medley", 288, 13); test_equal(b, (Track *)NULL); + b = tags :: add_track(album, artist, genre, library, + MUSIC_DIR + "/Hyrule Symphony/12 - Ocarina Medley.mp3", + "Ocarina Medley", 232, 12); + test_not_equal(b, a); + test_equal(tags :: get_track(a->index()), a); - test_equal(tags :: get_track(a->index() + 1), (Track *)NULL); - - track_db.load(); - test_equal(track_db.size(), (unsigned)0); + test_equal(tags :: get_track(a->index() + 1), b); + test_equal(tags :: get_track(a->index() + 2), (Track *)NULL); + test_track_tag_load_db(0); tags :: commit_track_db(); - track_db.load(); - test_equal(track_db.size(), (unsigned)1); + test_track_tag_load_db(2); + + index = a->index(); + tags :: remove_track(a); + test_equal(tags :: get_track(index), (Track *)NULL); + test_track_tag_load_db(2); + tags :: commit_track_db(); + test_track_tag_load_db(1); } static void test_track_tag_functional()