// 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, llcpp::fuchsia::posix::Errno::e##_, #e)
#define ASSERT_MATCHES_ALIASED(e) COMPARE(e, llcpp::fuchsia::posix::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);
