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 // template <class charT, class traits>
15 //   bool operator!=(const istreambuf_iterator<charT,traits>& a,
16 //                   const istreambuf_iterator<charT,traits>& b);
17 
18 #include <iterator>
19 #include <sstream>
20 #include <cassert>
21 
22 int main()
23 {
24     {
25         std::istringstream inf1("abc");
26         std::istringstream inf2("def");
27         std::istreambuf_iterator<char> i1(inf1);
28         std::istreambuf_iterator<char> i2(inf2);
29         std::istreambuf_iterator<char> i3;
30         std::istreambuf_iterator<char> i4;
31 
32         assert(!(i1 != i1));
33         assert(!(i1 != i2));
34         assert( (i1 != i3));
35         assert( (i1 != i4));
36 
37         assert(!(i2 != i1));
38         assert(!(i2 != i2));
39         assert( (i2 != i3));
40         assert( (i2 != i4));
41 
42         assert( (i3 != i1));
43         assert( (i3 != i2));
44         assert(!(i3 != i3));
45         assert(!(i3 != i4));
46 
47         assert( (i4 != i1));
48         assert( (i4 != i2));
49         assert(!(i4 != i3));
50         assert(!(i4 != i4));
51     }
52     {
53         std::wistringstream inf1(L"abc");
54         std::wistringstream inf2(L"def");
55         std::istreambuf_iterator<wchar_t> i1(inf1);
56         std::istreambuf_iterator<wchar_t> i2(inf2);
57         std::istreambuf_iterator<wchar_t> i3;
58         std::istreambuf_iterator<wchar_t> i4;
59 
60         assert(!(i1 != i1));
61         assert(!(i1 != i2));
62         assert( (i1 != i3));
63         assert( (i1 != i4));
64 
65         assert(!(i2 != i1));
66         assert(!(i2 != i2));
67         assert( (i2 != i3));
68         assert( (i2 != i4));
69 
70         assert( (i3 != i1));
71         assert( (i3 != i2));
72         assert(!(i3 != i3));
73         assert(!(i3 != i4));
74 
75         assert( (i4 != i1));
76         assert( (i4 != i2));
77         assert(!(i4 != i3));
78         assert(!(i4 != i4));
79     }
80 }
81