queue: Update the track_selected code

I also put in other fixes to the unit test to make test_equal work.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2014-05-18 14:24:46 -04:00
parent 9a5caa29b3
commit 869d67558e
4 changed files with 45 additions and 32 deletions

View File

@ -59,9 +59,8 @@ public:
const std::string length_str(); const std::string length_str();
void sort(sort_t, bool); void sort(sort_t, bool);
Track *operator[](unsigned int); Track *operator[](unsigned int);
void path_selected(unsigned int); void track_selected(unsigned int);
}; };
#endif /* OCARINA_QUEUE_H */ #endif /* OCARINA_QUEUE_H */

View File

@ -246,18 +246,15 @@ void Queue :: sort(sort_t field, bool reset)
get_callbacks()->on_queue_changed(); get_callbacks()->on_queue_changed();
} }
Track *Queue :: operator[](unsigned int i) Track *Queue :: operator[](unsigned int i)
{ {
return _tracks[i]; return _tracks[i];
} }
void Queue :: path_selected(unsigned int id) void Queue :: track_selected(unsigned int id)
{ {
_cur = id; _cur = id;
if (!(_flags &Q_REPEAT)) { if (has_flag(Q_REPEAT) == false) {
del(_cur); del(_cur);
_cur--; _cur--;
} }

View File

@ -34,42 +34,42 @@ void test_default()
{ {
TestQueue q; TestQueue q;
test :: equal(q.get_cur(), (unsigned)-1); test_equal(q.get_cur(), (unsigned)-1);
test :: equal(q.get_flags(), (unsigned)0); test_equal(q.get_flags(), (unsigned)0);
test :: equal(q.get_length(), (unsigned)0); test_equal(q.get_length(), (unsigned)0);
test :: equal(q.get_sorder().size(), (size_t)0); test_equal(q.get_sorder().size(), (size_t)0);
test :: equal(q.next(), (Track *)NULL); test_equal(q.next(), (Track *)NULL);
} }
void test_constructor(unsigned int flags) void test_constructor(unsigned int flags)
{ {
TestQueue q(flags | (1 << 30)); TestQueue q(flags | (1 << 30));
test :: equal(q.get_cur(), (unsigned)-1); test_equal(q.get_cur(), (unsigned)-1);
test :: equal(q.get_flags(), flags); test_equal(q.get_flags(), flags);
test :: equal(q.get_length(), (unsigned)0); test_equal(q.get_length(), (unsigned)0);
test :: equal(q.get_sorder().size(), (size_t)0); test_equal(q.get_sorder().size(), (size_t)0);
test :: equal(q.next(), (Track *)NULL); test_equal(q.next(), (Track *)NULL);
} }
void test_flags() void test_flags()
{ {
TestQueue q(0); TestQueue q(0);
test :: equal(q.get_flags(), (unsigned)0); test_equal(q.get_flags(), (unsigned)0);
q.set_flag(Q_ENABLED); q.set_flag(Q_ENABLED);
test :: equal(q.get_flags(), (unsigned)Q_ENABLED); test_equal(q.get_flags(), (unsigned)Q_ENABLED);
q.unset_flag(Q_ENABLED); q.unset_flag(Q_ENABLED);
test :: equal(q.get_flags(), (unsigned)0); test_equal(q.get_flags(), (unsigned)0);
q.set_flag(Q_REPEAT); q.set_flag(Q_REPEAT);
q.set_flag(Q_RANDOM); q.set_flag(Q_RANDOM);
test :: equal(q.has_flag(Q_ENABLED), false); test_equal(q.has_flag(Q_ENABLED), false);
test :: equal(q.has_flag(Q_RANDOM), true); test_equal(q.has_flag(Q_RANDOM), true);
test :: equal(q.has_flag(Q_REPEAT), true); test_equal(q.has_flag(Q_REPEAT), true);
test :: equal(q.has_flag(Q_NO_SORT), false); test_equal(q.has_flag(Q_NO_SORT), false);
} }
void test_add_cb(Queue *q, unsigned int id) void test_add_cb(Queue *q, unsigned int id)
@ -250,9 +250,9 @@ void test_next()
check_equal(track->id, i); check_equal(track->id, i);
} }
test :: success(); test :: success();
test :: equal(q.size(), (unsigned)0); test_equal(q.size(), (unsigned)0);
test :: equal(q.length_str(), (std::string)""); test_equal(q.length_str(), (std::string)"");
test :: equal(q.next(), TRACK_NULL); test_equal(q.next(), TRACK_NULL);
q.set_flag(Q_RANDOM); q.set_flag(Q_RANDOM);
@ -266,9 +266,9 @@ void test_next()
check_equal(track->id, expected_rand[i]); check_equal(track->id, expected_rand[i]);
} }
test :: success(); test :: success();
test :: equal(q.size(), (unsigned)0); test_equal(q.size(), (unsigned)0);
test :: equal(q.length_str(), (std::string)""); test_equal(q.length_str(), (std::string)"");
test :: equal(q.next(), TRACK_NULL); test_equal(q.next(), TRACK_NULL);
q.set_flag(Q_REPEAT); q.set_flag(Q_REPEAT);
@ -281,7 +281,23 @@ void test_next()
check_equal(track->id, i % 24); check_equal(track->id, i % 24);
} }
test :: success(); test :: success();
test :: equal(q.size(), (unsigned)24); test_equal(q.size(), (unsigned)24);
}
void test_select()
{
TestQueue q(0);
test_fill_q(&q);
test_equal(q.size(), (unsigned)24);
q.track_selected(10);
test_equal(q.size(), (unsigned)23);
test_equal(q.next()->id, (unsigned)11);
q.set_flag(Q_REPEAT);
q.track_selected(0);
test_equal(q.size(), (unsigned)22);
test_equal(q.next()->id, (unsigned)1);
} }
unsigned int exp_sort_title[] = { 1, 18, 19, 16, 20, 8, 2, 9, 23, 10, 17, 11, unsigned int exp_sort_title[] = { 1, 18, 19, 16, 20, 8, 2, 9, 23, 10, 17, 11,
@ -335,6 +351,7 @@ int main(int argc, char **argv)
run_test("Queue Add and Remove Test", test_add_remove); run_test("Queue Add and Remove Test", test_add_remove);
run_test("Queue Track Updated Test", test_updated); run_test("Queue Track Updated Test", test_updated);
run_test("Queue Pick Next Test", test_next); run_test("Queue Pick Next Test", test_next);
run_test("Queue Select Track Test", test_select);
run_test("Queue Sorting Test", test_sorting); run_test("Queue Sorting Test", test_sorting);
return 0; return 0;
} }

View File

@ -69,7 +69,7 @@ namespace test
} }
template <class T> template <class T>
void equal(const T &lhs, const T &rhs, unsigned int line = 0) void equal(const T &lhs, const T &rhs, unsigned int line)
{ {
begin(); begin();
check_equal(lhs, rhs, line); check_equal(lhs, rhs, line);