2003-05-17 00:48:34 +00:00
|
|
|
#include <gst/gst.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
2004-03-13 15:27:01 +00:00
|
|
|
GstStaticCaps caps1 = GST_STATIC_CAPS ("video/mpeg, " "mpegtype=(int){1,2}");
|
|
|
|
|
|
|
|
GstStaticCaps caps2 = GST_STATIC_CAPS ("video/mpeg, " "mpegtype=(int){1}");
|
|
|
|
|
|
|
|
GstStaticCaps caps3 = GST_STATIC_CAPS ("video/raw, "
|
2003-12-22 01:39:35 +00:00
|
|
|
"fourcc=(fourcc){\"YV12\",\"YUY2\"}, "
|
2004-03-13 15:27:01 +00:00
|
|
|
"width=(int)[16,4096], " "height=(int)[16,4096]");
|
|
|
|
|
|
|
|
GstStaticCaps caps4 = GST_STATIC_CAPS ("video/raw, "
|
|
|
|
"fourcc=(fourcc)\"YV12\", " "height=(int)[16,256]");
|
|
|
|
|
|
|
|
GstStaticCaps caps5 = GST_STATIC_CAPS ("video/raw, "
|
|
|
|
"fourcc=(fourcc){\"YV12\",\"YUY2\"}, " "height=(int)[16,4096]");
|
|
|
|
|
|
|
|
GstStaticCaps caps6 = GST_STATIC_CAPS ("video/raw, "
|
|
|
|
"fourcc=(fourcc){\"YV12\",\"YUYV\"}, " "height=(int)[16,4096]");
|
|
|
|
|
|
|
|
GstStaticCaps caps7 = GST_STATIC_CAPS ("video/raw, "
|
|
|
|
"fourcc=(fourcc){\"YVYV\",\"YUY2\"}, " "height=(int)[16,4096]");
|
|
|
|
|
|
|
|
GstStaticCaps caps8 = GST_STATIC_CAPS ("video/raw, "
|
|
|
|
"format=(fourcc)\"I420\"; " "video/raw, " "format=(fourcc)\"YUYV\"");
|
|
|
|
|
|
|
|
GstStaticCaps caps9 = GST_STATIC_CAPS ("video/raw, "
|
|
|
|
"format=(fourcc)\"I420\"; " "video/raw, " "format=(fourcc)\"YV12\"");
|
2003-05-17 00:48:34 +00:00
|
|
|
|
|
|
|
static gint test = 0;
|
|
|
|
static gint failures = 0;
|
|
|
|
|
|
|
|
#define TEST_START g_print ("%3d, START\n", ++test)
|
|
|
|
#define TEST_FAIL g_print ("%3d, FAIL : failure %d\n", test, ++failures)
|
|
|
|
#define TEST_SUCCESS g_print ("%3d, SUCCESS\n", test)
|
|
|
|
#define TEST_END(result) G_STMT_START{ \
|
|
|
|
if (result) { \
|
|
|
|
TEST_SUCCESS; \
|
|
|
|
} else { \
|
|
|
|
TEST_FAIL; \
|
|
|
|
} \
|
|
|
|
}G_STMT_END
|
|
|
|
static void
|
2004-03-13 15:27:01 +00:00
|
|
|
test_caps_func (const GstCaps * caps)
|
2003-05-17 00:48:34 +00:00
|
|
|
{
|
2004-03-13 15:27:01 +00:00
|
|
|
gchar *str1, *str2;
|
2003-05-17 00:48:34 +00:00
|
|
|
gboolean ret = FALSE;
|
|
|
|
|
|
|
|
str1 = gst_caps_to_string (caps);
|
|
|
|
caps = gst_caps_from_string (str1);
|
|
|
|
if (!caps) {
|
|
|
|
g_print ("%3d, INFO : no caps from %s\n", test, str1);
|
|
|
|
TEST_END (ret);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
str2 = gst_caps_to_string (caps);
|
|
|
|
g_print ("%3d, INFO : %s <==> %s\n", test, str1, str2);
|
|
|
|
ret = strcmp (str1, str2) == 0;
|
|
|
|
g_free (str1);
|
|
|
|
g_free (str2);
|
|
|
|
TEST_END (ret);
|
|
|
|
}
|
|
|
|
static void
|
2004-03-13 15:27:01 +00:00
|
|
|
test_caps (const GstCaps * caps)
|
2003-05-17 00:48:34 +00:00
|
|
|
{
|
|
|
|
TEST_START;
|
|
|
|
test_caps_func (caps);
|
|
|
|
}
|
|
|
|
static void
|
2004-03-13 15:27:01 +00:00
|
|
|
test_string (gchar * str)
|
2003-05-17 00:48:34 +00:00
|
|
|
{
|
|
|
|
GstCaps *caps;
|
|
|
|
|
|
|
|
TEST_START;
|
|
|
|
g_print ("%3d, INFO : checking %s\n", test, str);
|
|
|
|
caps = gst_caps_from_string (str);
|
|
|
|
if (!caps) {
|
|
|
|
g_print ("%3d, INFO : no caps from %s\n", test, str);
|
|
|
|
TEST_FAIL;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
test_caps_func (caps);
|
|
|
|
}
|
|
|
|
static void
|
2004-03-13 15:27:01 +00:00
|
|
|
test_string_fail (gchar * str)
|
2003-05-17 00:48:34 +00:00
|
|
|
{
|
|
|
|
GstCaps *caps;
|
|
|
|
|
|
|
|
TEST_START;
|
|
|
|
g_print ("%3d, INFO : checking %s for failure\n", test, str);
|
|
|
|
caps = gst_caps_from_string (str);
|
2004-03-13 15:27:01 +00:00
|
|
|
g_print ("got %p\n", caps);
|
2003-05-17 00:48:34 +00:00
|
|
|
TEST_END (caps == NULL);
|
|
|
|
}
|
2004-03-13 15:27:01 +00:00
|
|
|
|
|
|
|
int
|
|
|
|
main (int argc, char *argv[])
|
2003-05-17 00:48:34 +00:00
|
|
|
{
|
|
|
|
gst_init (&argc, &argv);
|
2004-03-13 15:27:01 +00:00
|
|
|
goto bla;
|
2003-05-17 00:48:34 +00:00
|
|
|
bla:
|
|
|
|
/* stupidity tests */
|
2003-12-22 01:39:35 +00:00
|
|
|
test_caps (gst_caps_new_simple ("audio/raw", NULL));
|
2003-05-17 00:48:34 +00:00
|
|
|
|
|
|
|
/* all sorts of caps */
|
2003-12-22 01:39:35 +00:00
|
|
|
test_caps (gst_static_caps_get (&caps1));
|
|
|
|
test_caps (gst_static_caps_get (&caps2));
|
|
|
|
test_caps (gst_static_caps_get (&caps3));
|
|
|
|
test_caps (gst_static_caps_get (&caps4));
|
|
|
|
test_caps (gst_static_caps_get (&caps5));
|
|
|
|
test_caps (gst_static_caps_get (&caps6));
|
|
|
|
test_caps (gst_static_caps_get (&caps7));
|
|
|
|
test_caps (gst_static_caps_get (&caps8));
|
|
|
|
test_caps (gst_static_caps_get (&caps9));
|
2003-05-17 00:48:34 +00:00
|
|
|
|
|
|
|
/* mime types */
|
|
|
|
test_string ("audio/raw");
|
|
|
|
test_string ("\"audio/raw\"");
|
|
|
|
|
|
|
|
/* fixed props entries */
|
2003-12-22 01:39:35 +00:00
|
|
|
test_string ("audio/raw ,test=(int)1");
|
configure.ac: Add detection for HAVE_PRINTF_EXTENSION and
Original commit message from CVS:
* configure.ac: Add detection for HAVE_PRINTF_EXTENSION and
GST_PRINTF_EXTENSION_FORMAT_DEFINE.
* docs/random/ds/0.9-suggested-changes: Notes from Company.
* gst/gstcaps.c: (gst_caps_to_string): Add comment.
* gst/gstconfig.h.in: Add define for GST_PTR_FORMAT
* gst/gstinfo.c: (_gst_debug_init), (gst_debug_print_object),
(gst_debug_log_default), (_gst_info_printf_extension),
(_gst_info_printf_extension_arginfo): Add printf extension.
* gst/gstinfo.h: remove G_GNUC_PRINTF, because it doesn't work with %P
* gst/gststructure.c: (gst_structure_to_string),
(_gst_structure_parse_value): Use gst_value_deserialize() and
remove old code.
* gst/gstvalue.c: (gst_value_deserialize_fourcc),
(gst_value_deserialize_boolean), (gst_strtoi),
(gst_value_deserialize_int), (gst_value_deserialize_double),
(gst_value_deserialize_string), (gst_value_deserialize): Implement
a bunch of deserialize functions and gst_value_deserialize.
* gst/gstvalue.h: er, _de_serialize, not unserialize
* testsuite/caps/string-conversions.c: (main): We don't currently
handle (float) in caps, so convert these to (double).
* testsuite/debug/Makefile.am: Add new test for the printf extension
* testsuite/debug/printf_extension.c: (main): same
2004-01-29 01:20:23 +00:00
|
|
|
test_string ("audio/raw ,test=(double) 1");
|
2003-12-22 01:39:35 +00:00
|
|
|
test_string ("audio/raw, test=(fourcc )1");
|
|
|
|
test_string ("audio/raw ,test=(i)1");
|
configure.ac: Add detection for HAVE_PRINTF_EXTENSION and
Original commit message from CVS:
* configure.ac: Add detection for HAVE_PRINTF_EXTENSION and
GST_PRINTF_EXTENSION_FORMAT_DEFINE.
* docs/random/ds/0.9-suggested-changes: Notes from Company.
* gst/gstcaps.c: (gst_caps_to_string): Add comment.
* gst/gstconfig.h.in: Add define for GST_PTR_FORMAT
* gst/gstinfo.c: (_gst_debug_init), (gst_debug_print_object),
(gst_debug_log_default), (_gst_info_printf_extension),
(_gst_info_printf_extension_arginfo): Add printf extension.
* gst/gstinfo.h: remove G_GNUC_PRINTF, because it doesn't work with %P
* gst/gststructure.c: (gst_structure_to_string),
(_gst_structure_parse_value): Use gst_value_deserialize() and
remove old code.
* gst/gstvalue.c: (gst_value_deserialize_fourcc),
(gst_value_deserialize_boolean), (gst_strtoi),
(gst_value_deserialize_int), (gst_value_deserialize_double),
(gst_value_deserialize_string), (gst_value_deserialize): Implement
a bunch of deserialize functions and gst_value_deserialize.
* gst/gstvalue.h: er, _de_serialize, not unserialize
* testsuite/caps/string-conversions.c: (main): We don't currently
handle (float) in caps, so convert these to (double).
* testsuite/debug/Makefile.am: Add new test for the printf extension
* testsuite/debug/printf_extension.c: (main): same
2004-01-29 01:20:23 +00:00
|
|
|
test_string ("audio/raw ,test=(d) 1");
|
2003-12-22 01:39:35 +00:00
|
|
|
test_string ("audio/raw, test=(4 )1");
|
|
|
|
test_string ("audio/raw,test=( fourcc ) 0x0000001");
|
|
|
|
test_string ("audio/raw,test =(fourcc) \"RGB \"");
|
|
|
|
test_string ("audio/raw , test=( string)1");
|
2003-05-17 00:48:34 +00:00
|
|
|
test_string ("audio/raw,test= 1");
|
|
|
|
test_string ("audio/raw,test = 1.0");
|
2003-12-22 01:39:35 +00:00
|
|
|
test_string ("audio/raw ,test= \"1.0\"");
|
|
|
|
test_string ("audio/raw,test=( str) \"1\"");
|
|
|
|
test_string ("audio/raw ,test=(b)False");
|
|
|
|
test_string ("audio/raw ,test =(bool) trUE");
|
|
|
|
test_string ("audio/raw ,test=(b ) yes");
|
|
|
|
test_string ("audio/raw ,test =( boolean)no");
|
2004-05-20 17:03:02 +00:00
|
|
|
test_string ("audio/raw ,test = < 1, 2, 3 >");
|
2003-05-17 00:48:34 +00:00
|
|
|
|
2004-04-13 02:22:02 +00:00
|
|
|
/* buffers */
|
|
|
|
test_string ("audio/raw ,test=(buffer)0123456789abcdef");
|
2004-05-20 17:03:02 +00:00
|
|
|
test_string ("audio/raw ,test= < (buffer)0123, (buffer)4567 >");
|
2004-04-13 02:22:02 +00:00
|
|
|
|
2003-05-17 00:48:34 +00:00
|
|
|
/* unfixed props entries */
|
|
|
|
test_string ("audio/raw, test= [ 1, 2 ]");
|
2003-12-22 01:39:35 +00:00
|
|
|
test_string_fail ("audio/raw, test= [ 1.0 , 2]");
|
|
|
|
test_string_fail ("audio/raw, test = [1, 2.5 ]");
|
2003-05-17 00:48:34 +00:00
|
|
|
test_string ("audio/raw, test= [1.3, 2.1 ]");
|
2003-12-22 01:39:35 +00:00
|
|
|
test_string ("audio/raw, test =(int ) [1,2]");
|
|
|
|
test_string ("audio/raw, test =(double ) [1,2]");
|
|
|
|
test_string ("audio/raw, test= [(int) 1, 2 ]");
|
|
|
|
test_string ("audio/raw, test=(d) [ (double)1.0 , 2]");
|
|
|
|
test_string ("audio/raw, test=(double) [1.3, (double)2.1 ]");
|
|
|
|
test_string ("audio/raw, test =(i) [(int)1,2]");
|
|
|
|
test_string ("audio/raw, test={(int)1,2}");
|
2004-03-13 15:27:01 +00:00
|
|
|
test_string
|
|
|
|
("audio/raw, test= {(int)1 ,2,3 ,(int) 4 , 5 ,6 , (int )7 ,8 , (int ) 9, 10}");
|
2003-12-22 01:39:35 +00:00
|
|
|
test_string ("audio/raw, test= {1.0}");
|
|
|
|
test_string ("audio/raw, test= {\"hi\", \"i dig ya\", dude}");
|
|
|
|
test_string ("audio/raw, test= {(int)1,2}");
|
|
|
|
test_string ("audio/raw, test= {(int)1,2}");
|
2004-03-13 15:27:01 +00:00
|
|
|
|
2003-05-17 00:48:34 +00:00
|
|
|
/* prop concatenations */
|
2003-12-22 01:39:35 +00:00
|
|
|
test_string ("audio/raw, test=(double) [1.3, (double)2.1 ], test2= [ 1, 2 ]");
|
|
|
|
test_string ("audio/raw , test=(fourcc) \"RGB \",test2=(int)1");
|
2004-03-13 15:27:01 +00:00
|
|
|
test_string
|
|
|
|
("audio/raw, test= [(int ) 1, 2 ] ,test2 =(fourcc) \"RGB \"");
|
2003-12-22 01:39:35 +00:00
|
|
|
test_string ("audio/raw, test= [1.3, 2.1 ] , test2= {1.0}");
|
2004-03-13 15:27:01 +00:00
|
|
|
test_string
|
|
|
|
("audio/raw, test= {(int)1 ,2,3 ,(int) 4 , 5 ,6 , (int )7 ,8 , (int ) 9, 10}, test2 = [1.0, 2.5 ] , test3= (string)1 ,test4=(i)1");
|
2003-05-17 00:48:34 +00:00
|
|
|
|
|
|
|
/* caps concatenations */
|
2004-03-13 15:27:01 +00:00
|
|
|
test_string
|
|
|
|
("audio/raw, test= [(int ) 1, 2 ] ,test2 =(fourcc) \"RGB \";\"audio/raw\"");
|
|
|
|
test_string
|
|
|
|
("audio/raw, test =(double ) [1,2] ; audio/raw, test=(fourcc )1 ;audio/raw, test= {\"hi\", \"i dig ya\", dude}");
|
|
|
|
test_string
|
|
|
|
("audio/raw, test=(double) [1.3, (double)2.1 ];audio/raw, test =(i) [(int)1,2]");
|
2003-05-17 00:48:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
/* mimes */
|
|
|
|
test_string_fail ("audio/raw\\");
|
|
|
|
test_string_fail ("'audio/raw");
|
|
|
|
test_string_fail ("'audio/raw\"");
|
|
|
|
/* wrong type */
|
2003-12-22 01:39:35 +00:00
|
|
|
test_string_fail ("audio/raw, test=(int) [1.0,2]");
|
|
|
|
test_string_fail ("audio/raw, test=(int) [1 ,0.2]");
|
|
|
|
test_string_fail ("audio/raw, test=(int) [1.0, 2.000]");
|
2004-05-20 17:03:02 +00:00
|
|
|
test_string_fail ("audio/raw, test=(int) <1.0, 2.000>");
|
2003-05-17 00:48:34 +00:00
|
|
|
/* unmatched */
|
2003-12-22 01:39:35 +00:00
|
|
|
test_string_fail ("audio/raw, test=(int = [");
|
|
|
|
test_string_fail ("audio/raw, test= {");
|
2004-05-20 17:03:02 +00:00
|
|
|
test_string_fail ("audio/raw, test= <");
|
2003-05-17 00:48:34 +00:00
|
|
|
test_string_fail ("audio/raw, test = \"dood'");
|
|
|
|
test_string_fail ("audio/raw, test= '");
|
|
|
|
|
|
|
|
if (failures) {
|
2004-03-13 15:27:01 +00:00
|
|
|
g_print ("\n FAILURES : %d\n", failures);
|
2003-05-17 00:48:34 +00:00
|
|
|
} else {
|
2004-03-13 15:27:01 +00:00
|
|
|
g_print ("\n DONE\n");
|
2003-05-17 00:48:34 +00:00
|
|
|
}
|
|
|
|
return failures;
|
|
|
|
}
|