diff options
author | Stefan Kost <ensonic@users.sf.net> | 2010-07-05 14:02:44 +0300 |
---|---|---|
committer | Stefan Kost <ensonic@users.sf.net> | 2010-09-14 10:43:40 +0300 |
commit | 6fdb1eaf1daccfcfb221f8a90ae2f2725ffe8963 (patch) | |
tree | 6ce634c063c20f29df1d94ab83e2f738e7eb3861 | |
parent | f8f12fdcd3ea8764d3b74c19a6ffb7623559692d (diff) |
tests: add new test for intersection of lazy caps
This does intersections of intersections to test lazycaps.
-rw-r--r-- | tests/check/gst/gstcaps.c | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/tests/check/gst/gstcaps.c b/tests/check/gst/gstcaps.c index 6fb35e1ea..6dccf1c57 100644 --- a/tests/check/gst/gstcaps.c +++ b/tests/check/gst/gstcaps.c @@ -728,6 +728,134 @@ GST_START_TEST (test_intersect2) GST_END_TEST; + +GST_START_TEST (test_intersect3) +{ + GstStructure *s; + GstCaps *c1, *c2, *c3, *c4, *ci1, *ci2, *ci3; + + c1 = gst_caps_from_string ("a;b;c;d"); + c2 = gst_caps_from_string ("b;d"); + c3 = gst_caps_from_string ("b;e"); + c4 = gst_caps_from_string ("b"); + + + /* intersect normal caps and check that we get lazy caps */ + ci1 = gst_caps_intersect (c1, c2); + fail_unless (ci1->structs->len == 0, NULL); + GST_DEBUG ("intersected: %" GST_PTR_FORMAT, ci1); + fail_unless (gst_caps_get_size (ci1) == 2, NULL); + s = gst_caps_get_structure (ci1, 0); + fail_unless (gst_structure_has_name (s, "b")); + s = gst_caps_get_structure (ci1, 1); + fail_unless (gst_structure_has_name (s, "d")); + gst_caps_unref (ci1); + + fail_unless (gst_caps_can_intersect (c1, c2), NULL); + + + /* intersect normal caps and check that we get lazy caps */ + ci1 = gst_caps_intersect (c2, c1); + fail_unless (ci1->structs->len == 0, NULL); + GST_DEBUG ("intersected: %" GST_PTR_FORMAT, ci1); + fail_unless (gst_caps_get_size (ci1) == 2, NULL); + s = gst_caps_get_structure (ci1, 0); + fail_unless (gst_structure_has_name (s, "b")); + s = gst_caps_get_structure (ci1, 1); + fail_unless (gst_structure_has_name (s, "d")); + gst_caps_unref (ci1); + + fail_unless (gst_caps_can_intersect (c2, c1), NULL); + + + /* intersect normal caps and check that we get lazy caps */ + ci1 = gst_caps_intersect (c1, c3); + fail_unless (ci1->structs->len == 0, NULL); + GST_DEBUG ("intersected: %" GST_PTR_FORMAT, ci1); + fail_unless (gst_caps_get_size (ci1) == 1, NULL); + s = gst_caps_get_structure (ci1, 0); + fail_unless (gst_structure_has_name (s, "b")); + gst_caps_unref (ci1); + + fail_unless (gst_caps_can_intersect (c1, c3), NULL); + + + /* intersect lazy and normal caps */ + ci1 = gst_caps_intersect (c1, c2); + ci2 = gst_caps_intersect (ci1, c4); + fail_unless (ci2->structs->len == 0, NULL); + GST_DEBUG ("intersected: %" GST_PTR_FORMAT, ci2); + fail_unless (gst_caps_get_size (ci2) == 1, NULL); + s = gst_caps_get_structure (ci2, 0); + fail_unless (gst_structure_has_name (s, "b")); + gst_caps_unref (ci2); + gst_caps_unref (ci1); + + ci1 = gst_caps_intersect (c1, c2); + fail_unless (gst_caps_can_intersect (ci1, c4), NULL); + gst_caps_unref (ci1); + + ci1 = gst_caps_intersect (c1, c2); + ci2 = gst_caps_intersect (c4, ci1); + fail_unless (ci2->structs->len == 0, NULL); + GST_DEBUG ("intersected: %" GST_PTR_FORMAT, ci2); + fail_unless (gst_caps_get_size (ci2) == 1, NULL); + s = gst_caps_get_structure (ci2, 0); + fail_unless (gst_structure_has_name (s, "b")); + gst_caps_unref (ci2); + gst_caps_unref (ci1); + + ci1 = gst_caps_intersect (c1, c2); + fail_unless (gst_caps_can_intersect (c4, ci1), NULL); + gst_caps_unref (ci1); + + + /* intersect lazy caps */ + ci1 = gst_caps_intersect (c1, c2); + ci2 = gst_caps_intersect (c1, c3); + //GST_DEBUG ("intersecting: %" GST_PTR_FORMAT " and %" GST_PTR_FORMAT, ci1, ci2); + ci3 = gst_caps_intersect (ci1, ci2); + fail_unless (ci3->structs->len == 0, NULL); + GST_DEBUG ("intersected: %" GST_PTR_FORMAT, ci3); + fail_unless (gst_caps_get_size (ci3) == 1, NULL); + s = gst_caps_get_structure (ci3, 0); + fail_unless (gst_structure_has_name (s, "b")); + gst_caps_unref (ci3); + gst_caps_unref (ci2); + gst_caps_unref (ci1); + + ci1 = gst_caps_intersect (c1, c2); + ci2 = gst_caps_intersect (c1, c3); + fail_unless (gst_caps_can_intersect (ci1, ci2), NULL); + gst_caps_unref (ci2); + gst_caps_unref (ci1); + + ci1 = gst_caps_intersect (c1, c2); + ci2 = gst_caps_intersect (c1, c3); + ci3 = gst_caps_intersect (ci2, ci1); + fail_unless (ci3->structs->len == 0, NULL); + GST_DEBUG ("intersected: %" GST_PTR_FORMAT, ci3); + fail_unless (gst_caps_get_size (ci3) == 1, NULL); + s = gst_caps_get_structure (ci3, 0); + fail_unless (gst_structure_has_name (s, "b")); + gst_caps_unref (ci3); + + ci1 = gst_caps_intersect (c1, c2); + ci2 = gst_caps_intersect (c1, c3); + fail_unless (gst_caps_can_intersect (ci2, ci1), NULL); + gst_caps_unref (ci2); + gst_caps_unref (ci1); + + + gst_caps_unref (c1); + gst_caps_unref (c2); + gst_caps_unref (c3); + gst_caps_unref (c4); +} + +GST_END_TEST; + + static gboolean _caps_is_fixed_foreach (GQuark field_id, const GValue * value, gpointer unused) { @@ -795,6 +923,7 @@ GST_START_TEST (test_normalize) GST_END_TEST; + static Suite * gst_caps_suite (void) { @@ -814,6 +943,7 @@ gst_caps_suite (void) tcase_add_test (tc_chain, test_merge_subset); tcase_add_test (tc_chain, test_intersect); tcase_add_test (tc_chain, test_intersect2); + tcase_add_test (tc_chain, test_intersect3); tcase_add_test (tc_chain, test_normalize); return s; |