1 //===----------------------------------------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 // <iterator>
11 
12 // istreambuf_iterator
13 
14 // bool equal(istreambuf_iterator<charT,traits>& b) const;
15 
16 #include <iterator>
17 #include <sstream>
18 #include <cassert>
19 
main()20 int main()
21 {
22     {
23         std::istringstream inf1("abc");
24         std::istringstream inf2("def");
25         std::istreambuf_iterator<char> i1(inf1);
26         std::istreambuf_iterator<char> i2(inf2);
27         std::istreambuf_iterator<char> i3;
28         std::istreambuf_iterator<char> i4;
29 
30         assert( i1.equal(i1));
31         assert( i1.equal(i2));
32         assert(!i1.equal(i3));
33         assert(!i1.equal(i4));
34 
35         assert( i2.equal(i1));
36         assert( i2.equal(i2));
37         assert(!i2.equal(i3));
38         assert(!i2.equal(i4));
39 
40         assert(!i3.equal(i1));
41         assert(!i3.equal(i2));
42         assert( i3.equal(i3));
43         assert( i3.equal(i4));
44 
45         assert(!i4.equal(i1));
46         assert(!i4.equal(i2));
47         assert( i4.equal(i3));
48         assert( i4.equal(i4));
49     }
50     {
51         std::wistringstream inf1(L"abc");
52         std::wistringstream inf2(L"def");
53         std::istreambuf_iterator<wchar_t> i1(inf1);
54         std::istreambuf_iterator<wchar_t> i2(inf2);
55         std::istreambuf_iterator<wchar_t> i3;
56         std::istreambuf_iterator<wchar_t> i4;
57 
58         assert( i1.equal(i1));
59         assert( i1.equal(i2));
60         assert(!i1.equal(i3));
61         assert(!i1.equal(i4));
62 
63         assert( i2.equal(i1));
64         assert( i2.equal(i2));
65         assert(!i2.equal(i3));
66         assert(!i2.equal(i4));
67 
68         assert(!i3.equal(i1));
69         assert(!i3.equal(i2));
70         assert( i3.equal(i3));
71         assert( i3.equal(i4));
72 
73         assert(!i4.equal(i1));
74         assert(!i4.equal(i2));
75         assert( i4.equal(i3));
76         assert( i4.equal(i4));
77     }
78 }
79