[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