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         std::istreambuf_iterator<char> i5(nullptr);
30 
31         assert( i1.equal(i1));
32         assert( i1.equal(i2));
33         assert(!i1.equal(i3));
34         assert(!i1.equal(i4));
35         assert(!i1.equal(i5));
36 
37         assert( i2.equal(i1));
38         assert( i2.equal(i2));
39         assert(!i2.equal(i3));
40         assert(!i2.equal(i4));
41         assert(!i2.equal(i5));
42 
43         assert(!i3.equal(i1));
44         assert(!i3.equal(i2));
45         assert( i3.equal(i3));
46         assert( i3.equal(i4));
47         assert( i3.equal(i5));
48 
49         assert(!i4.equal(i1));
50         assert(!i4.equal(i2));
51         assert( i4.equal(i3));
52         assert( i4.equal(i4));
53         assert( i4.equal(i5));
54 
55         assert(!i5.equal(i1));
56         assert(!i5.equal(i2));
57         assert( i5.equal(i3));
58         assert( i5.equal(i4));
59         assert( i5.equal(i5));
60     }
61     {
62         std::wistringstream inf1(L"abc");
63         std::wistringstream inf2(L"def");
64         std::istreambuf_iterator<wchar_t> i1(inf1);
65         std::istreambuf_iterator<wchar_t> i2(inf2);
66         std::istreambuf_iterator<wchar_t> i3;
67         std::istreambuf_iterator<wchar_t> i4;
68         std::istreambuf_iterator<wchar_t> i5(nullptr);
69 
70         assert( i1.equal(i1));
71         assert( i1.equal(i2));
72         assert(!i1.equal(i3));
73         assert(!i1.equal(i4));
74         assert(!i1.equal(i5));
75 
76         assert( i2.equal(i1));
77         assert( i2.equal(i2));
78         assert(!i2.equal(i3));
79         assert(!i2.equal(i4));
80         assert(!i2.equal(i5));
81 
82         assert(!i3.equal(i1));
83         assert(!i3.equal(i2));
84         assert( i3.equal(i3));
85         assert( i3.equal(i4));
86         assert( i3.equal(i5));
87 
88         assert(!i4.equal(i1));
89         assert(!i4.equal(i2));
90         assert( i4.equal(i3));
91         assert( i4.equal(i4));
92         assert( i4.equal(i5));
93 
94         assert(!i5.equal(i1));
95         assert(!i5.equal(i2));
96         assert( i5.equal(i3));
97         assert( i5.equal(i4));
98         assert( i5.equal(i5));
99     }
100 }
101