Blame gio/tests/volumemonitor.c

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