mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-24 20:29:39 +08:00
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
59 lines
1.4 KiB
C++
59 lines
1.4 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 char* 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.c_str());
|
|
fs << 3.25;
|
|
}
|
|
{
|
|
std::ifstream fs(temp.c_str());
|
|
double x = 0;
|
|
fs >> x;
|
|
assert(x == 3.25);
|
|
}
|
|
{
|
|
std::ifstream fs(temp.c_str(), std::ios_base::out);
|
|
double x = 0;
|
|
fs >> x;
|
|
assert(x == 3.25);
|
|
}
|
|
std::remove(temp.c_str());
|
|
{
|
|
std::wofstream fs(temp.c_str());
|
|
fs << 3.25;
|
|
}
|
|
{
|
|
std::wifstream fs(temp.c_str());
|
|
double x = 0;
|
|
fs >> x;
|
|
assert(x == 3.25);
|
|
}
|
|
{
|
|
std::wifstream fs(temp.c_str(), std::ios_base::out);
|
|
double x = 0;
|
|
fs >> x;
|
|
assert(x == 3.25);
|
|
}
|
|
std::remove(temp.c_str());
|
|
}
|