gio/tests/socket: Update to check the error code
[platform/upstream/glib.git] / gio / tests / data-output-stream.c
index 473aeb9..b656b27 100644 (file)
 #define MAX_BYTES_BINARY       0x100   
 
 static void
+test_basic (void)
+{
+  GOutputStream *stream;
+  GOutputStream *base_stream;
+  gpointer data;
+  gint val;
+
+  data = g_malloc0 (MAX_LINES_BUFF);
+  
+  /* initialize objects */
+  base_stream = g_memory_output_stream_new (data, MAX_LINES_BUFF, NULL, NULL);
+  stream = G_OUTPUT_STREAM (g_data_output_stream_new (base_stream));
+
+  g_object_get (stream, "byte-order", &val, NULL);
+  g_assert_cmpint (val, ==, G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN);
+  g_object_set (stream, "byte-order", G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN, NULL);
+  g_assert_cmpint (g_data_output_stream_get_byte_order (G_DATA_OUTPUT_STREAM (stream)), ==, G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN);
+
+  g_object_unref (stream);
+  g_object_unref (base_stream);
+  g_free (data);
+}
+
+static void
 test_read_lines (GDataStreamNewlineType newline_type)
 {
   GOutputStream *stream;
@@ -62,6 +86,7 @@ test_read_lines (GDataStreamNewlineType newline_type)
       g_stpcpy ((char*)(lines + i*strlen(s)), s);
       g_assert_no_error (error);
       g_assert (res == TRUE);
+      g_free (s);
     }
 
   /*  Byte order testing */
@@ -109,42 +134,19 @@ enum TestDataType {
   TEST_DATA_UINT64
 };
 
-#define TEST_DATA_RETYPE(a, v) \
-       (a == TEST_DATA_BYTE    ? (guchar)v : \
-       (a == TEST_DATA_INT16   ? (gint16)v : \
-       (a == TEST_DATA_UINT16  ? (guint16)v : \
-       (a == TEST_DATA_INT32   ? (gint32)v : \
-       (a == TEST_DATA_UINT32  ? (guint32)v : \
-       (a == TEST_DATA_INT64   ? (gint64)v : \
-        (guint64)v )))))) 
-
-#define TEST_DATA_RETYPE_BUFF(a, v)    \
-       (a == TEST_DATA_BYTE    ? *(guchar*)v : \
-       (a == TEST_DATA_INT16   ? *(gint16*)v : \
-       (a == TEST_DATA_UINT16  ? *(guint16*)v : \
-       (a == TEST_DATA_INT32   ? *(gint32*)v : \
-       (a == TEST_DATA_UINT32  ? *(guint32*)v : \
-       (a == TEST_DATA_INT64   ? *(gint64*)v : \
-        *(guint64*)v )))))) 
-
-
-
-
 static void
-test_data_array (gpointer buffer, int len,
+test_data_array (guchar *buffer, gsize len,
                 enum TestDataType data_type, GDataStreamByteOrder byte_order)
 {
   GOutputStream *stream;
   GOutputStream *base_stream;
-  gpointer stream_data;
+  guchar *stream_data;
   
   GError *error = NULL;
-  int pos;
-  int data_size = 1;
+  guint pos;
   GDataStreamByteOrder native;
   gboolean swap;
   gboolean res;
-  guint64 data;
   
   /*  create objects */
   stream_data = g_malloc0 (len);
@@ -152,95 +154,114 @@ test_data_array (gpointer buffer, int len,
   stream = G_OUTPUT_STREAM (g_data_output_stream_new (base_stream));
   g_data_output_stream_set_byte_order (G_DATA_OUTPUT_STREAM (stream), byte_order);
   
+  /*  Set flag to swap bytes if needed */
+  native = (G_BYTE_ORDER == G_BIG_ENDIAN) ? G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN : G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN;
+  swap = (byte_order != G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN) && (byte_order != native);
 
-  /*  Set correct data size */
+  /* set len to length of buffer cast to actual type */
   switch (data_type)
     {
     case TEST_DATA_BYTE:
-      data_size = 1;
       break;
     case TEST_DATA_INT16:
     case TEST_DATA_UINT16:
-      data_size = 2;
-      break;
+      g_assert_cmpint (len % 2, ==, 0);
     case TEST_DATA_INT32:
     case TEST_DATA_UINT32:
-      data_size = 4;
-      break;
+      g_assert_cmpint (len % 4, ==, 0);
     case TEST_DATA_INT64:
     case TEST_DATA_UINT64:
-      data_size = 8;
-      break; 
+      g_assert_cmpint (len % 8, ==, 0);
+      len /= 8;
+      break;
+    default:
+      g_assert_not_reached ();
+      break;
     }
-       
-  /*  Set flag to swap bytes if needed */
-  native = (G_BYTE_ORDER == G_BIG_ENDIAN) ? G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN : G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN;
-  swap = (byte_order != G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN) && (byte_order != native);
 
   /*  Write data to the file */
-  pos = 0;
-  while (pos < len)
+  for (pos = 0; pos < len; pos++)
     {
       switch (data_type)
        {
        case TEST_DATA_BYTE:
-         res = g_data_output_stream_put_byte (G_DATA_OUTPUT_STREAM (stream), TEST_DATA_RETYPE_BUFF (data_type, ((guchar*)buffer + pos)), NULL, &error);
+         res = g_data_output_stream_put_byte (G_DATA_OUTPUT_STREAM (stream), buffer[pos], NULL, &error);
          break;
        case TEST_DATA_INT16:
-         res = g_data_output_stream_put_int16 (G_DATA_OUTPUT_STREAM (stream), TEST_DATA_RETYPE_BUFF (data_type, ((guchar*)buffer + pos)), NULL, &error);
+         res = g_data_output_stream_put_int16 (G_DATA_OUTPUT_STREAM (stream), ((gint16 *) buffer)[pos], NULL, &error);
          break;
        case TEST_DATA_UINT16:
-         res = g_data_output_stream_put_uint16 (G_DATA_OUTPUT_STREAM (stream), TEST_DATA_RETYPE_BUFF (data_type, ((guchar*)buffer + pos)), NULL, &error);
+         res = g_data_output_stream_put_uint16 (G_DATA_OUTPUT_STREAM (stream), ((guint16 *) buffer)[pos], NULL, &error);
          break;
        case TEST_DATA_INT32:
-         res = g_data_output_stream_put_int32 (G_DATA_OUTPUT_STREAM (stream), TEST_DATA_RETYPE_BUFF (data_type, ((guchar*)buffer + pos)), NULL, &error);
+         res = g_data_output_stream_put_int32 (G_DATA_OUTPUT_STREAM (stream), ((gint32 *) buffer)[pos], NULL, &error);
          break;
        case TEST_DATA_UINT32:
-         res = g_data_output_stream_put_uint32 (G_DATA_OUTPUT_STREAM (stream), TEST_DATA_RETYPE_BUFF (data_type, ((guchar*)buffer + pos)), NULL, &error);
+         res = g_data_output_stream_put_uint32 (G_DATA_OUTPUT_STREAM (stream), ((guint32 *) buffer)[pos], NULL, &error);
          break;
        case TEST_DATA_INT64:
-         res = g_data_output_stream_put_int64 (G_DATA_OUTPUT_STREAM (stream), TEST_DATA_RETYPE_BUFF (data_type, ((guchar*)buffer + pos)), NULL, &error);
+         res = g_data_output_stream_put_int64 (G_DATA_OUTPUT_STREAM (stream), ((gint64 *) buffer)[pos], NULL, &error);
          break;
        case TEST_DATA_UINT64:
-         res = g_data_output_stream_put_uint64 (G_DATA_OUTPUT_STREAM (stream), TEST_DATA_RETYPE_BUFF (data_type, ((guchar*)buffer + pos)), NULL, &error);
+         res = g_data_output_stream_put_uint64 (G_DATA_OUTPUT_STREAM (stream), ((guint64 *) buffer)[pos], NULL, &error);
          break;
+        default:
+          g_assert_not_reached ();
+          break;
        }
       g_assert_no_error (error);
       g_assert_cmpint (res, ==, TRUE);
-      pos += data_size;
     }
   
-       
   /*  Compare data back */
-  pos = 0;
-  data = 0;
-  while (pos < len)
+  for (pos = 0; pos < len; pos++)
     {
-      data = TEST_DATA_RETYPE_BUFF(data_type, ((guchar*)stream_data + pos));
-      if (swap)
-       {
-         switch (data_type)
-           {
-           case TEST_DATA_BYTE:  
-             break;
-           case TEST_DATA_UINT16:
-           case TEST_DATA_INT16:
-             data = TEST_DATA_RETYPE(data_type, GUINT16_SWAP_LE_BE(TEST_DATA_RETYPE(data_type, data)));
-             break;
-           case TEST_DATA_UINT32:
-           case TEST_DATA_INT32:
-             data = TEST_DATA_RETYPE(data_type, GUINT32_SWAP_LE_BE(TEST_DATA_RETYPE(data_type, data)));
-             break;
-           case TEST_DATA_UINT64:
-           case TEST_DATA_INT64:
-             data = TEST_DATA_RETYPE(data_type, GUINT64_SWAP_LE_BE(TEST_DATA_RETYPE(data_type, data)));
-             break;
-           }
-       }
-      g_assert_cmpint (data, ==, TEST_DATA_RETYPE_BUFF(data_type, ((guchar*)buffer + pos)));
-      break;
-      
-      pos += data_size;
+      switch (data_type)
+        {
+        case TEST_DATA_BYTE:
+          /* swapping unnecessary */
+          g_assert_cmpint (buffer[pos], ==, stream_data[pos]);
+          break;
+        case TEST_DATA_UINT16:
+          if (swap)
+            g_assert_cmpint (GUINT16_SWAP_LE_BE (((guint16 *) buffer)[pos]), ==, ((guint16 *) stream_data)[pos]);
+          else
+            g_assert_cmpint (((guint16 *) buffer)[pos], ==, ((guint16 *) stream_data)[pos]);
+          break;
+        case TEST_DATA_INT16:
+          if (swap)
+            g_assert_cmpint ((gint16) GUINT16_SWAP_LE_BE (((gint16 *) buffer)[pos]), ==, ((gint16 *) stream_data)[pos]);
+          else
+            g_assert_cmpint (((gint16 *) buffer)[pos], ==, ((gint16 *) stream_data)[pos]);
+          break;
+        case TEST_DATA_UINT32:
+          if (swap)
+            g_assert_cmpint (GUINT32_SWAP_LE_BE (((guint32 *) buffer)[pos]), ==, ((guint32 *) stream_data)[pos]);
+          else
+            g_assert_cmpint (((guint32 *) buffer)[pos], ==, ((guint32 *) stream_data)[pos]);
+          break;
+        case TEST_DATA_INT32:
+          if (swap)
+            g_assert_cmpint ((gint32) GUINT32_SWAP_LE_BE (((gint32 *) buffer)[pos]), ==, ((gint32 *) stream_data)[pos]);
+          else
+            g_assert_cmpint (((gint32 *) buffer)[pos], ==, ((gint32 *) stream_data)[pos]);
+          break;
+        case TEST_DATA_UINT64:
+          if (swap)
+            g_assert_cmpint (GUINT64_SWAP_LE_BE (((guint64 *) buffer)[pos]), ==, ((guint64 *) stream_data)[pos]);
+          else
+            g_assert_cmpint (((guint64 *) buffer)[pos], ==, ((guint64 *) stream_data)[pos]);
+          break;
+        case TEST_DATA_INT64:
+          if (swap)
+            g_assert_cmpint ((gint64) GUINT64_SWAP_LE_BE (((gint64 *) buffer)[pos]), ==, ((gint64 *) stream_data)[pos]);
+          else
+            g_assert_cmpint (((gint64 *) buffer)[pos], ==, ((gint64 *) stream_data)[pos]);
+          break;
+        default:
+            g_assert_not_reached ();
+          break;
+        }
     }
   
   g_object_unref (base_stream);
@@ -251,18 +272,18 @@ test_data_array (gpointer buffer, int len,
 static void
 test_read_int (void)
 {
-  GRand *rand;
+  GRand *randomizer;
   gpointer buffer;
   int i;
   
-  rand = g_rand_new ();
+  randomizer = g_rand_new ();
   buffer = g_malloc0(MAX_BYTES_BINARY);
   
   /*  Fill in some random data */
   for (i = 0; i < MAX_BYTES_BINARY; i++)
     {
       guchar x = 0;
-      while (! x)  x = (guchar)g_rand_int (rand);
+      while (! x)  x = (guchar)g_rand_int (randomizer);
       *(guchar*)((guchar*)buffer + sizeof (guchar) * i) = x; 
     }
 
@@ -273,21 +294,219 @@ test_read_int (void)
        test_data_array (buffer, MAX_BYTES_BINARY, j, i);
     }
   
-  g_rand_free (rand);
+  g_rand_free (randomizer);
   g_free (buffer);
 }
 
+static void
+test_seek (void)
+{
+  GDataOutputStream *stream;
+  GMemoryOutputStream *base_stream;
+  GSeekable *seekable;
+  GError *error;
+  guchar *stream_data;
+  gsize len;
+  gboolean res;
+
+  len = 8;
+  
+  /*  create objects */
+  stream_data = g_malloc0 (len);
+  base_stream = G_MEMORY_OUTPUT_STREAM (g_memory_output_stream_new (stream_data, len, NULL, NULL));
+  stream = g_data_output_stream_new (G_OUTPUT_STREAM (base_stream));
+  g_data_output_stream_set_byte_order (stream, G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN);
+  seekable = G_SEEKABLE (stream);
+  g_assert (!g_seekable_can_truncate (seekable));
+  error = NULL;
+  
+  /* Write */
+  g_assert_cmpint (g_seekable_tell (seekable), ==, 0);
+  res = g_data_output_stream_put_uint16 (stream, 0x0123, NULL, &error);
+  g_assert_no_error (error);
+  g_assert (res);
+  g_data_output_stream_put_uint16 (stream, 0x4567, NULL, NULL);
+  g_assert_cmpint (g_seekable_tell (seekable), ==, 4);
+  g_assert_cmpint (stream_data[0], ==, 0x01);
+  g_assert_cmpint (stream_data[1], ==, 0x23);
+  g_assert_cmpint (stream_data[2], ==, 0x45);
+  g_assert_cmpint (stream_data[3], ==, 0x67);
+  g_assert_cmpint (g_memory_output_stream_get_data_size (base_stream), ==, 4);
+
+  /* Forward relative seek */
+  res = g_seekable_seek (seekable, 2, G_SEEK_CUR, NULL, &error);
+  g_assert_no_error (error);
+  g_assert (res);
+  g_assert_cmpint (g_seekable_tell (seekable), ==, 6);
+  g_assert_cmpint (g_memory_output_stream_get_data_size (base_stream), ==, 4);
+  res = g_data_output_stream_put_uint16 (stream, 0x89AB, NULL, &error);
+  g_assert (res);
+  g_assert_cmpint (g_seekable_tell (seekable), ==, 8);
+  g_assert_cmpint (g_memory_output_stream_get_data_size (base_stream), ==, 8);
+  g_assert_cmpint (stream_data[0], ==, 0x01);
+  g_assert_cmpint (stream_data[1], ==, 0x23);
+  g_assert_cmpint (stream_data[2], ==, 0x45);
+  g_assert_cmpint (stream_data[3], ==, 0x67);
+  g_assert_cmpint (stream_data[4], ==, 0x00);
+  g_assert_cmpint (stream_data[5], ==, 0x00);
+  g_assert_cmpint (stream_data[6], ==, 0x89);
+  g_assert_cmpint (stream_data[7], ==, 0xAB);
+
+  /* Backward relative seek */
+  res = g_seekable_seek (seekable, -3, G_SEEK_CUR, NULL, &error);
+  g_assert_no_error (error);
+  g_assert (res);
+  g_assert_cmpint (g_seekable_tell (seekable), ==, 5);
+  g_assert_cmpint (g_memory_output_stream_get_data_size (base_stream), ==, 8);
+  res = g_data_output_stream_put_uint16 (stream, 0xCDEF, NULL, &error);
+  g_assert_no_error (error);
+  g_assert (res);
+  g_assert_cmpint (g_seekable_tell (seekable), ==, 7);
+  g_assert_cmpint (g_memory_output_stream_get_data_size (base_stream), ==, 8);
+  g_assert_cmpint (stream_data[0], ==, 0x01);
+  g_assert_cmpint (stream_data[1], ==, 0x23);
+  g_assert_cmpint (stream_data[2], ==, 0x45);
+  g_assert_cmpint (stream_data[3], ==, 0x67);
+  g_assert_cmpint (stream_data[4], ==, 0x00);
+  g_assert_cmpint (stream_data[5], ==, 0xCD);
+  g_assert_cmpint (stream_data[6], ==, 0xEF);
+  g_assert_cmpint (stream_data[7], ==, 0xAB);
+
+  /* From start */
+  res = g_seekable_seek (seekable, 4, G_SEEK_SET, NULL, &error);
+  g_assert_no_error (error);
+  g_assert (res);
+  g_assert_cmpint (g_seekable_tell (seekable), ==, 4);
+  g_assert_cmpint (g_memory_output_stream_get_data_size (base_stream), ==, 8);
+  res = g_data_output_stream_put_uint16 (stream, 0xFEDC, NULL, &error);
+  g_assert_no_error (error);
+  g_assert (res);
+  g_assert_cmpint (g_seekable_tell (seekable), ==, 6);
+  g_assert_cmpint (g_memory_output_stream_get_data_size (base_stream), ==, 8);
+  g_assert_cmpint (stream_data[0], ==, 0x01);
+  g_assert_cmpint (stream_data[1], ==, 0x23);
+  g_assert_cmpint (stream_data[2], ==, 0x45);
+  g_assert_cmpint (stream_data[3], ==, 0x67);
+  g_assert_cmpint (stream_data[4], ==, 0xFE);
+  g_assert_cmpint (stream_data[5], ==, 0xDC);
+  g_assert_cmpint (stream_data[6], ==, 0xEF);
+  g_assert_cmpint (stream_data[7], ==, 0xAB);
+
+  /* From end */
+  res = g_seekable_seek (seekable, -4, G_SEEK_END, NULL, &error);
+  g_assert_no_error (error);
+  g_assert (res);
+  g_assert_cmpint (g_seekable_tell (seekable), ==, 4);
+  g_assert_cmpint (g_memory_output_stream_get_data_size (base_stream), ==, 8);
+  res = g_data_output_stream_put_uint16 (stream, 0xBA87, NULL, &error);
+  g_assert_no_error (error);
+  g_assert (res);
+  g_assert_cmpint (g_seekable_tell (seekable), ==, 6);
+  g_assert_cmpint (g_memory_output_stream_get_data_size (base_stream), ==, 8);
+  g_assert_cmpint (stream_data[0], ==, 0x01);
+  g_assert_cmpint (stream_data[1], ==, 0x23);
+  g_assert_cmpint (stream_data[2], ==, 0x45);
+  g_assert_cmpint (stream_data[3], ==, 0x67);
+  g_assert_cmpint (stream_data[4], ==, 0xBA);
+  g_assert_cmpint (stream_data[5], ==, 0x87);
+  g_assert_cmpint (stream_data[6], ==, 0xEF);
+  g_assert_cmpint (stream_data[7], ==, 0xAB);
+
+  g_object_unref (stream);
+  g_object_unref (base_stream);
+  g_free (stream_data);
+}
+
+static void
+test_truncate (void)
+{
+  GDataOutputStream *stream;
+  GMemoryOutputStream *base_stream;
+  GSeekable *seekable;
+  GError *error;
+  guchar *stream_data;
+  gsize len;
+  gboolean res;
+
+  len = 8;
+
+  /* Create objects */
+  stream_data = g_malloc0 (len);
+  base_stream = G_MEMORY_OUTPUT_STREAM (g_memory_output_stream_new (stream_data, len, g_realloc, g_free));
+  stream = g_data_output_stream_new (G_OUTPUT_STREAM (base_stream));
+  g_data_output_stream_set_byte_order (stream, G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN);
+  seekable = G_SEEKABLE (stream);
+  error = NULL;
+  g_assert (g_seekable_can_truncate (seekable));
+  
+  /* Write */
+  g_assert_cmpint (g_memory_output_stream_get_size (base_stream), ==, len);
+  g_assert_cmpint (g_memory_output_stream_get_data_size (base_stream), ==, 0);
+  res = g_data_output_stream_put_uint16 (stream, 0x0123, NULL, &error);
+  g_assert_no_error (error);
+  g_assert (res);
+  res = g_data_output_stream_put_uint16 (stream, 0x4567, NULL, NULL);
+  g_assert_no_error (error);
+  g_assert (res);
+  g_assert_cmpint (g_memory_output_stream_get_size (base_stream), ==, len);
+  g_assert_cmpint (g_memory_output_stream_get_data_size (base_stream), ==, 4);
+  stream_data = g_memory_output_stream_get_data (base_stream);
+  g_assert_cmpint (stream_data[0], ==, 0x01);
+  g_assert_cmpint (stream_data[1], ==, 0x23);
+  g_assert_cmpint (stream_data[2], ==, 0x45);
+  g_assert_cmpint (stream_data[3], ==, 0x67);
+
+  /* Truncate at position */
+  res = g_seekable_truncate (seekable, 4, NULL, &error);
+  g_assert_no_error (error);
+  g_assert (res);
+  g_assert_cmpint (g_memory_output_stream_get_size (base_stream), ==, 4);
+  g_assert_cmpint (g_memory_output_stream_get_data_size (base_stream), ==, 4);
+  stream_data = g_memory_output_stream_get_data (base_stream);
+  g_assert_cmpint (stream_data[0], ==, 0x01);
+  g_assert_cmpint (stream_data[1], ==, 0x23);
+  g_assert_cmpint (stream_data[2], ==, 0x45);
+  g_assert_cmpint (stream_data[3], ==, 0x67);
+
+  /* Truncate beyond position */
+  res = g_seekable_truncate (seekable, 6, NULL, &error);
+  g_assert_no_error (error);
+  g_assert (res);
+  g_assert_cmpint (g_memory_output_stream_get_size (base_stream), ==, 6);
+  g_assert_cmpint (g_memory_output_stream_get_data_size (base_stream), ==, 6);
+  stream_data = g_memory_output_stream_get_data (base_stream);
+  g_assert_cmpint (stream_data[0], ==, 0x01);
+  g_assert_cmpint (stream_data[1], ==, 0x23);
+  g_assert_cmpint (stream_data[2], ==, 0x45);
+  g_assert_cmpint (stream_data[3], ==, 0x67);
+
+  /* Truncate before position */
+  res = g_seekable_truncate (seekable, 2, NULL, &error);
+  g_assert_no_error (error);
+  g_assert (res);
+  g_assert_cmpint (g_memory_output_stream_get_size (base_stream), ==, 2);
+  g_assert_cmpint (g_memory_output_stream_get_data_size (base_stream), ==, 2);
+  stream_data = g_memory_output_stream_get_data (base_stream);
+  g_assert_cmpint (stream_data[0], ==, 0x01);
+  g_assert_cmpint (stream_data[1], ==, 0x23);
+
+  g_object_unref (stream);
+  g_object_unref (base_stream);
+}
+
 int
 main (int   argc,
       char *argv[])
 {
-  g_type_init ();
   g_test_init (&argc, &argv, NULL);
 
-  g_test_add_func ("/data-input-stream/read-lines-LF", test_read_lines_LF);
-  g_test_add_func ("/data-input-stream/read-lines-CR", test_read_lines_CR);
-  g_test_add_func ("/data-input-stream/read-lines-CR-LF", test_read_lines_CR_LF);
-  g_test_add_func ("/data-input-stream/read-int", test_read_int);
+  g_test_add_func ("/data-output-stream/basic", test_basic);
+  g_test_add_func ("/data-output-stream/write-lines-LF", test_read_lines_LF);
+  g_test_add_func ("/data-output-stream/write-lines-CR", test_read_lines_CR);
+  g_test_add_func ("/data-output-stream/write-lines-CR-LF", test_read_lines_CR_LF);
+  g_test_add_func ("/data-output-stream/write-int", test_read_int);
+  g_test_add_func ("/data-output-stream/seek", test_seek);
+  g_test_add_func ("/data-output-stream/truncate", test_truncate);
 
   return g_test_run();
 }