44 lines · cpp
1//===-- Unittests for readv -----------------------------------------------===//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/readv.h"12#include "src/unistd/close.h"13#include "src/unistd/unlink.h"14#include "src/unistd/write.h"15#include "test/UnitTest/ErrnoSetterMatcher.h"16#include "test/UnitTest/Test.h"17 18using namespace LIBC_NAMESPACE::testing::ErrnoSetterMatcher;19 20TEST(LlvmLibcSysUioReadvTest, SmokeTest) {21 const char *filename = "./LlvmLibcSysUioReadvTest";22 int fd = LIBC_NAMESPACE::open(filename, O_WRONLY | O_CREAT, 0644);23 ASSERT_THAT(fd, returns(GT(0)).with_errno(EQ(0)));24 const char data[] = "Hello, World!\n";25 ASSERT_THAT(LIBC_NAMESPACE::write(fd, data, sizeof(data)),26 returns(EQ(sizeof(data))).with_errno(EQ(0)));27 ASSERT_THAT(LIBC_NAMESPACE::close(fd), Succeeds());28 29 fd = LIBC_NAMESPACE::open(filename, O_RDONLY);30 ASSERT_THAT(fd, returns(GT(0)).with_errno(EQ(0)));31 char buf0[2];32 char buf1[3];33 struct iovec iov[2];34 iov[0].iov_base = buf0;35 iov[0].iov_len = 1;36 iov[1].iov_base = buf1;37 iov[1].iov_len = 2;38 ASSERT_THAT(LIBC_NAMESPACE::readv(fd, iov, 2),39 returns(EQ(ssize_t(3))).with_errno(EQ(0)));40 ASSERT_THAT(LIBC_NAMESPACE::close(fd), Succeeds());41 ASSERT_THAT(LIBC_NAMESPACE::unlink(filename),42 returns(EQ(ssize_t(0))).with_errno(EQ(0)));43}44