mirror of
https://github.com/fmang/opustags.git
synced 2025-07-09 10:55:10 +02:00
Add ability to target any stream in TagsHandlers
This commit is contained in:
@ -16,12 +16,12 @@ int StreamTagsHandler::get_streamno() const
|
||||
|
||||
bool StreamTagsHandler::relevant(const int streamno)
|
||||
{
|
||||
return streamno == this->streamno;
|
||||
return streamno == this->streamno || this->streamno == ALL_STREAMS;
|
||||
}
|
||||
|
||||
void StreamTagsHandler::list(const int streamno, const Tags &tags)
|
||||
{
|
||||
if (streamno != this->streamno)
|
||||
if (!relevant(streamno))
|
||||
return;
|
||||
list_impl(tags);
|
||||
work_finished = true;
|
||||
@ -29,7 +29,7 @@ void StreamTagsHandler::list(const int streamno, const Tags &tags)
|
||||
|
||||
bool StreamTagsHandler::edit(const int streamno, Tags &tags)
|
||||
{
|
||||
if (streamno != this->streamno)
|
||||
if (!relevant(streamno))
|
||||
return false;
|
||||
const auto ret = edit_impl(tags);
|
||||
work_finished = true;
|
||||
|
@ -9,6 +9,8 @@ namespace opustags {
|
||||
class StreamTagsHandler : public ITagsHandler
|
||||
{
|
||||
public:
|
||||
static const int ALL_STREAMS;
|
||||
|
||||
StreamTagsHandler(const int streamno);
|
||||
|
||||
int get_streamno() const;
|
||||
|
@ -37,42 +37,50 @@ bool DummyTagsHandler::edit_impl(Tags &)
|
||||
|
||||
TEST_CASE("Stream-based tags handler test")
|
||||
{
|
||||
const auto relevant_stream_number = 1;
|
||||
const auto irrelevant_stream_number = 2;
|
||||
Tags dummy_tags;
|
||||
SECTION("Concrete stream") {
|
||||
const auto relevant_stream_number = 1;
|
||||
const auto irrelevant_stream_number = 2;
|
||||
Tags dummy_tags;
|
||||
DummyTagsHandler handler(relevant_stream_number);
|
||||
|
||||
DummyTagsHandler handler(1);
|
||||
SECTION("Relevance") {
|
||||
REQUIRE(!handler.relevant(irrelevant_stream_number));
|
||||
REQUIRE(handler.relevant(relevant_stream_number));
|
||||
}
|
||||
|
||||
SECTION("Relevance") {
|
||||
REQUIRE(!handler.relevant(irrelevant_stream_number));
|
||||
REQUIRE(handler.relevant(relevant_stream_number));
|
||||
SECTION("Listing") {
|
||||
handler.list(irrelevant_stream_number, dummy_tags);
|
||||
REQUIRE(!handler.list_fired);
|
||||
handler.list(relevant_stream_number, dummy_tags);
|
||||
REQUIRE(handler.list_fired);
|
||||
}
|
||||
|
||||
SECTION("Editing") {
|
||||
REQUIRE(!handler.edit(irrelevant_stream_number, dummy_tags));
|
||||
REQUIRE(!handler.edit_fired);
|
||||
REQUIRE(handler.edit(relevant_stream_number, dummy_tags));
|
||||
REQUIRE(handler.edit_fired);
|
||||
}
|
||||
|
||||
SECTION("Finish through listing") {
|
||||
REQUIRE(!handler.edit(irrelevant_stream_number, dummy_tags));
|
||||
REQUIRE(!handler.done());
|
||||
REQUIRE(handler.edit(relevant_stream_number, dummy_tags));
|
||||
REQUIRE(handler.done());
|
||||
}
|
||||
|
||||
SECTION("Finish through editing") {
|
||||
handler.list(irrelevant_stream_number, dummy_tags);
|
||||
REQUIRE(!handler.done());
|
||||
handler.list(relevant_stream_number, dummy_tags);
|
||||
REQUIRE(handler.done());
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("Listing") {
|
||||
handler.list(irrelevant_stream_number, dummy_tags);
|
||||
REQUIRE(!handler.list_fired);
|
||||
handler.list(relevant_stream_number, dummy_tags);
|
||||
REQUIRE(handler.list_fired);
|
||||
}
|
||||
|
||||
SECTION("Editing") {
|
||||
REQUIRE(!handler.edit(irrelevant_stream_number, dummy_tags));
|
||||
REQUIRE(!handler.edit_fired);
|
||||
REQUIRE(handler.edit(relevant_stream_number, dummy_tags));
|
||||
REQUIRE(handler.edit_fired);
|
||||
}
|
||||
|
||||
SECTION("Finish through listing") {
|
||||
REQUIRE(!handler.edit(irrelevant_stream_number, dummy_tags));
|
||||
REQUIRE(!handler.done());
|
||||
REQUIRE(handler.edit(relevant_stream_number, dummy_tags));
|
||||
REQUIRE(handler.done());
|
||||
}
|
||||
|
||||
SECTION("Finish through editing") {
|
||||
handler.list(irrelevant_stream_number, dummy_tags);
|
||||
REQUIRE(!handler.done());
|
||||
handler.list(relevant_stream_number, dummy_tags);
|
||||
REQUIRE(handler.done());
|
||||
SECTION("Any stream") {
|
||||
DummyTagsHandler handler(StreamTagsHandler::ALL_STREAMS);
|
||||
REQUIRE(handler.relevant(1));
|
||||
REQUIRE(handler.relevant(2));
|
||||
REQUIRE(handler.relevant(3));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user