equal.pass.cpp revision 8be2c5dd9e444138acc3463f8b13a1ecb207d9ca
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
20int 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