brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 95a04bd Raw
78 lines · cpp
1//===----------------------------------------------------------------------===//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// <fstream>10 11// template <class charT, class traits = char_traits<charT> >12// class basic_fstream13 14// basic_fstream(basic_fstream&& rhs);15 16#include <fstream>17#include <cassert>18 19#include "test_macros.h"20#include "platform_support.h"21#include "operator_hijacker.h"22 23int main(int, char**)24{25    std::string temp = get_temp_file_name();26    {27        std::fstream fso(temp, std::ios_base::in | std::ios_base::out28                                                 | std::ios_base::trunc);29        std::fstream fs = std::move(fso);30        double x = 0;31        fs << 3.25;32        fs.seekg(0);33        fs >> x;34        assert(x == 3.25);35    }36    std::remove(temp.c_str());37 38    {39      std::basic_fstream<char, operator_hijacker_char_traits<char> > fso(40          temp, std::ios_base::in | std::ios_base::out | std::ios_base::trunc);41      std::basic_fstream<char, operator_hijacker_char_traits<char> > fs = std::move(fso);42      std::basic_string<char, operator_hijacker_char_traits<char> > x;43      fs << "3.25";44      fs.seekg(0);45      fs >> x;46      assert(x == "3.25");47    }48    std::remove(temp.c_str());49 50#ifndef TEST_HAS_NO_WIDE_CHARACTERS51    {52        std::wfstream fso(temp, std::ios_base::in | std::ios_base::out53                                                  | std::ios_base::trunc);54        std::wfstream fs = std::move(fso);55        double x = 0;56        fs << 3.25;57        fs.seekg(0);58        fs >> x;59        assert(x == 3.25);60    }61    std::remove(temp.c_str());62 63    {64      std::basic_fstream<wchar_t, operator_hijacker_char_traits<wchar_t> > fso(65          temp, std::ios_base::in | std::ios_base::out | std::ios_base::trunc);66      std::basic_fstream<wchar_t, operator_hijacker_char_traits<wchar_t> > fs = std::move(fso);67      std::basic_string<wchar_t, operator_hijacker_char_traits<wchar_t> > x;68      fs << L"3.25";69      fs.seekg(0);70      fs >> x;71      assert(x == L"3.25");72    }73    std::remove(temp.c_str());74#endif75 76  return 0;77}78