1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <fstream>
11
12// template <class charT, class traits = char_traits<charT> >
13// class basic_ofstream
14
15// void open(const string& s, ios_base::openmode mode = ios_base::out);
16
17#include <fstream>
18#include <cassert>
19#include "platform_support.h"
20
21int main()
22{
23    std::string temp = get_temp_file_name();
24    {
25        std::ofstream fs;
26        assert(!fs.is_open());
27        char c = 'a';
28        fs << c;
29        assert(fs.fail());
30        fs.open(temp);
31        assert(fs.is_open());
32        fs << c;
33    }
34    {
35        std::ifstream fs(temp.c_str());
36        char c = 0;
37        fs >> c;
38        assert(c == 'a');
39    }
40    std::remove(temp.c_str());
41    {
42        std::wofstream fs;
43        assert(!fs.is_open());
44        wchar_t c = L'a';
45        fs << c;
46        assert(fs.fail());
47        fs.open(temp);
48        assert(fs.is_open());
49        fs << c;
50    }
51    {
52        std::wifstream fs(temp.c_str());
53        wchar_t c = 0;
54        fs >> c;
55        assert(c == L'a');
56    }
57    std::remove(temp.c_str());
58}
59