diff --git a/src/tags_handlers/stream_tags_handler.cc b/src/tags_handlers/stream_tags_handler.cc index 1634284..1374ac0 100644 --- a/src/tags_handlers/stream_tags_handler.cc +++ b/src/tags_handlers/stream_tags_handler.cc @@ -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; diff --git a/src/tags_handlers/stream_tags_handler.h b/src/tags_handlers/stream_tags_handler.h index 40d2ce8..06c833f 100644 --- a/src/tags_handlers/stream_tags_handler.h +++ b/src/tags_handlers/stream_tags_handler.h @@ -9,6 +9,8 @@ namespace opustags { class StreamTagsHandler : public ITagsHandler { public: + static const int ALL_STREAMS; + StreamTagsHandler(const int streamno); int get_streamno() const; diff --git a/tests/tags_handlers/stream_tags_handler_test.cc b/tests/tags_handlers/stream_tags_handler_test.cc index 4345069..5f8ad5e 100644 --- a/tests/tags_handlers/stream_tags_handler_test.cc +++ b/tests/tags_handlers/stream_tags_handler_test.cc @@ -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)); } }