From 869d67558eb84486f8a876d9cdf1b5bbe42bfbdb Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Sun, 18 May 2014 14:24:46 -0400 Subject: [PATCH] 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 --- include/queue.h | 3 +-- lib/queue.cpp | 7 ++---- tests/queue.cpp | 65 +++++++++++++++++++++++++++++++------------------ tests/test.h | 2 +- 4 files changed, 45 insertions(+), 32 deletions(-) diff --git a/include/queue.h b/include/queue.h index 63432784..53d6d908 100644 --- a/include/queue.h +++ b/include/queue.h @@ -59,9 +59,8 @@ public: const std::string length_str(); void sort(sort_t, bool); - Track *operator[](unsigned int); - void path_selected(unsigned int); + void track_selected(unsigned int); }; #endif /* OCARINA_QUEUE_H */ diff --git a/lib/queue.cpp b/lib/queue.cpp index 5841d01a..32a6ed87 100644 --- a/lib/queue.cpp +++ b/lib/queue.cpp @@ -246,18 +246,15 @@ void Queue :: sort(sort_t field, bool reset) get_callbacks()->on_queue_changed(); } - - - Track *Queue :: operator[](unsigned int i) { return _tracks[i]; } -void Queue :: path_selected(unsigned int id) +void Queue :: track_selected(unsigned int id) { _cur = id; - if (!(_flags &Q_REPEAT)) { + if (has_flag(Q_REPEAT) == false) { del(_cur); _cur--; } diff --git a/tests/queue.cpp b/tests/queue.cpp index 8f6c6190..d455daa1 100644 --- a/tests/queue.cpp +++ b/tests/queue.cpp @@ -34,42 +34,42 @@ void test_default() { TestQueue q; - test :: equal(q.get_cur(), (unsigned)-1); - test :: equal(q.get_flags(), (unsigned)0); - test :: equal(q.get_length(), (unsigned)0); - test :: equal(q.get_sorder().size(), (size_t)0); - test :: equal(q.next(), (Track *)NULL); + test_equal(q.get_cur(), (unsigned)-1); + test_equal(q.get_flags(), (unsigned)0); + test_equal(q.get_length(), (unsigned)0); + test_equal(q.get_sorder().size(), (size_t)0); + test_equal(q.next(), (Track *)NULL); } void test_constructor(unsigned int flags) { TestQueue q(flags | (1 << 30)); - test :: equal(q.get_cur(), (unsigned)-1); - test :: equal(q.get_flags(), flags); - test :: equal(q.get_length(), (unsigned)0); - test :: equal(q.get_sorder().size(), (size_t)0); - test :: equal(q.next(), (Track *)NULL); + test_equal(q.get_cur(), (unsigned)-1); + test_equal(q.get_flags(), flags); + test_equal(q.get_length(), (unsigned)0); + test_equal(q.get_sorder().size(), (size_t)0); + test_equal(q.next(), (Track *)NULL); } void test_flags() { TestQueue q(0); - test :: equal(q.get_flags(), (unsigned)0); + test_equal(q.get_flags(), (unsigned)0); 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); - test :: equal(q.get_flags(), (unsigned)0); + test_equal(q.get_flags(), (unsigned)0); q.set_flag(Q_REPEAT); q.set_flag(Q_RANDOM); - test :: equal(q.has_flag(Q_ENABLED), false); - test :: equal(q.has_flag(Q_RANDOM), true); - test :: equal(q.has_flag(Q_REPEAT), true); - test :: equal(q.has_flag(Q_NO_SORT), false); + test_equal(q.has_flag(Q_ENABLED), false); + test_equal(q.has_flag(Q_RANDOM), true); + test_equal(q.has_flag(Q_REPEAT), true); + test_equal(q.has_flag(Q_NO_SORT), false); } void test_add_cb(Queue *q, unsigned int id) @@ -250,9 +250,9 @@ void test_next() check_equal(track->id, i); } test :: success(); - test :: equal(q.size(), (unsigned)0); - test :: equal(q.length_str(), (std::string)""); - test :: equal(q.next(), TRACK_NULL); + test_equal(q.size(), (unsigned)0); + test_equal(q.length_str(), (std::string)""); + test_equal(q.next(), TRACK_NULL); q.set_flag(Q_RANDOM); @@ -266,9 +266,9 @@ void test_next() check_equal(track->id, expected_rand[i]); } test :: success(); - test :: equal(q.size(), (unsigned)0); - test :: equal(q.length_str(), (std::string)""); - test :: equal(q.next(), TRACK_NULL); + test_equal(q.size(), (unsigned)0); + test_equal(q.length_str(), (std::string)""); + test_equal(q.next(), TRACK_NULL); q.set_flag(Q_REPEAT); @@ -281,7 +281,23 @@ void test_next() check_equal(track->id, i % 24); } 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, @@ -335,6 +351,7 @@ int main(int argc, char **argv) run_test("Queue Add and Remove Test", test_add_remove); run_test("Queue Track Updated Test", test_updated); run_test("Queue Pick Next Test", test_next); + run_test("Queue Select Track Test", test_select); run_test("Queue Sorting Test", test_sorting); return 0; } diff --git a/tests/test.h b/tests/test.h index 9dfb4d8b..07cb35b2 100644 --- a/tests/test.h +++ b/tests/test.h @@ -69,7 +69,7 @@ namespace test } template - void equal(const T &lhs, const T &rhs, unsigned int line = 0) + void equal(const T &lhs, const T &rhs, unsigned int line) { begin(); check_equal(lhs, rhs, line);