From 3c617f1ca13d1386d0cc9709f9db36d5e354b851 Mon Sep 17 00:00:00 2001 From: Thiago Santos Date: Sun, 18 Sep 2016 12:02:54 -0300 Subject: [PATCH] tests: bin: add more tests for suppressed flags Add tests to confirm flags are persisted even after removing elements that have those suppressed flags --- tests/check/gst/gstbin.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/check/gst/gstbin.c b/tests/check/gst/gstbin.c index 30e0befeff..c242553076 100644 --- a/tests/check/gst/gstbin.c +++ b/tests/check/gst/gstbin.c @@ -1695,6 +1695,35 @@ GST_START_TEST (test_suppressed_flags) GST_END_TEST; + +#define _GST_CHECK_BIN_SUPPRESSED_FLAGS_REMOVAL(suppressed_flags) \ +G_STMT_START { \ + GstBin *bin = GST_BIN (gst_bin_new ("test-bin")); \ + GstElement *element = gst_element_factory_make ("identity", "test-i"); \ + GST_OBJECT_FLAG_SET (bin, suppressed_flags); \ + gst_bin_set_suppressed_flags (bin, suppressed_flags); \ + GST_OBJECT_FLAG_SET (element, suppressed_flags); \ + fail_unless ((suppressed_flags & GST_OBJECT_FLAGS (bin)) \ + == suppressed_flags); \ + gst_bin_add (bin, element); \ + fail_unless ((suppressed_flags & GST_OBJECT_FLAGS (bin)) \ + == suppressed_flags); \ + gst_bin_remove (bin, element); \ + fail_unless ((suppressed_flags & GST_OBJECT_FLAGS (bin)) \ + == suppressed_flags); \ + gst_object_unref (bin); \ +} G_STMT_END + +GST_START_TEST (test_suppressed_flags_when_removing) +{ + _GST_CHECK_BIN_SUPPRESSED_FLAGS_REMOVAL (GST_ELEMENT_FLAG_SOURCE); + _GST_CHECK_BIN_SUPPRESSED_FLAGS_REMOVAL (GST_ELEMENT_FLAG_SINK); + _GST_CHECK_BIN_SUPPRESSED_FLAGS_REMOVAL (GST_ELEMENT_FLAG_REQUIRE_CLOCK); + _GST_CHECK_BIN_SUPPRESSED_FLAGS_REMOVAL (GST_ELEMENT_FLAG_PROVIDE_CLOCK); +} + +GST_END_TEST; + static Suite * gst_bin_suite (void) { @@ -1726,6 +1755,7 @@ gst_bin_suite (void) tcase_add_test (tc_chain, test_duration_unknown_overrides); tcase_add_test (tc_chain, test_deep_added_removed); tcase_add_test (tc_chain, test_suppressed_flags); + tcase_add_test (tc_chain, test_suppressed_flags_when_removing); /* fails on OSX build bot for some reason, and is a bit silly anyway */ if (0)