1998a5c88SEric Fiselier //===----------------------------------------------------------------------===// 2998a5c88SEric Fiselier // 357b08b09SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 457b08b09SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 557b08b09SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6998a5c88SEric Fiselier // 7998a5c88SEric Fiselier //===----------------------------------------------------------------------===// 8998a5c88SEric Fiselier 931cbe0f2SLouis Dionne // UNSUPPORTED: c++03, c++11, c++14 10*a7f9895cSLouis Dionne // UNSUPPORTED: no-filesystem 11933518ffSLouis Dionne 12933518ffSLouis Dionne // Filesystem is supported on Apple platforms starting with macosx10.15. 13c360553cSLouis Dionne // UNSUPPORTED: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13|14}} 14998a5c88SEric Fiselier 15998a5c88SEric Fiselier // <fstream> 16998a5c88SEric Fiselier 17998a5c88SEric Fiselier // plate <class charT, class traits = char_traits<charT> > 18998a5c88SEric Fiselier // class basic_fstream 19998a5c88SEric Fiselier 20998a5c88SEric Fiselier // explicit basic_fstream(const filesystem::path& s, 21998a5c88SEric Fiselier // ios_base::openmode mode = ios_base::in|ios_base::out); 22998a5c88SEric Fiselier 23998a5c88SEric Fiselier #include <fstream> 24998a5c88SEric Fiselier #include <filesystem> 25998a5c88SEric Fiselier #include <cassert> 267fc6a556SMarshall Clow #include "test_macros.h" 27998a5c88SEric Fiselier #include "platform_support.h" 28998a5c88SEric Fiselier 29998a5c88SEric Fiselier namespace fs = std::filesystem; 30998a5c88SEric Fiselier main(int,char **)312df59c50SJF Bastienint main(int, char**) { 32998a5c88SEric Fiselier fs::path p = get_temp_file_name(); 33998a5c88SEric Fiselier { 34998a5c88SEric Fiselier std::fstream fs(p, std::ios_base::in | std::ios_base::out | 35998a5c88SEric Fiselier std::ios_base::trunc); 36998a5c88SEric Fiselier double x = 0; 37998a5c88SEric Fiselier fs << 3.25; 38998a5c88SEric Fiselier fs.seekg(0); 39998a5c88SEric Fiselier fs >> x; 40998a5c88SEric Fiselier assert(x == 3.25); 41998a5c88SEric Fiselier } 42f1537708SMartin Storsjö std::remove(p.string().c_str()); 43f4c1258dSLouis Dionne 44f4c1258dSLouis Dionne #ifndef TEST_HAS_NO_WIDE_CHARACTERS 45998a5c88SEric Fiselier { 46998a5c88SEric Fiselier std::wfstream fs(p, std::ios_base::in | std::ios_base::out | 47998a5c88SEric Fiselier std::ios_base::trunc); 48998a5c88SEric Fiselier double x = 0; 49998a5c88SEric Fiselier fs << 3.25; 50998a5c88SEric Fiselier fs.seekg(0); 51998a5c88SEric Fiselier fs >> x; 52998a5c88SEric Fiselier assert(x == 3.25); 53998a5c88SEric Fiselier } 54f1537708SMartin Storsjö std::remove(p.string().c_str()); 55f4c1258dSLouis Dionne #endif 562df59c50SJF Bastien 572df59c50SJF Bastien return 0; 58998a5c88SEric Fiselier } 59