brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 00d834d Raw
68 lines · cpp
1//===- llvm/unittest/Support/raw_fd_stream_test.cpp - raw_fd_stream tests -===//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 "llvm/ADT/SmallString.h"10#include "llvm/Config/llvm-config.h"11#include "llvm/Support/Casting.h"12#include "llvm/Support/FileSystem.h"13#include "llvm/Support/FileUtilities.h"14#include "llvm/Support/raw_ostream.h"15#include "gtest/gtest.h"16 17using namespace llvm;18 19namespace {20 21TEST(raw_fd_streamTest, ReadAfterWrite) {22  SmallString<64> Path;23  int FD;24  ASSERT_FALSE(sys::fs::createTemporaryFile("foo", "bar", FD, Path));25  FileRemover Cleanup(Path);26  std::error_code EC;27  raw_fd_stream OS(Path, EC);28  EXPECT_TRUE(!EC);29 30  char Bytes[8];31 32  OS.write("01234567", 8);33 34  OS.seek(3);35  EXPECT_EQ(OS.read(Bytes, 2), 2);36  EXPECT_EQ(Bytes[0], '3');37  EXPECT_EQ(Bytes[1], '4');38 39  OS.seek(4);40  OS.write("xyz", 3);41 42  OS.seek(0);43  EXPECT_EQ(OS.read(Bytes, 8), 8);44  EXPECT_EQ(Bytes[0], '0');45  EXPECT_EQ(Bytes[1], '1');46  EXPECT_EQ(Bytes[2], '2');47  EXPECT_EQ(Bytes[3], '3');48  EXPECT_EQ(Bytes[4], 'x');49  EXPECT_EQ(Bytes[5], 'y');50  EXPECT_EQ(Bytes[6], 'z');51  EXPECT_EQ(Bytes[7], '7');52}53 54TEST(raw_fd_streamTest, DynCast) {55  {56    std::error_code EC;57    raw_fd_stream OS("-", EC);58    EXPECT_TRUE(dyn_cast<raw_fd_stream>(&OS));59  }60  {61    std::error_code EC;62    raw_fd_ostream OS("-", EC);63    EXPECT_FALSE(dyn_cast<raw_fd_stream>(&OS));64  }65}66 67} // namespace68