⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gstvalue.c

📁 gnash 在pc和嵌入式下开发需要的源码
💻 C
📖 第 1 页 / 共 4 页
字号:
}GST_END_TEST;GST_START_TEST (test_deserialize_string){  struct  {    gchar *from;    gchar *to;  } tests[] = {    {    "", ""},                    /* empty strings */    {    "\"\"", ""},                /* FAILURES */    {    "\"", NULL},                /* missing second quote */    {    "\"Hello\\ World", NULL},   /* missing second quote */    {    "\"\\", NULL},              /* quote at end, missing second quote */    {    "\"\\0", NULL},             /* missing second quote */    {    "\"\\0\"", NULL},           /* unfinished escaped character */    {    "\" \"", NULL},             /* spaces must be escaped */#if 0        /* FIXME 0.9: this test should fail, but it doesn't */    {    "tüüt", NULL}             /* string with special chars must be escaped */#endif  };  guint i;  GValue v = { 0, };  gboolean ret = TRUE;  g_value_init (&v, G_TYPE_STRING);  for (i = 0; i < G_N_ELEMENTS (tests); i++) {    if (gst_value_deserialize (&v, tests[i].from)) {      fail_if (tests[i].to == NULL,          "I got %s instead of a failure", g_value_get_string (&v));      fail_unless (g_str_equal (g_value_get_string (&v), tests[i].to),          "\nwanted: %s\ngot    : %s", tests[i].to, g_value_get_string (&v));    } else {      fail_if (tests[i].to != NULL, "failed, but wanted: %s", tests[i].to);      ret = FALSE;    }  }  g_value_unset (&v);}GST_END_TEST;GST_START_TEST (test_value_compare){  GValue value1 = { 0 };  GValue value2 = { 0 };  GValue tmp = { 0 };  g_value_init (&value1, G_TYPE_INT);  g_value_set_int (&value1, 10);  g_value_init (&value2, G_TYPE_INT);  g_value_set_int (&value2, 20);  fail_unless (gst_value_compare (&value1, &value2) == GST_VALUE_LESS_THAN);  fail_unless (gst_value_compare (&value2, &value1) == GST_VALUE_GREATER_THAN);  fail_unless (gst_value_compare (&value1, &value1) == GST_VALUE_EQUAL);  g_value_unset (&value1);  g_value_unset (&value2);  g_value_init (&value1, G_TYPE_DOUBLE);  g_value_set_double (&value1, 10);  g_value_init (&value2, G_TYPE_DOUBLE);  g_value_set_double (&value2, 20);  fail_unless (gst_value_compare (&value1, &value2) == GST_VALUE_LESS_THAN);  fail_unless (gst_value_compare (&value2, &value1) == GST_VALUE_GREATER_THAN);  fail_unless (gst_value_compare (&value1, &value1) == GST_VALUE_EQUAL);  g_value_unset (&value1);  g_value_unset (&value2);  g_value_init (&value1, G_TYPE_STRING);  g_value_set_string (&value1, "a");  g_value_init (&value2, G_TYPE_STRING);  g_value_set_string (&value2, "b");  fail_unless (gst_value_compare (&value1, &value2) == GST_VALUE_LESS_THAN);  fail_unless (gst_value_compare (&value2, &value1) == GST_VALUE_GREATER_THAN);  fail_unless (gst_value_compare (&value1, &value1) == GST_VALUE_EQUAL);  g_value_unset (&value1);  g_value_unset (&value2);  g_value_init (&value1, GST_TYPE_FOURCC);  gst_value_set_fourcc (&value1, GST_MAKE_FOURCC ('a', 'b', 'c', 'd'));  g_value_init (&value2, GST_TYPE_FOURCC);  gst_value_set_fourcc (&value2, GST_MAKE_FOURCC ('1', '2', '3', '4'));  fail_unless (gst_value_compare (&value1, &value2) == GST_VALUE_UNORDERED);  fail_unless (gst_value_compare (&value1, &value1) == GST_VALUE_EQUAL);  g_value_unset (&value1);  g_value_unset (&value2);  /* comparing 2/3 with 3/4 */  g_value_init (&value1, GST_TYPE_FRACTION);  gst_value_set_fraction (&value1, 2, 3);  g_value_init (&value2, GST_TYPE_FRACTION);  gst_value_set_fraction (&value2, 3, 4);  fail_unless (gst_value_compare (&value1, &value2) == GST_VALUE_LESS_THAN);  fail_unless (gst_value_compare (&value2, &value1) == GST_VALUE_GREATER_THAN);  fail_unless (gst_value_compare (&value1, &value1) == GST_VALUE_EQUAL);  g_value_unset (&value1);  g_value_unset (&value2);  /* comparing -4/5 with 2/-3 */  g_value_init (&value1, GST_TYPE_FRACTION);  gst_value_set_fraction (&value1, -4, 5);  g_value_init (&value2, GST_TYPE_FRACTION);  gst_value_set_fraction (&value2, 2, -3);  fail_unless (gst_value_compare (&value1, &value2) == GST_VALUE_LESS_THAN);  fail_unless (gst_value_compare (&value2, &value1) == GST_VALUE_GREATER_THAN);  fail_unless (gst_value_compare (&value1, &value1) == GST_VALUE_EQUAL);  g_value_unset (&value1);  g_value_unset (&value2);  /* comparing 10/100 with 200/2000 */  g_value_init (&value1, GST_TYPE_FRACTION);  gst_value_set_fraction (&value1, 10, 100);  g_value_init (&value2, GST_TYPE_FRACTION);  gst_value_set_fraction (&value2, 200, 2000);  fail_unless (gst_value_compare (&value1, &value2) == GST_VALUE_EQUAL);  g_value_unset (&value1);  g_value_unset (&value2);  /* comparing -4/5 with 2/-3 */  g_value_init (&value1, GST_TYPE_FRACTION);  gst_value_set_fraction (&value1, -4, 5);  g_value_init (&value2, GST_TYPE_FRACTION);  gst_value_set_fraction (&value2, 2, -3);  fail_unless (gst_value_compare (&value1, &value2) == GST_VALUE_LESS_THAN);  fail_unless (gst_value_compare (&value2, &value1) == GST_VALUE_GREATER_THAN);  fail_unless (gst_value_compare (&value1, &value1) == GST_VALUE_EQUAL);  g_value_unset (&value1);  g_value_unset (&value2);  /* Check that lists are equal regardless of order */  g_value_init (&value1, GST_TYPE_LIST);  g_value_init (&tmp, G_TYPE_INT);  g_value_set_int (&tmp, 1);  gst_value_list_append_value (&value1, &tmp);  g_value_set_int (&tmp, 2);  gst_value_list_append_value (&value1, &tmp);  g_value_set_int (&tmp, 3);  gst_value_list_append_value (&value1, &tmp);  g_value_set_int (&tmp, 4);  gst_value_list_append_value (&value1, &tmp);  g_value_init (&value2, GST_TYPE_LIST);  g_value_set_int (&tmp, 4);  gst_value_list_append_value (&value2, &tmp);  g_value_set_int (&tmp, 3);  gst_value_list_append_value (&value2, &tmp);  g_value_set_int (&tmp, 2);  gst_value_list_append_value (&value2, &tmp);  g_value_set_int (&tmp, 1);  gst_value_list_append_value (&value2, &tmp);  fail_unless (gst_value_compare (&value1, &value2) == GST_VALUE_EQUAL,      "value lists with different order were not equal when they should be");  fail_unless (gst_value_compare (&value1, &value1) == GST_VALUE_EQUAL,      "value lists with same order were not equal when they should be");  fail_unless (gst_value_compare (&value2, &value2) == GST_VALUE_EQUAL,      "value lists with same order were not equal when they should be");  /* Carry over the lists to this next check: */  /* Lists with different sizes are unequal */  g_value_set_int (&tmp, 1);  gst_value_list_append_value (&value2, &tmp);  fail_if (gst_value_compare (&value1, &value2) == GST_VALUE_EQUAL,      "Value lists with different size were equal when they shouldn't be");  /* Carry over the lists to this next check: */  /* Lists with same size but list1 contains one more element not in list2 */  g_value_set_int (&tmp, 5);  gst_value_list_append_value (&value1, &tmp);  fail_if (gst_value_compare (&value1, &value2) == GST_VALUE_EQUAL,      "Value lists with different elements were equal when they shouldn't be");  fail_if (gst_value_compare (&value2, &value1) == GST_VALUE_EQUAL,      "Value lists with different elements were equal when they shouldn't be");  g_value_unset (&value1);  g_value_unset (&value2);  g_value_unset (&tmp);  /* Arrays are only equal when in the same order */  g_value_init (&value1, GST_TYPE_ARRAY);  g_value_init (&tmp, G_TYPE_INT);  g_value_set_int (&tmp, 1);  gst_value_array_append_value (&value1, &tmp);  g_value_set_int (&tmp, 2);  gst_value_array_append_value (&value1, &tmp);  g_value_set_int (&tmp, 3);  gst_value_array_append_value (&value1, &tmp);  g_value_set_int (&tmp, 4);  gst_value_array_append_value (&value1, &tmp);  g_value_init (&value2, GST_TYPE_ARRAY);  g_value_set_int (&tmp, 4);  gst_value_array_append_value (&value2, &tmp);  g_value_set_int (&tmp, 3);  gst_value_array_append_value (&value2, &tmp);  g_value_set_int (&tmp, 2);  gst_value_array_append_value (&value2, &tmp);  g_value_set_int (&tmp, 1);  gst_value_array_append_value (&value2, &tmp);  fail_if (gst_value_compare (&value1, &value2) == GST_VALUE_EQUAL,      "Value arrays with different order were equal when they shouldn't be");  fail_unless (gst_value_compare (&value1, &value1) == GST_VALUE_EQUAL,      "Identical value arrays were not equal when they should be");  fail_unless (gst_value_compare (&value2, &value2) == GST_VALUE_EQUAL,      "Identical value arrays were not equal when they should be");  /* Carry over the arrays to this next check: */  /* Arrays with different sizes are unequal */  g_value_unset (&value2);  g_value_init (&value2, GST_TYPE_ARRAY);  g_value_copy (&value1, &value2);  g_value_set_int (&tmp, 1);  gst_value_array_append_value (&value2, &tmp);  fail_if (gst_value_compare (&value1, &value2) == GST_VALUE_EQUAL,      "Value arrays with different size were equal when they shouldn't be");  /* order should not matter */  fail_if (gst_value_compare (&value2, &value1) == GST_VALUE_EQUAL,      "Value arrays with different size were equal when they shouldn't be");  g_value_unset (&value1);  g_value_unset (&value2);  g_value_unset (&tmp);}GST_END_TEST;GST_START_TEST (test_value_intersect){  GValue dest = { 0 };  GValue src1 = { 0 };  GValue src2 = { 0 };  GValue item = { 0 };  gboolean ret;  g_value_init (&src1, G_TYPE_INT);  g_value_set_int (&src1, 10);  g_value_init (&src2, G_TYPE_INT);  g_value_set_int (&src2, 20);  ret = gst_value_intersect (&dest, &src1, &src2);  fail_unless (ret == FALSE);  g_value_unset (&src1);  g_value_unset (&src2);  g_value_init (&src1, GST_TYPE_FOURCC);  gst_value_set_fourcc (&src1, GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'));  g_value_init (&src2, GST_TYPE_LIST);  g_value_init (&item, GST_TYPE_FOURCC);  gst_value_set_fourcc (&item, GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'));  gst_value_list_append_value (&src2, &item);  gst_value_set_fourcc (&item, GST_MAKE_FOURCC ('I', '4', '2', '0'));  gst_value_list_append_value (&src2, &item);  gst_value_set_fourcc (&item, GST_MAKE_FOURCC ('A', 'B', 'C', 'D'));  gst_value_list_append_value (&src2, &item);  fail_unless (gst_value_intersect (&dest, &src1, &src2));  fail_unless (GST_VALUE_HOLDS_FOURCC (&dest));  fail_unless (gst_value_get_fourcc (&dest) ==      GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'));  g_value_unset (&src1);  g_value_unset (&src2);}GST_END_TEST;GST_START_TEST (test_value_subtract_int){  GValue dest = { 0 };  GValue src1 = { 0 };  GValue src2 = { 0 };  const GValue *tmp;  gboolean ret;  /*  int <-> int   */  g_value_init (&src1, G_TYPE_INT);  g_value_set_int (&src1, 10);  g_value_init (&src2, G_TYPE_INT);  g_value_set_int (&src2, 20);  /* subtract as in sets, result is 10 */  ret = gst_value_subtract (&dest, &src1, &src2);  fail_unless (ret == TRUE);  fail_unless (gst_value_compare (&dest, &src1) == GST_VALUE_EQUAL);  g_value_unset (&dest);  /* same values, yields empty set */  ret = gst_value_subtract (&dest, &src1, &src1);  fail_unless (ret == FALSE);  g_value_unset (&src1);  g_value_unset (&src2);  /*  int <-> int_range   */  /* would yield an empty set */  g_value_init (&src1, G_TYPE_INT);  g_value_set_int (&src1, 10);  g_value_init (&src2, GST_TYPE_INT_RANGE);  gst_value_set_int_range (&src2, 0, 20);  ret = gst_value_subtract (&dest, &src1, &src2);  fail_unless (ret == FALSE);  /* and the other way around, should create a list of two ranges. */  ret = gst_value_subtract (&dest, &src2, &src1);  fail_unless (ret == TRUE);  fail_unless (GST_VALUE_HOLDS_LIST (&dest) == TRUE);  tmp = gst_value_list_get_value (&dest, 0);  fail_unless (GST_VALUE_HOLDS_INT_RANGE (tmp) == TRUE);  fail_unless (gst_value_get_int_range_min (tmp) == 0);  fail_unless (gst_value_get_int_range_max (tmp) == 9);  tmp = gst_value_list_get_value (&dest, 1);  fail_unless (GST_VALUE_HOLDS_INT_RANGE (tmp) == TRUE);  fail_unless (gst_value_get_int_range_min (tmp) == 11);  fail_unless (gst_value_get_int_range_max (tmp) == 20);  g_value_unset (&dest);  g_value_unset (&src1);  g_value_unset (&src2);  /* border case 1, empty set */  g_value_init (&src1, G_TYPE_INT);  g_value_set_int (&src1, 10);  g_value_init (&src2, GST_TYPE_INT_RANGE);  gst_value_set_int_range (&src2, 10, 20);  ret = gst_value_subtract (&dest, &src1, &src2);  fail_unless (ret == FALSE);  /* and the other way around, should create a new range. */  ret = gst_value_subtract (&dest, &src2, &src1);  fail_unless (ret == TRUE);  fail_unless (GST_VALUE_HOLDS_INT_RANGE (&dest) == TRUE);  fail_unless (gst_value_get_int_range_min (&dest) == 11);  fail_unless (gst_value_get_int_range_max (&dest) == 20);  g_value_unset (&dest);  g_value_unset (&src1);  g_value_unset (&src2);  /* border case 2, empty set */  g_value_init (&src1, G_TYPE_INT);  g_value_set_int (&src1, 20);  g_value_init (&src2, GST_TYPE_INT_RANGE);  gst_value_set_int_range (&src2, 10, 20);  ret = gst_value_subtract (&dest, &src1, &src2);  fail_unless (ret == FALSE);  /* and the other way around, should create a new range. */  ret = gst_value_subtract (&dest, &src2, &src1);  fail_unless (ret == TRUE);  fail_unless (GST_VALUE_HOLDS_INT_RANGE (&dest) == TRUE);  fail_unless (gst_value_get_int_range_min (&dest) == 10);  fail_unless (gst_value_get_int_range_max (&dest) == 19);  g_value_unset (&dest);  g_value_unset (&src1);  g_value_unset (&src2);  /* case 3, valid set */  g_value_init (&src1, G_TYPE_INT);  g_value_set_int (&src1, 0);  g_value_init (&src2, GST_TYPE_INT_RANGE);  gst_value_set_int_range (&src2, 10, 20);  ret = gst_value_subtract (&dest, &src1, &src2);  fail_unless (ret == TRUE);  fail_unless (G_VALUE_HOLDS_INT (&dest) == TRUE);  fail_unless (gst_value_compare (&dest, &src1) == GST_VALUE_EQUAL);  g_value_unset (&dest);  /* and the other way around, should keep the range. */  ret = gst_value_subtract (&dest, &src2, &src1);  fail_unless (ret == TRUE);  fail_unless (GST_VALUE_HOLDS_INT_RANGE (&dest) == TRUE);  fail_unless (gst_value_get_int_range_min (&dest) == 10);  fail_unless (gst_value_get_int_range_max (&dest) == 20);  g_value_unset (&dest);  g_value_unset (&src1);  g_value_unset (&src2);  /*  int_range <-> int_range   */  /* same range, empty set */  g_value_init (&src1, GST_TYPE_INT_RANGE);  gst_value_set_int_range (&src1, 10, 20);  g_value_init (&src2, GST_TYPE_INT_RANGE);  gst_value_set_int_range (&src2, 10, 20);  ret = gst_value_subtract (&dest, &src1, &src2);  fail_unless (ret == FALSE);  ret = gst_value_subtract (&dest, &src2, &src1);  fail_unless (ret == FALSE);  g_value_unset (&src1);  g_value_unset (&src2);  /* non overlapping ranges */  g_value_init (&src1, GST_TYPE_INT_RANGE);  gst_value_set_int_range (&src1, 10, 20);  g_value_init (&src2, GST_TYPE_INT_RANGE);  gst_value_set_int_range (&src2, 30, 40);  ret = gst_value_subtract (&dest, &src1, &src2);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -