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();
void sort(sort_t, bool);
Track *operator[](unsigned int);
void path_selected(unsigned int);
void track_selected(unsigned int);
};
#endif /* OCARINA_QUEUE_H */

View File

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

View File

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

View File

@ -69,7 +69,7 @@ namespace test
}
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();
check_equal(lhs, rhs, line);