[Spice-devel] [PATCH spice-streaming-agent 3/4] mjpeg-fallback-test: use BDD structure for test cases
Lukáš Hrázký
lhrazky at redhat.com
Wed Jan 31 11:57:59 UTC 2018
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 at redhat.com>
---
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
More information about the Spice-devel
mailing list