member_swap.pass.cpp revision 06d8bf6ce2008526732ae40ad46f7ff031c409e7
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The LLVM Compiler Infrastructure 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is dual licensed under the MIT and the University of Illinois Open 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Source Licenses. See LICENSE.TXT for details. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// <fstream> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// template <class charT, class traits = char_traits<charT> > 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// class basic_fstream 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15// void swap(basic_fstream& rhs); 16 17#include <fstream> 18#include <cassert> 19#include "platform_support.h" 20 21int main() 22{ 23 std::string temp1 = get_temp_file_name(); 24 std::string temp2 = get_temp_file_name(); 25 { 26 std::fstream fs1(temp1.c_str(), std::ios_base::in | std::ios_base::out 27 | std::ios_base::trunc); 28 std::fstream fs2(temp2.c_str(), std::ios_base::in | std::ios_base::out 29 | std::ios_base::trunc); 30 fs1 << 1 << ' ' << 2; 31 fs2 << 2 << ' ' << 1; 32 fs1.seekg(0); 33 fs1.swap(fs2); 34 fs1.seekg(0); 35 int i; 36 fs1 >> i; 37 assert(i == 2); 38 fs1 >> i; 39 assert(i == 1); 40 i = 0; 41 fs2 >> i; 42 assert(i == 1); 43 fs2 >> i; 44 assert(i == 2); 45 } 46 std::remove(temp1.c_str()); 47 std::remove(temp2.c_str()); 48 { 49 std::wfstream fs1(temp1.c_str(), std::ios_base::in | std::ios_base::out 50 | std::ios_base::trunc); 51 std::wfstream fs2(temp2.c_str(), std::ios_base::in | std::ios_base::out 52 | std::ios_base::trunc); 53 fs1 << 1 << ' ' << 2; 54 fs2 << 2 << ' ' << 1; 55 fs1.seekg(0); 56 fs1.swap(fs2); 57 fs1.seekg(0); 58 int i; 59 fs1 >> i; 60 assert(i == 2); 61 fs1 >> i; 62 assert(i == 1); 63 i = 0; 64 fs2 >> i; 65 assert(i == 1); 66 fs2 >> i; 67 assert(i == 2); 68 } 69 std::remove(temp1.c_str()); 70 std::remove(temp2.c_str()); 71} 72