brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 69db0de Raw
35 lines · cpp
1//===-- Unittests for writev ----------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "hdr/types/struct_iovec.h"10#include "src/fcntl/open.h"11#include "src/sys/uio/writev.h"12#include "src/unistd/close.h"13#include "src/unistd/unlink.h"14#include "test/UnitTest/ErrnoSetterMatcher.h"15#include "test/UnitTest/Test.h"16 17using namespace LIBC_NAMESPACE::testing::ErrnoSetterMatcher;18 19TEST(LlvmLibcSysUioWritevTest, SmokeTest) {20  const char *filename = "./LlvmLibcSysUioWritevTest";21  int fd = LIBC_NAMESPACE::open(filename, O_WRONLY | O_CREAT, 0644);22  ASSERT_THAT(fd, returns(GT(0)).with_errno(EQ(0)));23  const char *data = "Hello, World!\n";24  struct iovec iov[2];25  iov[0].iov_base = const_cast<char *>(data);26  iov[0].iov_len = 7;27  iov[1].iov_base = const_cast<char *>(data + 7);28  iov[1].iov_len = 8;29  ASSERT_THAT(LIBC_NAMESPACE::writev(fd, iov, 2),30              returns(EQ(ssize_t(15))).with_errno(EQ(0)));31  ASSERT_THAT(LIBC_NAMESPACE::close(fd), Succeeds());32  ASSERT_THAT(LIBC_NAMESPACE::unlink(filename),33              returns(EQ(ssize_t(0))).with_errno(EQ(0)));34}35