GST_END_TEST;
-GST_START_TEST (test_is_subset)
+GST_START_TEST (test_is_subset_equal_array_list)
{
GstStructure *s1, *s2;
GST_END_TEST;
+GST_START_TEST (test_is_subset_different_name)
+{
+ GstStructure *s1, *s2;
+
+ s1 = gst_structure_from_string ("test/test, channels=(int)1", NULL);
+ fail_if (s1 == NULL);
+ s2 = gst_structure_from_string ("test/baz, channels=(int)1", NULL);
+ fail_if (s2 == NULL);
+
+ fail_unless (!gst_structure_is_subset (s1, s2));
+
+ gst_structure_free (s1);
+ gst_structure_free (s2);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_is_subset_superset_missing_fields)
+{
+ GstStructure *s1, *s2;
+
+ /* a missing field is equivalent to any value */
+ s1 = gst_structure_from_string ("test/test, channels=(int)1, rate=(int)1",
+ NULL);
+ fail_if (s1 == NULL);
+ s2 = gst_structure_from_string ("test/test, channels=(int)1", NULL);
+ fail_if (s2 == NULL);
+
+ fail_unless (gst_structure_is_subset (s1, s2));
+
+ gst_structure_free (s1);
+ gst_structure_free (s2);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_is_subset_superset_extra_fields)
+{
+ GstStructure *s1, *s2;
+
+ /* a missing field is equivalent to any value */
+ s1 = gst_structure_from_string ("test/test, channels=(int)1", NULL);
+ fail_if (s1 == NULL);
+ s2 = gst_structure_from_string ("test/test, channels=(int)1, rate=(int)1",
+ NULL);
+ fail_if (s2 == NULL);
+
+ fail_unless (!gst_structure_is_subset (s1, s2));
+
+ gst_structure_free (s1);
+ gst_structure_free (s2);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_is_subset_superset_extra_values)
+{
+ GstStructure *s1, *s2;
+
+ s1 = gst_structure_from_string ("test/test, channels=(int)1", NULL);
+ fail_if (s1 == NULL);
+ s2 = gst_structure_from_string ("test/test, channels=(int)[ 1, 2 ]", NULL);
+ fail_if (s2 == NULL);
+
+ fail_unless (gst_structure_is_subset (s1, s2));
+
+ gst_structure_free (s1);
+ gst_structure_free (s2);
+}
+
+GST_END_TEST;
+
GST_START_TEST (test_structure_nested)
{
tcase_add_test (tc_chain, test_structure_new);
tcase_add_test (tc_chain, test_fixate);
tcase_add_test (tc_chain, test_fixate_frac_list);
- tcase_add_test (tc_chain, test_is_subset);
+ tcase_add_test (tc_chain, test_is_subset_equal_array_list);
+ tcase_add_test (tc_chain, test_is_subset_different_name);
+ tcase_add_test (tc_chain, test_is_subset_superset_missing_fields);
+ tcase_add_test (tc_chain, test_is_subset_superset_extra_fields);
+ tcase_add_test (tc_chain, test_is_subset_superset_extra_values);
tcase_add_test (tc_chain, test_structure_nested);
tcase_add_test (tc_chain, test_structure_nested_from_and_to_string);
tcase_add_test (tc_chain, test_vararg_getters);