| //===----------------------------------------------------------------------===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| /// | |
| /// \file | |
| /// Unittests for tmpfile. | |
| /// | |
| //===----------------------------------------------------------------------===// | |
| #include "hdr/stdio_macros.h" | |
| #include "src/stdio/fclose.h" | |
| #include "src/stdio/fflush.h" | |
| #include "src/stdio/fread.h" | |
| #include "src/stdio/fseek.h" | |
| #include "src/stdio/ftell.h" | |
| #include "src/stdio/fwrite.h" | |
| #include "src/stdio/tmpfile.h" | |
| #include "test/UnitTest/Test.h" | |
| constexpr char TEST_STR[] = "test\xaa\t\xbb"; | |
| constexpr size_t TEST_STR_SIZE = sizeof(TEST_STR); | |
| TEST(LlvmLibcTmpfileTest, CreationAndInvariants) { | |
| auto *file = LIBC_NAMESPACE::tmpfile(); | |
| ASSERT_NE(file, nullptr); | |
| EXPECT_EQ(LIBC_NAMESPACE::ftell(file), 0L); | |
| size_t nbytes_written = | |
| LIBC_NAMESPACE::fwrite(TEST_STR, 1, TEST_STR_SIZE, file); | |
| EXPECT_EQ(nbytes_written, TEST_STR_SIZE); | |
| EXPECT_EQ(LIBC_NAMESPACE::fflush(file), 0); | |
| EXPECT_EQ(static_cast<size_t>(LIBC_NAMESPACE::ftell(file)), nbytes_written); | |
| EXPECT_EQ(LIBC_NAMESPACE::fseek(file, 0, SEEK_SET), 0); | |
| EXPECT_EQ(LIBC_NAMESPACE::ftell(file), 0L); | |
| char buff[TEST_STR_SIZE * 2]; | |
| size_t nbytes_read = LIBC_NAMESPACE::fread(buff, 1, TEST_STR_SIZE, file); | |
| EXPECT_EQ(nbytes_read, TEST_STR_SIZE); | |
| } |