From 0cc807215962484619d45c8264fbe18c5111a7ab Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Sun, 11 May 2014 18:32:53 -0400 Subject: [PATCH] queue: Update the updated() function Signed-off-by: Anna Schumaker --- include/queue.h | 2 +- lib/deck.cpp | 2 +- lib/queue.cpp | 6 +++--- tests/queue.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 5 deletions(-) diff --git a/include/queue.h b/include/queue.h index 099695a5..c2ed2482 100644 --- a/include/queue.h +++ b/include/queue.h @@ -53,7 +53,7 @@ public: virtual unsigned int add(Track *); void del(Track *); void del(unsigned int); - void track_updated(unsigned int); + void updated(Track *); unsigned int size(); void add_sort(sort_t, bool ascending = true); diff --git a/lib/deck.cpp b/lib/deck.cpp index 94608094..162dc35f 100644 --- a/lib/deck.cpp +++ b/lib/deck.cpp @@ -25,7 +25,7 @@ static void del_library_track(unsigned int id) static void change_library_track(unsigned int id) { - library_playqueue.track_updated(id); + library_playqueue.updated(tagdb :: lookup(id)); } void deck :: init() diff --git a/lib/queue.cpp b/lib/queue.cpp index b81f860f..1cab2051 100644 --- a/lib/queue.cpp +++ b/lib/queue.cpp @@ -179,7 +179,7 @@ unsigned int Queue :: add(Track *track) void Queue :: del(Track *track) { for (unsigned int i = 0; i < _tracks.size(); i++) { - if (_tracks[i]->id == track->id) + if (_tracks[i] == track) _del_at(track, i); } } @@ -189,10 +189,10 @@ void Queue :: del(unsigned int id) _del_at(_tracks[id], id); } -void Queue :: track_updated(unsigned int track_id) +void Queue :: updated(Track *track) { for (unsigned int i = 0; i < _tracks.size(); i++) { - if (_tracks[i]->id == track_id) + if (_tracks[i] == track) get_callbacks()->on_queue_track_changed(this, i); } } diff --git a/tests/queue.cpp b/tests/queue.cpp index 446d5be0..cdf9989b 100644 --- a/tests/queue.cpp +++ b/tests/queue.cpp @@ -9,6 +9,8 @@ unsigned int count_add = 0; unsigned int count_del = 0; +unsigned int count_updated = 0; +unsigned int last_update = 0; class TestQueue : public Queue @@ -22,6 +24,8 @@ public: std::list get_sorder() { return _sort_order; }; }; +void test_add_cb_noop(Queue *q, unsigned int id) { } + void test_default() { @@ -159,6 +163,50 @@ void test_add_remove() test_equal(q.size(), (unsigned)0); } +void test_updated_cb(Queue *q, unsigned int row) +{ + last_update = row; +} + +void test_updated_cb2(Queue *q, unsigned int row) +{ + switch (row) { + case 0: + case 24: + case 25: + count_updated++; + default: + break; + } +} + +void test_updated() +{ + Track *track; + TestQueue q(0); + + get_callbacks()->on_queue_track_add = test_add_cb_noop; + get_callbacks()->on_queue_track_changed = test_updated_cb; + + /* Add tracks */ + test :: begin(); + for (unsigned int i = 0; i < 24; i++) + check_equal(q.add(tagdb :: lookup(i)), i); + test :: success(); + + test :: begin(); + for (unsigned int i = 0; i < 24; i++) + q.updated(tagdb :: lookup(i)); + test :: success(); + + get_callbacks()->on_queue_track_changed = test_updated_cb2; + track = tagdb :: lookup(0); + q.add(track); + q.add(track); + q.updated(track); + test_equal(count_updated, (unsigned)3); +} + int main(int argc, char **argv) { test :: cp_library(); @@ -168,5 +216,6 @@ int main(int argc, char **argv) run_test("Queue Constructor Test", test_constructor, Q_ENABLED | Q_RANDOM); run_test("Queue Flag Test", test_flags); run_test("Queue Add and Remove Test", test_add_remove); + run_test("Queue Track Updated Test", test_updated); return 0; }