/* Unit tests for gioerror
 * GIO - GLib Input, Output and Streaming Library
 *
 * Copyright (C) 2022 Marco Trevisan
 *
 * SPDX-License-Identifier: LGPL-2.1-or-later
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General
 * Public License along with this library; if not, see .
 *
 * Author: Marco Trevisan 
 */
#include "config.h"
#include 
#include 
#ifdef G_OS_WIN32
#include 
#endif
/* We are testing some deprecated APIs here */
#ifndef GLIB_DISABLE_DEPRECATION_WARNINGS
#define GLIB_DISABLE_DEPRECATION_WARNINGS
#endif
static void
test_error_from_errno (void)
{
  g_assert_cmpint (g_io_error_from_errno (-1), ==, G_IO_ERROR_FAILED);
#ifdef EEXIST
  g_assert_cmpint (g_io_error_from_errno (EEXIST), ==,
                   G_IO_ERROR_EXISTS);
#endif
#ifdef EISDIR
  g_assert_cmpint (g_io_error_from_errno (EISDIR), ==,
                   G_IO_ERROR_IS_DIRECTORY);
#endif
#ifdef EACCES
  g_assert_cmpint (g_io_error_from_errno (EACCES), ==,
                   G_IO_ERROR_PERMISSION_DENIED);
#endif
#ifdef ENAMETOOLONG
  g_assert_cmpint (g_io_error_from_errno (ENAMETOOLONG), ==,
                   G_IO_ERROR_FILENAME_TOO_LONG);
#endif
#ifdef ENOENT
  g_assert_cmpint (g_io_error_from_errno (ENOENT), ==,
                   G_IO_ERROR_NOT_FOUND);
#endif
#ifdef ENOTDIR
  g_assert_cmpint (g_io_error_from_errno (ENOTDIR), ==,
                   G_IO_ERROR_NOT_DIRECTORY);
#endif
#ifdef ENXIO
  g_assert_cmpint (g_io_error_from_errno (ENXIO), ==,
                   G_IO_ERROR_NOT_REGULAR_FILE);
#endif
#ifdef EROFS
  g_assert_cmpint (g_io_error_from_errno (EROFS), ==,
                   G_IO_ERROR_READ_ONLY);
#endif
#ifdef ELOOP
  g_assert_cmpint (g_io_error_from_errno (ELOOP), ==,
                   G_IO_ERROR_TOO_MANY_LINKS);
#endif
#ifdef EMLINK
  g_assert_cmpint (g_io_error_from_errno (EMLINK), ==,
                   G_IO_ERROR_TOO_MANY_LINKS);
#endif
#ifdef ENOSPC
  g_assert_cmpint (g_io_error_from_errno (ENOSPC), ==,
                   G_IO_ERROR_NO_SPACE);
#endif
#ifdef ENOMEM
  g_assert_cmpint (g_io_error_from_errno (ENOMEM), ==,
                   G_IO_ERROR_NO_SPACE);
#endif
#ifdef EINVAL
  g_assert_cmpint (g_io_error_from_errno (EINVAL), ==,
                   G_IO_ERROR_INVALID_ARGUMENT);
#endif
#ifdef EPERM
  g_assert_cmpint (g_io_error_from_errno (EPERM), ==,
                   G_IO_ERROR_PERMISSION_DENIED);
#endif
#ifdef ECANCELED
  g_assert_cmpint (g_io_error_from_errno (ECANCELED), ==,
                   G_IO_ERROR_CANCELLED);
#endif
#ifdef ENOTEMPTY
  g_assert_cmpint (g_io_error_from_errno (ENOTEMPTY), ==,
                   G_IO_ERROR_NOT_EMPTY);
#endif
#ifdef ENOTSUP
  g_assert_cmpint (g_io_error_from_errno (ENOTSUP), ==,
                   G_IO_ERROR_NOT_SUPPORTED);
#endif
#ifdef EOPNOTSUPP
  g_assert_cmpint (g_io_error_from_errno (EOPNOTSUPP), ==,
                   G_IO_ERROR_NOT_SUPPORTED);
#endif
#ifdef EPROTONOSUPPORT
  g_assert_cmpint (g_io_error_from_errno (EPROTONOSUPPORT), ==,
                   G_IO_ERROR_NOT_SUPPORTED);
#endif
#ifdef ESOCKTNOSUPPORT
  g_assert_cmpint (g_io_error_from_errno (ESOCKTNOSUPPORT), ==,
                   G_IO_ERROR_NOT_SUPPORTED);
#endif
#ifdef EPFNOSUPPORT
  g_assert_cmpint (g_io_error_from_errno (EPFNOSUPPORT), ==,
                   G_IO_ERROR_NOT_SUPPORTED);
#endif
#ifdef EAFNOSUPPORT
  g_assert_cmpint (g_io_error_from_errno (EAFNOSUPPORT), ==,
                   G_IO_ERROR_NOT_SUPPORTED);
#endif
#ifdef ETIMEDOUT
  g_assert_cmpint (g_io_error_from_errno (ETIMEDOUT), ==,
                   G_IO_ERROR_TIMED_OUT);
#endif
#ifdef EBUSY
  g_assert_cmpint (g_io_error_from_errno (EBUSY), ==,
                   G_IO_ERROR_BUSY);
#endif
#ifdef EWOULDBLOCK
  g_assert_cmpint (g_io_error_from_errno (EWOULDBLOCK), ==,
                   G_IO_ERROR_WOULD_BLOCK);
#endif
#ifdef EAGAIN
  g_assert_cmpint (g_io_error_from_errno (EAGAIN), ==,
                   G_IO_ERROR_WOULD_BLOCK);
#endif
#ifdef EMFILE
  g_assert_cmpint (g_io_error_from_errno (EMFILE), ==,
                   G_IO_ERROR_TOO_MANY_OPEN_FILES);
#endif
#ifdef EADDRINUSE
  g_assert_cmpint (g_io_error_from_errno (EADDRINUSE), ==,
                   G_IO_ERROR_ADDRESS_IN_USE);
#endif
#ifdef EHOSTUNREACH
  g_assert_cmpint (g_io_error_from_errno (EHOSTUNREACH), ==,
                   G_IO_ERROR_HOST_UNREACHABLE);
#endif
#ifdef ENETUNREACH
  g_assert_cmpint (g_io_error_from_errno (ENETUNREACH), ==,
                   G_IO_ERROR_NETWORK_UNREACHABLE);
#endif
#ifdef ECONNREFUSED
  g_assert_cmpint (g_io_error_from_errno (ECONNREFUSED), ==,
                   G_IO_ERROR_CONNECTION_REFUSED);
#endif
#ifdef EPIPE
  g_assert_cmpint (g_io_error_from_errno (EPIPE), ==,
                   G_IO_ERROR_BROKEN_PIPE);
#endif
#ifdef ECONNRESET
  g_assert_cmpint (g_io_error_from_errno (ECONNRESET), ==,
                   G_IO_ERROR_CONNECTION_CLOSED);
#endif
#ifdef ENOTCONN
  g_assert_cmpint (g_io_error_from_errno (ENOTCONN), ==,
                   G_IO_ERROR_NOT_CONNECTED);
#endif
#ifdef EMSGSIZE
  g_assert_cmpint (g_io_error_from_errno (EMSGSIZE), ==,
                   G_IO_ERROR_MESSAGE_TOO_LARGE);
#endif
#ifdef ENOTSOCK
  g_assert_cmpint (g_io_error_from_errno (ENOTSOCK), ==,
                   G_IO_ERROR_INVALID_ARGUMENT);
#endif
#ifdef ESRCH
  g_assert_cmpint (g_io_error_from_errno (ESRCH), ==,
                   G_IO_ERROR_FAILED);
#endif
#ifdef EINTR
  g_assert_cmpint (g_io_error_from_errno (EINTR), ==,
                   G_IO_ERROR_FAILED);
#endif
#ifdef EIO
  g_assert_cmpint (g_io_error_from_errno (EIO), ==,
                   G_IO_ERROR_FAILED);
#endif
#ifdef E2BIG
  g_assert_cmpint (g_io_error_from_errno (E2BIG), ==,
                   G_IO_ERROR_FAILED);
#endif
#ifdef ENOEXEC
  g_assert_cmpint (g_io_error_from_errno (ENOEXEC), ==,
                   G_IO_ERROR_FAILED);
#endif
#ifdef EBADF
  g_assert_cmpint (g_io_error_from_errno (EBADF), ==,
                   G_IO_ERROR_FAILED);
#endif
#ifdef ECHILD
  g_assert_cmpint (g_io_error_from_errno (ECHILD), ==,
                   G_IO_ERROR_FAILED);
#endif
#ifdef EFAULT
  g_assert_cmpint (g_io_error_from_errno (EFAULT), ==,
                   G_IO_ERROR_FAILED);
#endif
#ifdef ENOTBLK
  g_assert_cmpint (g_io_error_from_errno (ENOTBLK), ==,
                   G_IO_ERROR_FAILED);
#endif
#ifdef EXDEV
  g_assert_cmpint (g_io_error_from_errno (EXDEV), ==,
                   G_IO_ERROR_FAILED);
#endif
#ifdef ENODEV
  g_assert_cmpint (g_io_error_from_errno (ENODEV), ==,
                   G_IO_ERROR_NO_SUCH_DEVICE);
#endif
#ifdef ENFILE
  g_assert_cmpint (g_io_error_from_errno (ENFILE), ==,
                   G_IO_ERROR_TOO_MANY_OPEN_FILES);
#endif
#ifdef ENOTTY
  g_assert_cmpint (g_io_error_from_errno (ENOTTY), ==,
                   G_IO_ERROR_FAILED);
#endif
#ifdef ETXTBSY
  g_assert_cmpint (g_io_error_from_errno (ETXTBSY), ==,
                   G_IO_ERROR_BUSY);
#endif
#ifdef EFBIG
  g_assert_cmpint (g_io_error_from_errno (EFBIG), ==,
                   G_IO_ERROR_FAILED);
#endif
#ifdef ESPIPE
  g_assert_cmpint (g_io_error_from_errno (ESPIPE), ==,
                   G_IO_ERROR_FAILED);
#endif
#ifdef EDOM
  g_assert_cmpint (g_io_error_from_errno (EDOM), ==,
                   G_IO_ERROR_FAILED);
#endif
#ifdef ERANGE
  g_assert_cmpint (g_io_error_from_errno (ERANGE), ==,
                   G_IO_ERROR_FAILED);
#endif
#ifdef EDEADLK
  g_assert_cmpuint (g_io_error_from_errno (EDEADLK), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENOLCK
  g_assert_cmpuint (g_io_error_from_errno (ENOLCK), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENOSYS
  g_assert_cmpuint (g_io_error_from_errno (ENOSYS), ==,
                    G_IO_ERROR_NOT_SUPPORTED);
#endif
#ifdef ENOMSG
  g_assert_cmpuint (g_io_error_from_errno (ENOMSG), ==,
                    G_IO_ERROR_INVALID_DATA);
#endif
#ifdef EIDRM
  g_assert_cmpuint (g_io_error_from_errno (EIDRM), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ECHRNG
  g_assert_cmpuint (g_io_error_from_errno (ECHRNG), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EL2NSYNC
  g_assert_cmpuint (g_io_error_from_errno (EL2NSYNC), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EL3HLT
  g_assert_cmpuint (g_io_error_from_errno (EL3HLT), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EL3RST
  g_assert_cmpuint (g_io_error_from_errno (EL3RST), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ELNRNG
  g_assert_cmpuint (g_io_error_from_errno (ELNRNG), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EUNATCH
  g_assert_cmpuint (g_io_error_from_errno (EUNATCH), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENOCSI
  g_assert_cmpuint (g_io_error_from_errno (ENOCSI), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EL2HLT
  g_assert_cmpuint (g_io_error_from_errno (EL2HLT), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EBADE
  g_assert_cmpuint (g_io_error_from_errno (EBADE), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EBADR
  g_assert_cmpuint (g_io_error_from_errno (EBADR), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EXFULL
  g_assert_cmpuint (g_io_error_from_errno (EXFULL), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENOANO
  g_assert_cmpuint (g_io_error_from_errno (ENOANO), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EBADRQC
  g_assert_cmpuint (g_io_error_from_errno (EBADRQC), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EBADSLT
  g_assert_cmpuint (g_io_error_from_errno (EBADSLT), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EDEADLOCK
  g_assert_cmpuint (g_io_error_from_errno (EDEADLOCK), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EBFONT
  g_assert_cmpuint (g_io_error_from_errno (EBFONT), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENOSTR
  g_assert_cmpuint (g_io_error_from_errno (ENOSTR), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENODATA
  g_assert_cmpuint (g_io_error_from_errno (ENODATA), ==,
                    G_IO_ERROR_INVALID_DATA);
#endif
#ifdef ETIME
  g_assert_cmpuint (g_io_error_from_errno (ETIME), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENOSR
  g_assert_cmpuint (g_io_error_from_errno (ENOSR), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENONET
  g_assert_cmpuint (g_io_error_from_errno (ENONET), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENOPKG
  g_assert_cmpuint (g_io_error_from_errno (ENOPKG), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EREMOTE
  g_assert_cmpuint (g_io_error_from_errno (EREMOTE), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENOLINK
  g_assert_cmpuint (g_io_error_from_errno (ENOLINK), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EADV
  g_assert_cmpuint (g_io_error_from_errno (EADV), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ESRMNT
  g_assert_cmpuint (g_io_error_from_errno (ESRMNT), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ECOMM
  g_assert_cmpuint (g_io_error_from_errno (ECOMM), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EPROTO
  g_assert_cmpuint (g_io_error_from_errno (EPROTO), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EMULTIHOP
  g_assert_cmpuint (g_io_error_from_errno (EMULTIHOP), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EDOTDOT
  g_assert_cmpuint (g_io_error_from_errno (EDOTDOT), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EBADMSG
  g_assert_cmpuint (g_io_error_from_errno (EBADMSG), ==,
                    G_IO_ERROR_INVALID_DATA);
#endif
#ifdef EOVERFLOW
  g_assert_cmpuint (g_io_error_from_errno (EOVERFLOW), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENOTUNIQ
  g_assert_cmpuint (g_io_error_from_errno (ENOTUNIQ), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EBADFD
  g_assert_cmpuint (g_io_error_from_errno (EBADFD), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EREMCHG
  g_assert_cmpuint (g_io_error_from_errno (EREMCHG), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ELIBACC
  g_assert_cmpuint (g_io_error_from_errno (ELIBACC), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ELIBBAD
  g_assert_cmpuint (g_io_error_from_errno (ELIBBAD), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ELIBSCN
  g_assert_cmpuint (g_io_error_from_errno (ELIBSCN), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ELIBMAX
  g_assert_cmpuint (g_io_error_from_errno (ELIBMAX), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ELIBEXEC
  g_assert_cmpuint (g_io_error_from_errno (ELIBEXEC), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EILSEQ
  g_assert_cmpuint (g_io_error_from_errno (EILSEQ), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ERESTART
  g_assert_cmpuint (g_io_error_from_errno (ERESTART), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ESTRPIPE
  g_assert_cmpuint (g_io_error_from_errno (ESTRPIPE), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EUSERS
  g_assert_cmpuint (g_io_error_from_errno (EUSERS), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EDESTADDRREQ
  g_assert_cmpuint (g_io_error_from_errno (EDESTADDRREQ), ==,
                    G_IO_ERROR_DESTINATION_UNSET);
#endif
#ifdef EPROTOTYPE
  g_assert_cmpuint (g_io_error_from_errno (EPROTOTYPE), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENOPROTOOPT
  g_assert_cmpuint (g_io_error_from_errno (ENOPROTOOPT), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EADDRNOTAVAIL
  g_assert_cmpuint (g_io_error_from_errno (EADDRNOTAVAIL), ==,
                    G_IO_ERROR_CONNECTION_REFUSED);
#endif
#ifdef ENETDOWN
  g_assert_cmpuint (g_io_error_from_errno (ENETDOWN), ==,
                    G_IO_ERROR_NETWORK_UNREACHABLE);
#endif
#ifdef ECONNABORTED
  g_assert_cmpuint (g_io_error_from_errno (ECONNABORTED), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENOBUFS
  g_assert_cmpuint (g_io_error_from_errno (ENOBUFS), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EISCONN
  g_assert_cmpuint (g_io_error_from_errno (EISCONN), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ESHUTDOWN
  g_assert_cmpuint (g_io_error_from_errno (ESHUTDOWN), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ETOOMANYREFS
  g_assert_cmpuint (g_io_error_from_errno (ETOOMANYREFS), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EHOSTDOWN
  g_assert_cmpuint (g_io_error_from_errno (EHOSTDOWN), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EALREADY
  g_assert_cmpuint (g_io_error_from_errno (EALREADY), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EINPROGRESS
  g_assert_cmpuint (g_io_error_from_errno (EINPROGRESS), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ESTALE
  g_assert_cmpuint (g_io_error_from_errno (ESTALE), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EUCLEAN
  g_assert_cmpuint (g_io_error_from_errno (EUCLEAN), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENOTNAM
  g_assert_cmpuint (g_io_error_from_errno (ENOTNAM), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENAVAIL
  g_assert_cmpuint (g_io_error_from_errno (ENAVAIL), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EISNAM
  g_assert_cmpuint (g_io_error_from_errno (EISNAM), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EREMOTEIO
  g_assert_cmpuint (g_io_error_from_errno (EREMOTEIO), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EDQUOT
  g_assert_cmpuint (g_io_error_from_errno (EDQUOT), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENOMEDIUM
  g_assert_cmpuint (g_io_error_from_errno (ENOMEDIUM), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EMEDIUMTYPE
  g_assert_cmpuint (g_io_error_from_errno (EMEDIUMTYPE), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENOKEY
  g_assert_cmpuint (g_io_error_from_errno (ENOKEY), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EKEYEXPIRED
  g_assert_cmpuint (g_io_error_from_errno (EKEYEXPIRED), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EKEYREVOKED
  g_assert_cmpuint (g_io_error_from_errno (EKEYREVOKED), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EKEYREJECTED
  g_assert_cmpuint (g_io_error_from_errno (EKEYREJECTED), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EOWNERDEAD
  g_assert_cmpuint (g_io_error_from_errno (EOWNERDEAD), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ENOTRECOVERABLE
  g_assert_cmpuint (g_io_error_from_errno (ENOTRECOVERABLE), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef ERFKILL
  g_assert_cmpuint (g_io_error_from_errno (ERFKILL), ==,
                    G_IO_ERROR_FAILED);
#endif
#ifdef EHWPOISON
  g_assert_cmpuint (g_io_error_from_errno (EHWPOISON), ==,
                    G_IO_ERROR_FAILED);
#endif
}
static void
test_error_from_file_error (void)
{
  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
                         "*should not be reached*");
  g_assert_cmpuint (g_io_error_from_file_error (-1), ==,
                    G_IO_ERROR_FAILED);
  g_test_assert_expected_messages ();
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_EXIST), ==,
                    G_IO_ERROR_EXISTS);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_ISDIR), ==,
                    G_IO_ERROR_IS_DIRECTORY);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_ACCES), ==,
                    G_IO_ERROR_PERMISSION_DENIED);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_NAMETOOLONG), ==,
                    G_IO_ERROR_FILENAME_TOO_LONG);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_NOENT), ==,
                    G_IO_ERROR_NOT_FOUND);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_NOTDIR), ==,
                    G_IO_ERROR_NOT_DIRECTORY);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_NXIO), ==,
                    G_IO_ERROR_NOT_REGULAR_FILE);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_NODEV), ==,
                    G_IO_ERROR_NO_SUCH_DEVICE);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_ROFS), ==,
                    G_IO_ERROR_READ_ONLY);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_TXTBSY), ==,
                    G_IO_ERROR_BUSY);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_LOOP), ==,
                    G_IO_ERROR_TOO_MANY_LINKS);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_NOSPC), ==,
                    G_IO_ERROR_NO_SPACE);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_NOMEM), ==,
                    G_IO_ERROR_NO_SPACE);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_MFILE), ==,
                    G_IO_ERROR_TOO_MANY_OPEN_FILES);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_NFILE), ==,
                    G_IO_ERROR_TOO_MANY_OPEN_FILES);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_INVAL), ==,
                    G_IO_ERROR_INVALID_ARGUMENT);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_PIPE), ==,
                    G_IO_ERROR_BROKEN_PIPE);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_AGAIN), ==,
                    G_IO_ERROR_WOULD_BLOCK);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_PERM), ==,
                    G_IO_ERROR_PERMISSION_DENIED);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_NOSYS), ==,
                    G_IO_ERROR_NOT_SUPPORTED);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_BADF), ==,
                    G_IO_ERROR_FAILED);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_FAILED), ==,
                    G_IO_ERROR_FAILED);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_FAULT), ==,
                    G_IO_ERROR_FAILED);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_INTR), ==,
                    G_IO_ERROR_FAILED);
  g_assert_cmpuint (g_io_error_from_file_error (G_FILE_ERROR_IO), ==,
                    G_IO_ERROR_FAILED);
}
static void
test_error_from_win32_error (void)
{
#ifdef G_OS_WIN32
  g_assert_cmpint (g_io_error_from_win32_error (-1), ==, G_IO_ERROR_FAILED);
  g_assert_cmpint (g_io_error_from_win32_error (WSAEADDRINUSE), ==,
                   G_IO_ERROR_ADDRESS_IN_USE);
  g_assert_cmpint (g_io_error_from_win32_error (WSAEWOULDBLOCK), ==,
                   G_IO_ERROR_WOULD_BLOCK);
  g_assert_cmpint (g_io_error_from_win32_error (WSAEACCES), ==,
                   G_IO_ERROR_PERMISSION_DENIED);
  g_assert_cmpint (g_io_error_from_win32_error (WSA_INVALID_HANDLE), ==,
                   G_IO_ERROR_INVALID_ARGUMENT);
  g_assert_cmpint (g_io_error_from_win32_error (WSA_INVALID_PARAMETER), ==,
                   G_IO_ERROR_INVALID_ARGUMENT);
  g_assert_cmpint (g_io_error_from_win32_error (WSAEINVAL), ==,
                   G_IO_ERROR_INVALID_ARGUMENT);
  g_assert_cmpint (g_io_error_from_win32_error (WSAEBADF), ==,
                   G_IO_ERROR_INVALID_ARGUMENT);
  g_assert_cmpint (g_io_error_from_win32_error (WSAENOTSOCK), ==,
                   G_IO_ERROR_INVALID_ARGUMENT);
  g_assert_cmpint (g_io_error_from_win32_error (WSAEPROTONOSUPPORT), ==,
                   G_IO_ERROR_NOT_SUPPORTED);
  g_assert_cmpint (g_io_error_from_win32_error (WSAECANCELLED), ==,
                   G_IO_ERROR_CANCELLED);
  g_assert_cmpint (g_io_error_from_win32_error (WSAESOCKTNOSUPPORT), ==,
                   G_IO_ERROR_NOT_SUPPORTED);
  g_assert_cmpint (g_io_error_from_win32_error (WSAEOPNOTSUPP), ==,
                   G_IO_ERROR_NOT_SUPPORTED);
  g_assert_cmpint (g_io_error_from_win32_error (WSAEPFNOSUPPORT), ==,
                   G_IO_ERROR_NOT_SUPPORTED);
  g_assert_cmpint (g_io_error_from_win32_error (WSAEAFNOSUPPORT), ==,
                   G_IO_ERROR_NOT_SUPPORTED);
  g_assert_cmpint (g_io_error_from_win32_error (WSAECONNRESET), ==,
                   G_IO_ERROR_CONNECTION_CLOSED);
  g_assert_cmpint (g_io_error_from_win32_error (WSAENETRESET), ==,
                   G_IO_ERROR_CONNECTION_CLOSED);
  g_assert_cmpint (g_io_error_from_win32_error (WSAESHUTDOWN), ==,
                   G_IO_ERROR_CONNECTION_CLOSED);
  g_assert_cmpint (g_io_error_from_win32_error (WSAEHOSTUNREACH), ==,
                   G_IO_ERROR_HOST_UNREACHABLE);
  g_assert_cmpint (g_io_error_from_win32_error (WSAENETUNREACH), ==,
                   G_IO_ERROR_NETWORK_UNREACHABLE);
  g_assert_cmpint (g_io_error_from_win32_error (WSAECONNREFUSED), ==,
                   G_IO_ERROR_CONNECTION_REFUSED);
  g_assert_cmpint (g_io_error_from_win32_error (WSAETIMEDOUT), ==,
                   G_IO_ERROR_TIMED_OUT);
  g_assert_cmpint (g_io_error_from_win32_error (WSAENOTCONN), ==,
                   G_IO_ERROR_NOT_CONNECTED);
  g_assert_cmpint (g_io_error_from_win32_error (ERROR_PIPE_LISTENING), ==,
                   G_IO_ERROR_NOT_CONNECTED);
  g_assert_cmpint (g_io_error_from_win32_error (WSAEMSGSIZE), ==,
                   G_IO_ERROR_MESSAGE_TOO_LARGE);
#else
  g_test_skip ("Windows error codes can only be checked on Windows");
#endif /* G_OS_WIN32 */
}
int
main (int   argc,
      char *argv[])
{
  g_setenv ("LC_ALL", "C", TRUE);
  g_test_init (&argc, &argv, G_TEST_OPTION_ISOLATE_DIRS, NULL);
  g_test_add_func ("/error/from-errno", test_error_from_errno);
  g_test_add_func ("/error/from-file-error", test_error_from_file_error);
  g_test_add_func ("/error/from-win32-error", test_error_from_win32_error);
  return g_test_run ();
}