[kdbus] Fix problem with receiving async messages
[platform/upstream/glib.git] / gio / tests / converter-stream.c
index c3d2106..c867249 100644 (file)
@@ -747,6 +747,8 @@ test_roundtrip (gconstpointer data)
   GConverter *compressor, *decompressor;
   GZlibCompressorFormat fmt;
   gint lvl;
+  GFileInfo *info;
+  GFileInfo *info2;
 
   g_test_bug ("619945");
 
@@ -759,6 +761,12 @@ test_roundtrip (gconstpointer data)
 
   ostream1 = g_memory_output_stream_new (NULL, 0, g_realloc, g_free);
   compressor = G_CONVERTER (g_zlib_compressor_new (test->format, test->level));
+  info = g_file_info_new ();
+  g_file_info_set_name (info, "foo");
+  g_object_set (compressor, "file-info", info, NULL);
+  info2 = g_zlib_compressor_get_file_info (G_ZLIB_COMPRESSOR (compressor));
+  g_assert (info == info2);
+  g_object_unref (info);
   costream1 = g_converter_output_stream_new (ostream1, compressor);
   g_assert (g_converter_output_stream_get_converter (G_CONVERTER_OUTPUT_STREAM (costream1)) == compressor);
 
@@ -1003,7 +1011,7 @@ test_converter_pollable (void)
 
       if (outptr < expanded_end)
        {
-         res = g_output_stream_write (socket_out,
+          res = g_output_stream_write (socket_out,
                                       outptr,
                                       MIN (1000, (expanded_end - outptr)),
                                       NULL, &error);
@@ -1016,6 +1024,12 @@ test_converter_pollable (void)
          socket_out = NULL;
        }
 
+      /* Wait a few ticks to check for the pipe to propagate the
+       * write. Finesses the race condition in the following test,
+       * where is_readable fails because the write hasn't propagated,
+       * but the read then succeeds because it has. */
+      g_usleep (80L);
+
       is_readable = g_pollable_input_stream_is_readable (pollable_in);
       res = g_pollable_input_stream_read_nonblocking (pollable_in,
                                                      inptr, 1,
@@ -1060,6 +1074,8 @@ test_converter_pollable (void)
   cstream_out = g_converter_output_stream_new (mem_out, compressor);
   g_object_unref (mem_out);
   pollable_out = G_POLLABLE_OUTPUT_STREAM (cstream_out);
+  g_assert (g_pollable_output_stream_can_poll (pollable_out));
+  g_assert (g_pollable_output_stream_is_writable (pollable_out));
 
   for (i = 0; i < expanded_size; i++)
     {
@@ -1147,6 +1163,29 @@ test_truncation (gconstpointer data)
   g_free (data0);
 }
 
+static void
+test_converter_basics (void)
+{
+  GConverter *converter;
+  GError *error = NULL;
+  gchar *to;
+  gchar *from;
+
+  converter = (GConverter *)g_charset_converter_new ("utf-8", "latin1", &error);
+  g_assert_no_error (error);
+  g_object_get (converter,
+                "to-charset", &to,
+                "from-charset", &from,
+                NULL);
+
+  g_assert_cmpstr (to, ==, "utf-8");
+  g_assert_cmpstr (from, ==, "latin1");
+
+  g_free (to);
+  g_free (from);
+  g_object_unref (converter);
+}
+
 int
 main (int   argc,
       char *argv[])
@@ -1176,6 +1215,7 @@ main (int   argc,
 
   g_test_bug_base ("http://bugzilla.gnome.org/");
 
+  g_test_add_func ("/converter/basics", test_converter_basics);
   g_test_add_func ("/converter-input-stream/expander", test_expander);
   g_test_add_func ("/converter-input-stream/compressor", test_compressor);