Branch data Line data Source code
1 : : #include <gio/gio.h> 2 : : 3 : : static GVolumeMonitor *monitor; 4 : : 5 : : static void 6 : 0 : do_mount_tests (GDrive *drive, GVolume *volume, GMount *mount) 7 : : { 8 : : GDrive *d; 9 : : GVolume *v; 10 : : gchar *name; 11 : : gchar *uuid; 12 : : 13 : 0 : name = g_mount_get_name (mount); 14 : 0 : g_assert (name != NULL); 15 : 0 : g_free (name); 16 : : 17 : 0 : v = g_mount_get_volume (mount); 18 : 0 : g_assert (v == volume); 19 [ # # ]: 0 : if (v != NULL) 20 : 0 : g_object_unref (v); 21 : : 22 : 0 : d = g_mount_get_drive (mount); 23 : 0 : g_assert (d == drive); 24 [ # # ]: 0 : if (d != NULL) 25 : 0 : g_object_unref (d); 26 : : 27 : 0 : uuid = g_mount_get_uuid (mount); 28 [ # # ]: 0 : if (uuid) 29 : : { 30 : : GMount *m; 31 : 0 : m = g_volume_monitor_get_mount_for_uuid (monitor, uuid); 32 : 0 : g_assert (m == mount); 33 : 0 : g_object_unref (m); 34 : 0 : g_free (uuid); 35 : : } 36 : 0 : } 37 : : 38 : : static void 39 : 0 : do_volume_tests (GDrive *drive, GVolume *volume) 40 : : { 41 : : GDrive *d; 42 : : gchar *name; 43 : : GMount *mount; 44 : : gchar *uuid; 45 : : 46 : 0 : name = g_volume_get_name (volume); 47 : 0 : g_assert (name != NULL); 48 : 0 : g_free (name); 49 : : 50 : 0 : d = g_volume_get_drive (volume); 51 : 0 : g_assert (d == drive); 52 [ # # ]: 0 : if (d != NULL) 53 : 0 : g_object_unref (d); 54 : : 55 : 0 : mount = g_volume_get_mount (volume); 56 [ # # ]: 0 : if (mount != NULL) 57 : : { 58 : 0 : do_mount_tests (drive, volume, mount); 59 : 0 : g_object_unref (mount); 60 : : } 61 : : 62 : 0 : uuid = g_volume_get_uuid (volume); 63 [ # # ]: 0 : if (uuid) 64 : : { 65 : : GVolume *v; 66 : 0 : v = g_volume_monitor_get_volume_for_uuid (monitor, uuid); 67 : 0 : g_assert (v == volume); 68 : 0 : g_object_unref (v); 69 : 0 : g_free (uuid); 70 : : } 71 : 0 : } 72 : : 73 : : static void 74 : 0 : do_drive_tests (GDrive *drive) 75 : : { 76 : : GList *volumes, *l; 77 : : gchar *name; 78 : : gboolean has_volumes; 79 : : 80 : 0 : g_assert (G_IS_DRIVE (drive)); 81 : 0 : name = g_drive_get_name (drive); 82 : 0 : g_assert (name != NULL); 83 : 0 : g_free (name); 84 : : 85 : 0 : has_volumes = g_drive_has_volumes (drive); 86 : 0 : volumes = g_drive_get_volumes (drive); 87 : 0 : g_assert (has_volumes == (volumes != NULL)); 88 [ # # ]: 0 : for (l = volumes; l; l = l->next) 89 : : { 90 : 0 : GVolume *volume = l->data; 91 : 0 : do_volume_tests (drive, volume); 92 : : } 93 : : 94 : 0 : g_list_free_full (volumes, g_object_unref); 95 : 0 : } 96 : : 97 : : static void 98 : 1 : test_connected_drives (void) 99 : : { 100 : : GList *drives; 101 : : GList *l; 102 : : 103 : 1 : drives = g_volume_monitor_get_connected_drives (monitor); 104 : : 105 [ - + ]: 1 : for (l = drives; l; l = l->next) 106 : : { 107 : 0 : GDrive *drive = l->data; 108 : 0 : do_drive_tests (drive); 109 : : } 110 : : 111 : 1 : g_list_free_full (drives, g_object_unref); 112 : 1 : } 113 : : 114 : : static void 115 : 1 : test_volumes (void) 116 : : { 117 : : GList *volumes, *l; 118 : : 119 : 1 : volumes = g_volume_monitor_get_volumes (monitor); 120 : : 121 [ - + ]: 1 : for (l = volumes; l; l = l->next) 122 : : { 123 : 0 : GVolume *volume = l->data; 124 : : GDrive *drive; 125 : : 126 : 0 : drive = g_volume_get_drive (volume); 127 : 0 : do_volume_tests (drive, volume); 128 [ # # ]: 0 : if (drive != NULL) 129 : 0 : g_object_unref (drive); 130 : : } 131 : : 132 : 1 : g_list_free_full (volumes, g_object_unref); 133 : 1 : } 134 : : 135 : : static void 136 : 1 : test_mounts (void) 137 : : { 138 : : GList *mounts, *l; 139 : : 140 : 1 : mounts = g_volume_monitor_get_mounts (monitor); 141 : : 142 [ - + ]: 1 : for (l = mounts; l; l = l->next) 143 : : { 144 : 0 : GMount *mount = l->data; 145 : : GVolume *volume; 146 : : GDrive *drive; 147 : : 148 : 0 : drive = g_mount_get_drive (mount); 149 : 0 : volume = g_mount_get_volume (mount); 150 : 0 : do_mount_tests (drive, volume, mount); 151 : : 152 [ # # ]: 0 : if (drive != NULL) 153 : 0 : g_object_unref (drive); 154 [ # # ]: 0 : if (volume != NULL) 155 : 0 : g_object_unref (volume); 156 : : } 157 : : 158 : 1 : g_list_free_full (mounts, g_object_unref); 159 : 1 : } 160 : : int 161 : 1 : main (int argc, char *argv[]) 162 : : { 163 : : gboolean ret; 164 : : 165 : 1 : g_setenv ("GIO_USE_VFS", "local", FALSE); 166 : : 167 : 1 : g_test_init (&argc, &argv, NULL); 168 : : 169 : 1 : monitor = g_volume_monitor_get (); 170 : : 171 : 1 : g_test_add_func ("/volumemonitor/connected_drives", test_connected_drives); 172 : 1 : g_test_add_func ("/volumemonitor/volumes", test_volumes); 173 : 1 : g_test_add_func ("/volumemonitor/mounts", test_mounts); 174 : : 175 : 1 : ret = g_test_run (); 176 : : 177 : 1 : g_object_unref (monitor); 178 : : 179 : 1 : return ret; 180 : : }