Misc test additions
authorMatthias Clasen <mclasen@redhat.com>
Mon, 5 Jul 2010 07:09:36 +0000 (03:09 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 5 Jul 2010 07:09:36 +0000 (03:09 -0400)
gio/tests/Makefile.am
gio/tests/appinfo.c
gio/tests/contenttype.c
gio/tests/file.c [new file with mode: 0644]
gio/tests/gsettings.c
gio/tests/live-g-file.c
gio/tests/org.gtk.test.gschema.xml

index faa7640..988fc45 100644 (file)
@@ -60,6 +60,7 @@ TEST_PROGS +=                 \
        appinfo                 \
        icons                   \
        contenttype             \
+       file                    \
        $(NULL)
 endif
 
@@ -280,6 +281,9 @@ icons_LDADD   = $(progs_ldadd)
 contenttype_SOURCES = contenttype.c
 contenttype_LDADD   = $(progs_ldadd)
 
+file_SOURCES = file.c
+file_LDADD   = $(progs_ldadd)
+
 schema_tests = \
        schema-tests/array-default-not-in-choices.gschema.xml           \
        schema-tests/bad-choice.gschema.xml                             \
@@ -361,6 +365,9 @@ EXTRA_DIST += \
        de.po                           \
        $(schema_tests)                 \
        appinfo-test.desktop            \
+       appinfo-test2.desktop           \
+       appinfo-test-gnome.desktop      \
+       appinfo-test-notgnome.desktop   \
        gdbus-testserver.py
  
 MISC_STUFF = test.mo
index be63a92..6d8910b 100644 (file)
@@ -8,11 +8,17 @@ static void
 test_launch (void)
 {
   GAppInfo *appinfo;
+  GError *error;
 
   appinfo = (GAppInfo*)g_desktop_app_info_new_from_filename (SRCDIR "/appinfo-test.desktop");
   g_assert (appinfo != NULL);
 
-  g_assert (g_app_info_launch (appinfo, NULL, NULL, NULL));
+  error = NULL;
+  g_assert (g_app_info_launch (appinfo, NULL, NULL, &error));
+  g_assert_no_error (error);
+
+  g_assert (g_app_info_launch_uris (appinfo, NULL, NULL, &error));
+  g_assert_no_error (error);
 }
 
 static void
@@ -65,6 +71,7 @@ static void
 test_basic (void)
 {
   GAppInfo *appinfo;
+  GAppInfo *appinfo2;
   GIcon *icon, *icon2;
 
   appinfo = (GAppInfo*)g_desktop_app_info_new_from_filename (SRCDIR "/appinfo-test.desktop");
@@ -79,7 +86,12 @@ test_basic (void)
   g_assert (g_icon_equal (icon, icon2));
   g_object_unref (icon2);
 
+  appinfo2 = g_app_info_dup (appinfo);
+  g_assert (g_app_info_get_id (appinfo) == g_app_info_get_id (appinfo2));
+  g_assert_cmpstr (g_app_info_get_commandline (appinfo), ==, g_app_info_get_commandline (appinfo2));
+
   g_object_unref (appinfo);
+  g_object_unref (appinfo2);
 }
 
 static void
@@ -160,19 +172,30 @@ test_launch_context (void)
   g_object_unref (context);
 }
 
+static void
+test_tryexec (void)
+{
+  GAppInfo *appinfo;
+
+  appinfo = (GAppInfo*)g_desktop_app_info_new_from_filename (SRCDIR "/appinfo-test2.desktop");
+
+  g_assert (appinfo == NULL);
+}
+
 int
 main (int argc, char *argv[])
 {
   g_type_init ();
   g_test_init (&argc, &argv, NULL);
 
-
   g_test_add_func ("/appinfo/basic", test_basic);
   g_test_add_func ("/appinfo/text", test_text);
   g_test_add_func ("/appinfo/launch", test_launch);
   g_test_add_func ("/appinfo/show-in", test_show_in);
   g_test_add_func ("/appinfo/commandline", test_commandline);
   g_test_add_func ("/appinfo/launch-context", test_launch_context);
+  g_test_add_func ("/appinfo/tryexec", test_tryexec);
+
   return g_test_run ();
 }
 
index 1ae6b18..db31ba1 100644 (file)
@@ -94,6 +94,10 @@ test_executable (void)
   type = g_content_type_from_mime_type ("text/plain");
   g_assert (g_content_type_can_be_executable (type));
   g_free (type);
+
+  type = g_content_type_from_mime_type ("image/png");
+  g_assert (!g_content_type_can_be_executable (type));
+  g_free (type);
 }
 
 static void
diff --git a/gio/tests/file.c b/gio/tests/file.c
new file mode 100644 (file)
index 0000000..8a35f8a
--- /dev/null
@@ -0,0 +1,64 @@
+#include <gio/gio.h>
+
+static void
+test_basic (void)
+{
+  GFile *file;
+  gchar *s;
+
+  file = g_file_new_for_path ("./some/directory/testfile");
+
+  s = g_file_get_basename (file);
+  g_assert_cmpstr (s, ==, "testfile");
+  g_free (s);
+
+  s = g_file_get_uri (file);
+  g_assert (g_str_has_prefix (s, "file://"));
+  g_assert (g_str_has_suffix (s, "/some/directory/testfile"));
+  g_free (s);
+
+  g_assert (g_file_has_uri_scheme (file, "file"));
+  s = g_file_get_uri_scheme (file);
+  g_assert_cmpstr (s, ==, "file");
+  g_free (s);
+
+  g_object_unref (file);
+}
+
+static void
+test_parent (void)
+{
+  GFile *file;
+  GFile *file2;
+  GFile *parent;
+  GFile *root;
+
+  file = g_file_new_for_path ("./some/directory/testfile");
+  file2 = g_file_new_for_path ("./some/directory");
+  root = g_file_new_for_path ("/");
+
+  g_assert (g_file_has_parent (file, file2));
+
+  parent = g_file_get_parent (file);
+  g_assert (g_file_equal (parent, file2));
+  g_object_unref (parent);
+
+  g_assert (g_file_get_parent (root) == NULL);
+
+  g_object_unref (file);
+  g_object_unref (file2);
+  g_object_unref (root);
+}
+
+int
+main (int argc, char *argv[])
+{
+  g_type_init ();
+
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/file/basic", test_basic);
+  g_test_add_func ("/file/parent", test_parent);
+
+  return g_test_run ();
+}
index 0e43506..5e611a9 100644 (file)
@@ -810,6 +810,7 @@ test_simple_binding (void)
   guint64 u64;
   gdouble d;
   gchar *s;
+  GVariant *value;
 
   settings = g_settings_new ("org.gtk.test.binding");
   obj = test_object_new ();
@@ -864,6 +865,13 @@ test_simple_binding (void)
   g_assert_cmpstr (s, ==, "bla bla");
   g_free (s);
 
+  g_settings_bind (settings, "chararray", obj, "string", G_SETTINGS_BIND_DEFAULT);
+
+  g_object_set (obj, "string", "non-unicode:\315", NULL);
+  value = g_settings_get_value (settings, "chararray");
+  g_assert_cmpstr (g_variant_get_byte_array (value, NULL), ==, "non-unicode:\315");
+  g_variant_unref (value);
+
   g_settings_bind (settings, "double", obj, "double", G_SETTINGS_BIND_DEFAULT);
 
   g_object_set (obj, "double", G_MAXFLOAT, NULL);
@@ -879,6 +887,51 @@ test_simple_binding (void)
   g_settings_set_double (settings, "double", -G_MINDOUBLE);
   g_object_get (obj, "double", &d, NULL);
   g_assert_cmpfloat (d, ==, -G_MINDOUBLE);
+
+  g_object_unref (obj);
+  g_object_unref (settings);
+}
+
+static void
+test_unbind (void)
+{
+  TestObject *obj;
+  GSettings *settings;
+
+  settings = g_settings_new ("org.gtk.test.binding");
+  obj = test_object_new ();
+
+  g_settings_bind (settings, "int", obj, "int", G_SETTINGS_BIND_DEFAULT);
+
+  g_object_set (obj, "int", 12345, NULL);
+  g_assert_cmpint (g_settings_get_int (settings, "int"), ==, 12345);
+
+  g_settings_unbind (obj, "int");
+
+  g_object_set (obj, "int", 54321, NULL);
+  g_assert_cmpint (g_settings_get_int (settings, "int"), ==, 12345);
+
+  g_object_unref (obj);
+  g_object_unref (settings);
+}
+
+static void
+test_bind_writable (void)
+{
+  TestObject *obj;
+  GSettings *settings;
+  gboolean b;
+
+  settings = g_settings_new ("org.gtk.test.binding");
+  obj = test_object_new ();
+
+  g_object_set (obj, "bool", FALSE, NULL);
+
+  g_settings_bind_writable (settings, "int", obj, "bool", G_SETTINGS_BIND_DEFAULT);
+
+  g_object_get (obj, "bool", &b, NULL);
+  g_assert (b);
+
   g_object_unref (obj);
   g_object_unref (settings);
 }
@@ -1467,10 +1520,13 @@ main (int argc, char *argv[])
   g_test_add_func ("/gsettings/delay-apply", test_delay_apply);
   g_test_add_func ("/gsettings/delay-revert", test_delay_revert);
   g_test_add_func ("/gsettings/atomic", test_atomic);
+
   g_test_add_func ("/gsettings/simple-binding", test_simple_binding);
   g_test_add_func ("/gsettings/directional-binding", test_directional_binding);
   g_test_add_func ("/gsettings/custom-binding", test_custom_binding);
   g_test_add_func ("/gsettings/no-change-binding", test_no_change_binding);
+  g_test_add_func ("/gsettings/unbinding", test_unbind);
+  g_test_add_func ("/gsettings/writable-binding", test_bind_writable);
 
   if (!backend_set)
     {
index 1ca70ce..75ff5de 100644 (file)
@@ -506,6 +506,8 @@ traverse_recurse_dirs (GFile * parent, GFile * root)
   g_assert (enumerator != NULL);
   g_assert_no_error (error);
 
+  g_assert (g_file_enumerator_get_container (enumerator) == parent);
+
   error = NULL;
   info = g_file_enumerator_next_file (enumerator, NULL, &error);
   while ((info) && (!error))
@@ -545,6 +547,9 @@ traverse_recurse_dirs (GFile * parent, GFile * root)
   res = g_file_enumerator_close (enumerator, NULL, &error);
   g_assert_cmpint (res, ==, TRUE);
   g_assert_no_error (error);
+  g_assert (g_file_enumerator_is_closed (enumerator));
+
+  g_object_unref (enumerator);
 }
 
 static void
@@ -642,6 +647,8 @@ test_enumerate (gconstpointer test_data)
              res = g_file_enumerator_close (enumerator, NULL, &error);
              g_assert_cmpint (res, ==, TRUE);
              g_assert_no_error (error);
+
+              g_object_unref (enumerator);
            }
          g_object_unref (child);
        }
@@ -1083,6 +1090,8 @@ cleanup_dir_recurse (GFile *parent, GFile *root)
   res = g_file_enumerator_close (enumerator, NULL, &error);
   g_assert_cmpint (res, ==, TRUE);
   g_assert_no_error (error);
+
+  g_object_unref (enumerator);
 }
 
 static void
index c7d3d97..b2dff0b 100644 (file)
@@ -90,6 +90,9 @@
     <key name="string" type="s">
       <default>""</default>
     </key>
+    <key name="chararray" type="ay">
+      <default>[48, 49]</default>
+    </key>
   </schema>
 
   <schema id='org.gtk.test.enums' path='/tests/enums/'>