queue: Update the updated() function

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2014-05-11 18:32:53 -04:00
parent 5520472f6f
commit 0cc8072159
4 changed files with 54 additions and 5 deletions

View File

@ -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);

View File

@ -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()

View File

@ -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);
}
}

View File

@ -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 <sort_info> 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;
}