add_libc_testsuite(libc_unistd_unittests)

add_subdirectory(testdata)

add_libc_unittest(
  access_test
  SUITE
    libc_unistd_unittests
  SRCS
    access_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.access
    libc.src.unistd.close
    libc.src.unistd.unlink
)

add_libc_unittest(
  chdir_test
  SUITE
    libc_unistd_unittests
  SRCS
    chdir_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.chdir
    libc.src.unistd.close
    libc.test.errno_setter_matcher
)

add_libc_unittest(
  dup_test
  SUITE
    libc_unistd_unittests
  SRCS
    dup_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.close
    libc.src.unistd.dup
    libc.src.unistd.read
    libc.src.unistd.unlink
    libc.src.unistd.write
    libc.test.errno_setter_matcher
)

add_libc_unittest(
  dup2_test
  SUITE
    libc_unistd_unittests
  SRCS
    dup2_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.close
    libc.src.unistd.dup2
    libc.src.unistd.read
    libc.src.unistd.unlink
    libc.src.unistd.write
    libc.test.errno_setter_matcher
)

add_libc_unittest(
  dup3_test
  SUITE
    libc_unistd_unittests
  SRCS
    dup3_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.close
    libc.src.unistd.dup3
    libc.src.unistd.read
    libc.src.unistd.unlink
    libc.src.unistd.write
    libc.test.errno_setter_matcher
)

add_libc_unittest(
  fchdir_test
  SUITE
    libc_unistd_unittests
  SRCS
    fchdir_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.fchdir
    libc.src.unistd.close
    libc.test.errno_setter_matcher
)

add_libc_unittest(
  ftruncate_test
  SUITE
    libc_unistd_unittests
  SRCS
    ftruncate_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.close
    libc.src.unistd.read
    libc.src.unistd.ftruncate
    libc.src.unistd.unlink
    libc.src.unistd.write
    libc.src.__support.CPP.string_view
)

add_libc_unittest(
  pread_pwrite_test
  SUITE
    libc_unistd_unittests
  SRCS
    pread_pwrite_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.close
    libc.src.unistd.fsync
    libc.src.unistd.pread
    libc.src.unistd.pwrite
    libc.src.unistd.unlink
    libc.src.unistd.write
    libc.test.errno_setter_matcher
)

add_libc_unittest(
  read_write_test
  SUITE
    libc_unistd_unittests
  SRCS
    read_write_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.close
    libc.src.unistd.fsync
    libc.src.unistd.read
    libc.src.unistd.write
    libc.test.errno_setter_matcher
)

add_libc_unittest(
  link_test
  SUITE
    libc_unistd_unittests
  SRCS
    link_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.close
    libc.src.unistd.link
    libc.src.unistd.unlink
)

add_libc_unittest(
  linkat_test
  SUITE
    libc_unistd_unittests
  SRCS
    linkat_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.close
    libc.src.unistd.linkat
    libc.src.unistd.unlink
)

add_libc_unittest(
  lseek_test
  SUITE
    libc_unistd_unittests
  SRCS
    lseek_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.close
    libc.src.unistd.lseek
    libc.src.unistd.read
    libc.test.errno_setter_matcher
)

add_libc_unittest(
  rmdir_test
  SUITE
    libc_unistd_unittests
  SRCS
    rmdir_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.fcntl
    libc.src.sys.stat.mkdir
    libc.src.unistd.rmdir
)

add_libc_unittest(
  readlink_test
  SUITE
    libc_unistd_unittests
  SRCS
    readlink_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.unistd.readlink
    libc.src.unistd.symlink
    libc.src.unistd.unlink
    libc.src.__support.CPP.string_view
)

add_libc_unittest(
  readlinkat_test
  SUITE
    libc_unistd_unittests
  SRCS
    readlinkat_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.fcntl
    libc.include.unistd
    libc.src.unistd.readlinkat
    libc.src.unistd.symlink
    libc.src.unistd.unlink
    libc.src.__support.CPP.string_view
)

add_libc_unittest(
  symlink_test
  SUITE
    libc_unistd_unittests
  SRCS
    symlink_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.close
    libc.src.unistd.symlink
    libc.src.unistd.unlink
)

add_libc_unittest(
  symlinkat_test
  SUITE
    libc_unistd_unittests
  SRCS
    symlinkat_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.close
    libc.src.unistd.symlinkat
    libc.src.unistd.unlink
)

add_libc_unittest(
  truncate_test
  SUITE
    libc_unistd_unittests
  SRCS
    truncate_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.close
    libc.src.unistd.read
    libc.src.unistd.truncate
    libc.src.unistd.unlink
    libc.src.unistd.write
    libc.src.__support.CPP.string_view
)

add_libc_unittest(
  unlink_test
  SUITE
    libc_unistd_unittests
  SRCS
    unlink_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.unistd.close
    libc.src.unistd.unlink
)

add_libc_unittest(
  unlinkat_test
  SUITE
    libc_unistd_unittests
  SRCS
    unlinkat_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.src.fcntl.open
    libc.src.fcntl.openat
    libc.src.unistd.close
    libc.src.unistd.unlinkat
)

add_libc_unittest(
  getpid_test
  SUITE
    libc_unistd_unittests
  SRCS
    getpid_test.cpp
  DEPENDS
    libc.src.unistd.getpid
)

add_libc_unittest(
  getppid_test
  SUITE
    libc_unistd_unittests
  SRCS
    getppid_test.cpp
  DEPENDS
    libc.src.unistd.getppid
)

add_libc_unittest(
  getuid_test
  SUITE
    libc_unistd_unittests
  SRCS
    getuid_test.cpp
  DEPENDS
    libc.src.unistd.getuid
)

add_libc_unittest(
  isatty_test
  SUITE
    libc_unistd_unittests
  SRCS
    isatty_test.cpp
  DEPENDS
    libc.src.unistd.isatty
    libc.src.fcntl.open
    libc.src.unistd.close
    libc.include.errno
    libc.src.errno.errno
)

add_libc_unittest(
  geteuid_test
  SUITE
    libc_unistd_unittests
  SRCS
    geteuid_test.cpp
  DEPENDS
    libc.src.unistd.geteuid
)

add_libc_unittest(
  syscall_test
  SUITE
    libc_unistd_unittests
  SRCS
    syscall_test.cpp
  DEPENDS
    libc.include.errno
    libc.include.unistd
    libc.include.fcntl
    libc.include.sys_syscall
    libc.src.unistd.__llvm_libc_syscall
    libc.test.errno_setter_matcher
)


add_libc_unittest(
  sysconf_test
  SUITE
    libc_unistd_unittests
  SRCS
    sysconf_test.cpp
  DEPENDS
    libc.include.unistd
    libc.src.unistd.sysconf
)

add_libc_unittest(
  getopt_test
  SUITE
    libc_unistd_unittests
  SRCS
    getopt_test.cpp
  DEPENDS
    libc.src.unistd.getopt
    libc.src.__support.CPP.array
    libc.src.stdio.fopencookie
    libc.src.stdio.fflush
)
