
#include <gst/gst.h>
#include <glib.h>

void test1(void)
{
  GValue value1 = { 0 };
  GValue value2 = { 0 };
  //GValue value3 = { 0 };
  //gboolean ret;

  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);
  g_assert(gst_value_compare(&value1, &value2) == GST_VALUE_LESS_THAN);
  g_assert(gst_value_compare(&value2, &value1) == GST_VALUE_GREATER_THAN);
  g_assert(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);
  g_assert(gst_value_compare(&value1, &value2) == GST_VALUE_LESS_THAN);
  g_assert(gst_value_compare(&value2, &value1) == GST_VALUE_GREATER_THAN);
  g_assert(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");
  g_assert(gst_value_compare(&value1, &value2) == GST_VALUE_LESS_THAN);
  g_assert(gst_value_compare(&value2, &value1) == GST_VALUE_GREATER_THAN);
  g_assert(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'));
  g_assert(gst_value_compare(&value1, &value2) == GST_VALUE_UNORDERED);
  g_assert(gst_value_compare(&value1, &value1) == GST_VALUE_EQUAL);
  g_value_unset(&value1);
  g_value_unset(&value2);

}

int main(int argc, char *argv[])
{

  gst_init(&argc, &argv);

  test1();

  return 0;

}


