// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <errno.h>
#include <fuchsia/posix/llcpp/fidl.h>

// This file asserts that the errno definitions in fuchsia.posix/Errno match the ones in errno.h.

#define COMPARE(e, fidl, name)                   \
  static_assert(e == static_cast<int32_t>(fidl), \
                name " mismatch between errno.h and fuchsia.posix/Errno")

#define ASSERT_MATCHES(e) COMPARE(e, fuchsia_posix::wire::Errno::e##_, #e)
#define ASSERT_MATCHES_ALIASED(e) COMPARE(e, fuchsia_posix::wire::e##_, #e)

ASSERT_MATCHES(EPERM);
ASSERT_MATCHES(ENOENT);
ASSERT_MATCHES(ESRCH);
ASSERT_MATCHES(EINTR);
ASSERT_MATCHES(EIO);
ASSERT_MATCHES(ENXIO);
ASSERT_MATCHES(E2BIG);
ASSERT_MATCHES(ENOEXEC);
ASSERT_MATCHES(EBADF);
ASSERT_MATCHES(ECHILD);
ASSERT_MATCHES(EAGAIN);
ASSERT_MATCHES(ENOMEM);
ASSERT_MATCHES(EACCES);
ASSERT_MATCHES(EFAULT);
ASSERT_MATCHES(ENOTBLK);
ASSERT_MATCHES(EBUSY);
ASSERT_MATCHES(EEXIST);
ASSERT_MATCHES(EXDEV);
ASSERT_MATCHES(ENODEV);
ASSERT_MATCHES(ENOTDIR);
ASSERT_MATCHES(EISDIR);
ASSERT_MATCHES(EINVAL);
ASSERT_MATCHES(ENFILE);
ASSERT_MATCHES(EMFILE);
ASSERT_MATCHES(ENOTTY);
ASSERT_MATCHES(ETXTBSY);
ASSERT_MATCHES(EFBIG);
ASSERT_MATCHES(ENOSPC);
ASSERT_MATCHES(ESPIPE);
ASSERT_MATCHES(EROFS);
ASSERT_MATCHES(EMLINK);
ASSERT_MATCHES(EPIPE);
ASSERT_MATCHES(EDOM);
ASSERT_MATCHES(ERANGE);
ASSERT_MATCHES(EDEADLK);
ASSERT_MATCHES(ENAMETOOLONG);
ASSERT_MATCHES(ENOLCK);
ASSERT_MATCHES(ENOSYS);
ASSERT_MATCHES(ENOTEMPTY);
ASSERT_MATCHES(ELOOP);
ASSERT_MATCHES_ALIASED(EWOULDBLOCK);
ASSERT_MATCHES(ENOMSG);
ASSERT_MATCHES(EIDRM);
ASSERT_MATCHES(ECHRNG);
ASSERT_MATCHES(EL2NSYNC);
ASSERT_MATCHES(EL3HLT);
ASSERT_MATCHES(EL3RST);
ASSERT_MATCHES(ELNRNG);
ASSERT_MATCHES(EUNATCH);
ASSERT_MATCHES(ENOCSI);
ASSERT_MATCHES(EL2HLT);
ASSERT_MATCHES(EBADE);
ASSERT_MATCHES(EBADR);
ASSERT_MATCHES(EXFULL);
ASSERT_MATCHES(ENOANO);
ASSERT_MATCHES(EBADRQC);
ASSERT_MATCHES(EBADSLT);
ASSERT_MATCHES_ALIASED(EDEADLOCK);
ASSERT_MATCHES(EBFONT);
ASSERT_MATCHES(ENOSTR);
ASSERT_MATCHES(ENODATA);
ASSERT_MATCHES(ETIME);
ASSERT_MATCHES(ENOSR);
ASSERT_MATCHES(ENONET);
ASSERT_MATCHES(ENOPKG);
ASSERT_MATCHES(EREMOTE);
ASSERT_MATCHES(ENOLINK);
ASSERT_MATCHES(EADV);
ASSERT_MATCHES(ESRMNT);
ASSERT_MATCHES(ECOMM);
ASSERT_MATCHES(EPROTO);
ASSERT_MATCHES(EMULTIHOP);
ASSERT_MATCHES(EDOTDOT);
ASSERT_MATCHES(EBADMSG);
ASSERT_MATCHES(EOVERFLOW);
ASSERT_MATCHES(ENOTUNIQ);
ASSERT_MATCHES(EBADFD);
ASSERT_MATCHES(EREMCHG);
ASSERT_MATCHES(ELIBACC);
ASSERT_MATCHES(ELIBBAD);
ASSERT_MATCHES(ELIBSCN);
ASSERT_MATCHES(ELIBMAX);
ASSERT_MATCHES(ELIBEXEC);
ASSERT_MATCHES(EILSEQ);
ASSERT_MATCHES(ERESTART);
ASSERT_MATCHES(ESTRPIPE);
ASSERT_MATCHES(EUSERS);
ASSERT_MATCHES(ENOTSOCK);
ASSERT_MATCHES(EDESTADDRREQ);
ASSERT_MATCHES(EMSGSIZE);
ASSERT_MATCHES(EPROTOTYPE);
ASSERT_MATCHES(ENOPROTOOPT);
ASSERT_MATCHES(EPROTONOSUPPORT);
ASSERT_MATCHES(ESOCKTNOSUPPORT);
ASSERT_MATCHES(EOPNOTSUPP);
ASSERT_MATCHES_ALIASED(ENOTSUP);
ASSERT_MATCHES(EPFNOSUPPORT);
ASSERT_MATCHES(EAFNOSUPPORT);
ASSERT_MATCHES(EADDRINUSE);
ASSERT_MATCHES(EADDRNOTAVAIL);
ASSERT_MATCHES(ENETDOWN);
ASSERT_MATCHES(ENETUNREACH);
ASSERT_MATCHES(ENETRESET);
ASSERT_MATCHES(ECONNABORTED);
ASSERT_MATCHES(ECONNRESET);
ASSERT_MATCHES(ENOBUFS);
ASSERT_MATCHES(EISCONN);
ASSERT_MATCHES(ENOTCONN);
ASSERT_MATCHES(ESHUTDOWN);
ASSERT_MATCHES(ETOOMANYREFS);
ASSERT_MATCHES(ETIMEDOUT);
ASSERT_MATCHES(ECONNREFUSED);
ASSERT_MATCHES(EHOSTDOWN);
ASSERT_MATCHES(EHOSTUNREACH);
ASSERT_MATCHES(EALREADY);
ASSERT_MATCHES(EINPROGRESS);
ASSERT_MATCHES(ESTALE);
ASSERT_MATCHES(EUCLEAN);
ASSERT_MATCHES(ENOTNAM);
ASSERT_MATCHES(ENAVAIL);
ASSERT_MATCHES(EISNAM);
ASSERT_MATCHES(EREMOTEIO);
ASSERT_MATCHES(EDQUOT);
ASSERT_MATCHES(ENOMEDIUM);
ASSERT_MATCHES(EMEDIUMTYPE);
ASSERT_MATCHES(ECANCELED);
ASSERT_MATCHES(ENOKEY);
ASSERT_MATCHES(EKEYEXPIRED);
ASSERT_MATCHES(EKEYREVOKED);
ASSERT_MATCHES(EKEYREJECTED);
ASSERT_MATCHES(EOWNERDEAD);
ASSERT_MATCHES(ENOTRECOVERABLE);
ASSERT_MATCHES(ERFKILL);
ASSERT_MATCHES(EHWPOISON);
