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
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