1//===- raw_pwrite_stream_test.cpp - raw_pwrite_stream tests ---------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "gtest/gtest.h"
11#include "llvm/ADT/SmallString.h"
12#include "llvm/Support/FileSystem.h"
13#include "llvm/Support/raw_ostream.h"
14
15using namespace llvm;
16
17namespace {
18
19TEST(raw_pwrite_ostreamTest, TestSVector) {
20  SmallVector<char, 0> Buffer;
21  raw_svector_ostream OS(Buffer);
22  OS << "abcd";
23  StringRef Test = "test";
24  OS.pwrite(Test.data(), Test.size(), 0);
25  EXPECT_EQ(Test, OS.str());
26
27#ifdef GTEST_HAS_DEATH_TEST
28#ifndef NDEBUG
29  EXPECT_DEATH(OS.pwrite("12345", 5, 0),
30               "We don't support extending the stream");
31#endif
32#endif
33}
34
35TEST(raw_pwrite_ostreamTest, TestFD) {
36  SmallString<64> Path;
37  int FD;
38  sys::fs::createTemporaryFile("foo", "bar", FD, Path);
39  raw_fd_ostream OS(FD, true);
40  OS << "abcd";
41  StringRef Test = "test";
42  OS.pwrite(Test.data(), Test.size(), 0);
43  OS.pwrite(Test.data(), Test.size(), 0);
44
45#ifdef GTEST_HAS_DEATH_TEST
46#ifndef NDEBUG
47  EXPECT_DEATH(OS.pwrite("12345", 5, 0),
48               "We don't support extending the stream");
49#endif
50#endif
51}
52
53#ifdef LLVM_ON_UNIX
54TEST(raw_pwrite_ostreamTest, TestDevNull) {
55  int FD;
56  sys::fs::openFileForWrite("/dev/null", FD, sys::fs::F_None);
57  raw_fd_ostream OS(FD, true);
58  OS << "abcd";
59  StringRef Test = "test";
60  OS.pwrite(Test.data(), Test.size(), 0);
61  OS.pwrite(Test.data(), Test.size(), 0);
62}
63#endif
64}
65