| #include <gio/gio.h> | |
| static GVolumeMonitor *monitor; | |
| static void | |
| do_mount_tests (GDrive *drive, GVolume *volume, GMount *mount) | |
| { | |
| GDrive *d; | |
| GVolume *v; | |
| gchar *name; | |
| gchar *uuid; | |
| name = g_mount_get_name (mount); | |
| g_assert (name != NULL); | |
| g_free (name); | |
| v = g_mount_get_volume (mount); | |
| g_assert (v == volume); | |
| if (v != NULL) | |
| g_object_unref (v); | |
| d = g_mount_get_drive (mount); | |
| g_assert (d == drive); | |
| if (d != NULL) | |
| g_object_unref (d); | |
| uuid = g_mount_get_uuid (mount); | |
| if (uuid) | |
| { | |
| GMount *m; | |
| m = g_volume_monitor_get_mount_for_uuid (monitor, uuid); | |
| g_assert (m == mount); | |
| g_object_unref (m); | |
| g_free (uuid); | |
| } | |
| } | |
| static void | |
| do_volume_tests (GDrive *drive, GVolume *volume) | |
| { | |
| GDrive *d; | |
| gchar *name; | |
| GMount *mount; | |
| gchar *uuid; | |
| name = g_volume_get_name (volume); | |
| g_assert (name != NULL); | |
| g_free (name); | |
| d = g_volume_get_drive (volume); | |
| g_assert (d == drive); | |
| if (d != NULL) | |
| g_object_unref (d); | |
| mount = g_volume_get_mount (volume); | |
| if (mount != NULL) | |
| { | |
| do_mount_tests (drive, volume, mount); | |
| g_object_unref (mount); | |
| } | |
| uuid = g_volume_get_uuid (volume); | |
| if (uuid) | |
| { | |
| GVolume *v; | |
| v = g_volume_monitor_get_volume_for_uuid (monitor, uuid); | |
| g_assert (v == volume); | |
| g_object_unref (v); | |
| g_free (uuid); | |
| } | |
| } | |
| static void | |
| do_drive_tests (GDrive *drive) | |
| { | |
| GList *volumes, *l; | |
| gchar *name; | |
| gboolean has_volumes; | |
| g_assert (G_IS_DRIVE (drive)); | |
| name = g_drive_get_name (drive); | |
| g_assert (name != NULL); | |
| g_free (name); | |
| has_volumes = g_drive_has_volumes (drive); | |
| volumes = g_drive_get_volumes (drive); | |
| g_assert (has_volumes == (volumes != NULL)); | |
| for (l = volumes; l; l = l->next) | |
| { | |
| GVolume *volume = l->data; | |
| do_volume_tests (drive, volume); | |
| } | |
| g_list_free_full (volumes, g_object_unref); | |
| } | |
| static void | |
| test_connected_drives (void) | |
| { | |
| GList *drives; | |
| GList *l; | |
| drives = g_volume_monitor_get_connected_drives (monitor); | |
| for (l = drives; l; l = l->next) | |
| { | |
| GDrive *drive = l->data; | |
| do_drive_tests (drive); | |
| } | |
| g_list_free_full (drives, g_object_unref); | |
| } | |
| static void | |
| test_volumes (void) | |
| { | |
| GList *volumes, *l; | |
| volumes = g_volume_monitor_get_volumes (monitor); | |
| for (l = volumes; l; l = l->next) | |
| { | |
| GVolume *volume = l->data; | |
| GDrive *drive; | |
| drive = g_volume_get_drive (volume); | |
| do_volume_tests (drive, volume); | |
| if (drive != NULL) | |
| g_object_unref (drive); | |
| } | |
| g_list_free_full (volumes, g_object_unref); | |
| } | |
| static void | |
| test_mounts (void) | |
| { | |
| GList *mounts, *l; | |
| mounts = g_volume_monitor_get_mounts (monitor); | |
| for (l = mounts; l; l = l->next) | |
| { | |
| GMount *mount = l->data; | |
| GVolume *volume; | |
| GDrive *drive; | |
| drive = g_mount_get_drive (mount); | |
| volume = g_mount_get_volume (mount); | |
| do_mount_tests (drive, volume, mount); | |
| if (drive != NULL) | |
| g_object_unref (drive); | |
| if (volume != NULL) | |
| g_object_unref (volume); | |
| } | |
| g_list_free_full (mounts, g_object_unref); | |
| } | |
| int | |
| main (int argc, char *argv[]) | |
| { | |
| gboolean ret; | |
| g_setenv ("GIO_USE_VFS", "local", FALSE); | |
| g_test_init (&argc, &argv, NULL); | |
| monitor = g_volume_monitor_get (); | |
| g_test_add_func ("/volumemonitor/connected_drives", test_connected_drives); | |
| g_test_add_func ("/volumemonitor/volumes", test_volumes); | |
| g_test_add_func ("/volumemonitor/mounts", test_mounts); | |
| ret = g_test_run (); | |
| g_object_unref (monitor); | |
| return ret; | |
| } |