Files
libcxx/test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp
Stephan T. Lavavej b988a6fb41 [libcxx] [test] Change ifstream constructor tests to handle read-only files.
Certain source control systems like to set the read-only bit on their files,
which interferes with opening "test.dat" for both input and output.
Fortunately, we can work around this without losing test coverage.
Now, the ifstream.cons tests have comments referring to the ofstream.cons tests.
There, we're creating writable files (not checked into source control),
where the ifstream constructor tests will succeed.

Fixes D26814.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@289463 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-12 19:50:22 +00:00

59 lines
1.3 KiB
C++

//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <fstream>
// template <class charT, class traits = char_traits<charT> >
// class basic_ofstream
// explicit basic_ofstream(const string& s, ios_base::openmode mode = ios_base::out);
#include <fstream>
#include <cassert>
#include "platform_support.h"
int main()
{
std::string temp = get_temp_file_name();
{
std::ofstream fs(temp);
fs << 3.25;
}
{
std::ifstream fs(temp);
double x = 0;
fs >> x;
assert(x == 3.25);
}
{
std::ifstream fs(temp, std::ios_base::out);
double x = 0;
fs >> x;
assert(x == 3.25);
}
std::remove(temp.c_str());
{
std::wofstream fs(temp);
fs << 3.25;
}
{
std::wifstream fs(temp);
double x = 0;
fs >> x;
assert(x == 3.25);
}
{
std::wifstream fs(temp, std::ios_base::out);
double x = 0;
fs >> x;
assert(x == 3.25);
}
std::remove(temp.c_str());
}