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}} 14933518ffSLouis Dionne 157efbd851SLouis Dionne // FILE_DEPENDENCIES: test.dat 16998a5c88SEric Fiselier 17998a5c88SEric Fiselier // <fstream> 18998a5c88SEric Fiselier 19998a5c88SEric Fiselier // template <class charT, class traits = char_traits<charT> > 20998a5c88SEric Fiselier // class basic_ifstream 21998a5c88SEric Fiselier 22998a5c88SEric Fiselier // void open(const filesystem::path& s, ios_base::openmode mode = ios_base::in); 23998a5c88SEric Fiselier 24998a5c88SEric Fiselier #include <fstream> 25998a5c88SEric Fiselier #include <filesystem> 26998a5c88SEric Fiselier #include <cassert> 27998a5c88SEric Fiselier 287fc6a556SMarshall Clow #include "test_macros.h" 297fc6a556SMarshall Clow main(int,char **)302df59c50SJF Bastienint main(int, char**) { 31998a5c88SEric Fiselier { 32998a5c88SEric Fiselier std::ifstream fs; 33998a5c88SEric Fiselier assert(!fs.is_open()); 34998a5c88SEric Fiselier char c = 'a'; 35998a5c88SEric Fiselier fs >> c; 36998a5c88SEric Fiselier assert(fs.fail()); 37998a5c88SEric Fiselier assert(c == 'a'); 38998a5c88SEric Fiselier fs.open(std::filesystem::path("test.dat")); 39998a5c88SEric Fiselier assert(fs.is_open()); 40998a5c88SEric Fiselier fs >> c; 41998a5c88SEric Fiselier assert(c == 'r'); 42998a5c88SEric Fiselier } 43f4c1258dSLouis Dionne #ifndef TEST_HAS_NO_WIDE_CHARACTERS 44998a5c88SEric Fiselier { 45998a5c88SEric Fiselier std::wifstream fs; 46998a5c88SEric Fiselier assert(!fs.is_open()); 47998a5c88SEric Fiselier wchar_t c = L'a'; 48998a5c88SEric Fiselier fs >> c; 49998a5c88SEric Fiselier assert(fs.fail()); 50998a5c88SEric Fiselier assert(c == L'a'); 51998a5c88SEric Fiselier fs.open(std::filesystem::path("test.dat")); 52998a5c88SEric Fiselier assert(fs.is_open()); 53998a5c88SEric Fiselier fs >> c; 54998a5c88SEric Fiselier assert(c == L'r'); 55998a5c88SEric Fiselier } 56f4c1258dSLouis Dionne #endif 572df59c50SJF Bastien 582df59c50SJF Bastien return 0; 59998a5c88SEric Fiselier } 60