member_swap.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
1//===----------------------------------------------------------------------===//
2//
3// ��������������������The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <fstream>
11
12// template <class charT, class traits = char_traits<charT> >
13// class basic_fstream
14
15// void swap(basic_fstream& rhs);
16
17#include <fstream>
18#include <cassert>
19
20int main()
21{
22    {
23        std::fstream fs1("test1.dat", std::ios_base::in | std::ios_base::out
24                                                        | std::ios_base::trunc);
25        std::fstream fs2("test2.dat", std::ios_base::in | std::ios_base::out
26                                                        | std::ios_base::trunc);
27        fs1 << 1 << ' ' << 2;
28        fs2 << 2 << ' ' << 1;
29        fs1.seekg(0);
30        fs1.swap(fs2);
31        fs1.seekg(0);
32        int i;
33        fs1 >> i;
34        assert(i == 2);
35        fs1 >> i;
36        assert(i == 1);
37        i = 0;
38        fs2 >> i;
39        assert(i == 1);
40        fs2 >> i;
41        assert(i == 2);
42    }
43    std::remove("test1.dat");
44    std::remove("test2.dat");
45    {
46        std::wfstream fs1("test1.dat", std::ios_base::in | std::ios_base::out
47                                                         | std::ios_base::trunc);
48        std::wfstream fs2("test2.dat", std::ios_base::in | std::ios_base::out
49                                                         | std::ios_base::trunc);
50        fs1 << 1 << ' ' << 2;
51        fs2 << 2 << ' ' << 1;
52        fs1.seekg(0);
53        fs1.swap(fs2);
54        fs1.seekg(0);
55        int i;
56        fs1 >> i;
57        assert(i == 2);
58        fs1 >> i;
59        assert(i == 1);
60        i = 0;
61        fs2 >> i;
62        assert(i == 1);
63        fs2 >> i;
64        assert(i == 2);
65    }
66    std::remove("test1.dat");
67    std::remove("test2.dat");
68}
69