Behaviour Driven Development defines self-describing, story-like structures for testing that at the same time document them and descriptive messages when a test fails. Signed-off-by: Lukáš Hrázký <lhrazky@xxxxxxxxxx> --- src/unittests/test-mjpeg-fallback.cpp | 88 +++++++++++++++++++---------------- 1 file changed, 48 insertions(+), 40 deletions(-) diff --git a/src/unittests/test-mjpeg-fallback.cpp b/src/unittests/test-mjpeg-fallback.cpp index 08ed406..cb2cb68 100644 --- a/src/unittests/test-mjpeg-fallback.cpp +++ b/src/unittests/test-mjpeg-fallback.cpp @@ -6,45 +6,53 @@ namespace ssa = SpiceStreamingAgent; -TEST_CASE("test parse options", "[mjpeg][options]") -{ - ssa::MjpegPlugin plugin; - - SECTION("correct setup") { - std::vector<ssa::ConfigureOption> options = { - {"framerate", "20"}, - {"mjpeg.quality", "90"}, - {NULL, NULL} - }; - - plugin.ParseOptions(options.data()); - ssa::MjpegSettings new_options = plugin.Options(); - CHECK(new_options.fps == 20); - CHECK(new_options.quality == 90); - } - - SECTION("unknown option") { - std::vector<ssa::ConfigureOption> options = { - {"wakaka", "10"}, - {NULL, NULL} - }; - - REQUIRE_THROWS_WITH( - plugin.ParseOptions(options.data()), - "Invalid option 'wakaka'." - ); - } - - SECTION("invalid option value") { - std::vector<ssa::ConfigureOption> options = { - {"framerate", "10"}, - {"mjpeg.quality", "toot"}, - {NULL, NULL} - }; - - REQUIRE_THROWS_WITH( - plugin.ParseOptions(options.data()), - "Invalid value 'toot' for option 'mjpeg.quality'." - ); +SCENARIO("test parsing mjpeg plugin options", "[mjpeg][options]") { + GIVEN("A new mjpeg plugin") { + ssa::MjpegPlugin plugin; + + WHEN("passing correct options") { + std::vector<ssa::ConfigureOption> options = { + {"framerate", "20"}, + {"mjpeg.quality", "90"}, + {NULL, NULL} + }; + + plugin.ParseOptions(options.data()); + ssa::MjpegSettings new_options = plugin.Options(); + + THEN("the options are set in the plugin") { + CHECK(new_options.fps == 20); + CHECK(new_options.quality == 90); + } + } + + WHEN("passing an unknown option") { + std::vector<ssa::ConfigureOption> options = { + {"wakaka", "10"}, + {NULL, NULL} + }; + + THEN("ParseOptions throws an exception") { + REQUIRE_THROWS_WITH( + plugin.ParseOptions(options.data()), + "Invalid option 'wakaka'." + ); + } + } + + WHEN("passing an invalid option value") { + std::vector<ssa::ConfigureOption> options = { + {"framerate", "40"}, + {"mjpeg.quality", "toot"}, + {NULL, NULL} + }; + + THEN("ParseOptions throws an exception") { + REQUIRE_THROWS_WITH( + plugin.ParseOptions(options.data()), + "Invalid value 'toot' for option 'mjpeg.quality'." + ); + } + } } } -- 2.16.1 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel